My general rule is, if I have a dict with a fixed set of keys, it should be a dataclass. Problem solved!

Then if I need to send or receive it, it's an easy conversion to a Pydantic BaseModel.

Can dataclasses be serialized just as easily?

Yes, there are many tools for converting dataclasses to dict, json or something else, mashumaro (https://github.com/Fatal1ty/mashumaro) is one of them.