When Matthew Berman dropped a video showing Jev running a live decision lab across fifty AI citizens, I was watching it thinking this is exactly what I want to build. A town. You broadcast a message. Fifty people decide whether to investigate, join, warn their neighbors, or stay home.
I wanted to add two things I hadn’t seen: stakes on each option, and trust erosion. If the broadcaster lies four times, nobody shows up for the fifth announcement. That was the idea.
Before I wrote the server or the UI, I ran premise tests. Two Python scripts against the actual API to check whether the model could hold what I was asking it to hold.
Traits held. Curiosity drove investigating by 32 to 52 percentage points. Sociability drove joining by 46 to 73. Both replicated on a held-out roster with a different seed. Clean.
Trust-as-static-trait didn’t replicate. A citizen’s trust level baked into their personality description produced inconsistent results across seeds. The held-out roster told a different story than the original.
That failure was a design error I needed to correct before building anything.
The revised model treats trust as a record. Each citizen keeps a count per broadcaster: how many messages heard, how many turned out true, how many false. No personality dial, just accumulated history.
It works the way I wanted. At zero lies, join rate sits around 88%. One lie drops it to 38%. Two lies brings it to 18%. Four lies and 98 to 100% of citizens ignore the next announcement. The erosion is gradual, then total.
The tests also caught the phrasing. “May or may not be true” in the announcement framing was pushing investigate rates to 94%. Removed. One phrase, invisible unless you check.
The UI came after all of that. The server handles one broadcast at a time, one Jev request with fifty Choice questions, fifty decisions, 0.28 to 0.5 seconds. The map animates. Each citizen shows where they ended up and what they trust now.
Curiosity is a stable feature of a character. Trust is a ledger of what’s actually happened. Building the second one as if it were the first would have given me a town where lying works fine so long as your starting stats are high enough.
The premise tests caught that before any of it shipped.