What a spectacularly long and thorough list of items none of which want anything. The closest it got was some sort of evil wizard boss who wanted power. At several places in the description it filled in a bit more about how he wanted power, and control, and was seemingly a bad guy… and wanted power!
Why?
World building with GPT is clearly A Thing. Looks to me like it's nearly as good as real-human world building. Maybe better. It's quicker, more granular, and has infinite patience for every little item in a massive city with billions of fully realized inhabitants, if 'realized' means 'what do they have in their pockets, what adjectives fit them, etc'.
What do any of them want? How does their story play out?
It doesn't. You built a world instead of a story. Congrats. It's a classic trap to fall into.
In a more story-oriented approach you find the story and the main characters and then if you are smart you'll build the world around them. But secretly! If you make it obvious then it will feel manufactured, that fate is guiding the protagonist, not the protagonist's free will. Which is true: the author is fate and the protagonist has no free will.
Another option is to find the story amid the world. In an open world game you hope the player finds their own stories.
From a more technical point of view, I don't think you want the normal building/character generation to the main antagonists, the villain, or the hero. GPT can't hold itself back, and now every other building will have some character like this. Like if there's a big prison break from Arkham and the villains don't even work together (rendering many characters as one) but instead Gotham is filled with an apocalyptic danger on every street corner. If this tool was to have villain creation it should probably be a top-level thing: you make N villains and place them, they don't emerge organically in the fabric of the city.
All that said, perhaps a quick fix would be to change the current prompt from:
{
name: "FirstName LastName",
type: $building.jobTypes|first|repr, // Or $building.jobTypes|rest|repr
description: "[a description of the person, their profession or role, their personality, their history]",
arrives: "8am",
leaves: "6pm",
}
To something like: {
name: "FirstName LastName",
...
goal: "[a driving desire]",
flaw: "[a character flaw or weakness]",
}
This is another place where defining the schema as part of the city design could be helpful, as it might let you highlight what interests you about the people in your world.But inside of that consistent world, you now can have many stories. Pick out one of those detailed NPCs and explore their life and if you done the world right, then this can be an epic story.
> Neighborhoods are called "neighborhood"