The shape of your data is a user-experience decision. Probably the most important one you'll make, and it sounds like an engineering detail, which is exactly why PMs skip it.
Where the bugs came from
The rewards tool I built replaced a spreadsheet where the scorecard lived in free-typed cells. Eight parameters per nominee. Some were ratings from 1 to 10. Some were a simple yes or no.
You can guess what happened over the years. "Yes" typed into a rating column. "8" typed into a yes/no field. Casing everywhere. CORE, Core, core, all "different" to a spreadsheet, all the same team to a human.
Every one of those is a data bug. But sit with where they come from. The spreadsheet let you type anything, anywhere. A blank cell is a blank page, and a blank page invites a mess. The freedom was the bug.
Model the mistake out of existence
So in the app I made the scorecard a typed object. Ratings can only be numbers from 1 to 10. Yes or no can only be a toggle. The name resolves to one real team, not a word somebody spelled four ways.
None of that is glamorous. There's no screen to demo. But it quietly deleted a whole family of errors before a single user touched the thing. Not "we'll add validation later." The mistake became impossible to make.
The team-name bug mattered more than it looked. Four spellings of the same team meant four rows on a leaderboard that was supposed to have one, which meant a report leadership half-trusted before anyone had even noticed why. Fixing the data model fixed a report nobody had gotten around to complaining about yet.
Let me say it the way I wish someone had told me earlier: the best UX work is often invisible, because it's the mistake the user can no longer make.
Two ways out of a bad experience
You can write better error messages to rescue people from a bad design. Or you can shape the data so the error never exists. One of those scales. The other is a game of whack-a-mole you signed up for forever.
So where in your product are you writing error messages, when you should be reshaping the data underneath?