I highly agree with @HarrisPS’s point regarding blank state PCs with the narrative and NPC responses reacting accordingly.
For me, I think the optimal way to design a PC is to have their “core” experiences and background already laid out by the narrative. Stuff like where they grew, who their parents/guardians are, a defining experience, etc. Those things are starting points, but they give room for the players to react the way they want.
For example, in Bastard of Camelot, all PCs start out the same: raised by Morgana and seemingly abandoned by Arthur. Yet the author deliberately gave the players choices on how their PC navigated those relationships. You can be resentful of Arthur or want to meet him, in later chapters, you can even be estranged from your mom, and all these choices have impact on the narrative in the form of flavor texts that in some instances, changes the vibe of scenes entirely.
Another example from the same game (sorry I love BoC lol), you can choose how you feel about your half-brother, if you antagonise him, he will hate you back and it dramatically changes whole scenes! But still, the core premise remains: you’re both children of noble descent so even if you two hate each other, the narrative stays tight since that background reasonably restricts you.
So yeah, something like that. Give PCs a solid background but give the players a lot of leeway regarding personality choices, and most importantly, let those choices shape the narrative and NPC interactions.
Flavor text is the most harmless and effective way to do this, it feels rewarding to the players when their choices are seemingly valued by the narrative, even though in the grand scheme of things, those choices don’t really matter. But just making it feel like those choices matter is what’s truly important.