

For depth in world-building I use a rule I call “Y-cubed”. (I got it from somewhere else but can’t recall the source anymore.)
For every detail you make, you ask the question “Why” three times.
So a village the characters have reached stop all work every 77 days for a festival. Why? It celebrates an ascended local hero who saved the village from a magical blight. Why 77 days? It took 77 days for effort for the blight to be defeated. … And so on.
This is a rapid way to both build depth in your setting quickly, as well as inspire possible mysteries and intrigue for investigation later.
A slight modification works also for giving NPCs depth.
Read George Polti’s The 36 Dramatic Situations. It’s a list of plot elements that have a snappy title, a list of participants in the plot element, a brief discussion of how it works, and then (unfortunately dated) references to dramas that used them.
Using this when building a world, or a campaign, or a local setting, lets you quickly set up a bunch of conflicts (ideally with interlaced participants so that single NPCs (or PCs) can be in different roles in different dramatic situations. Then you just let the events flow logically, and as the dramatic situations get resolved you get a plot. PCs can interfere with these dramatic situations and thus have an impact on resulting plots even if the overall setting is far larger than they are.