Generative-agent simulation of the electorate · research preview

Know how your voters will react — before you spend a dollar reaching them.

Jefferson simulates your electorate as a living population of decision-making agents, precinct by precinct. Ask it anything a poll would tell you — by segment, on demand, validated against real results — for a fraction of the cost of a single wave. Then, on the roadmap: watch reactions spread through real social fabric before you spend.

jefferson $ simulate --precinct FL-115-042 --message draft_03.txt --horizon 14d
01 · The problem with polls

A poll is a photograph. An electorate is weather.

A commissioned poll costs $20,000–$60,000, takes weeks to field, and tells you what a sample of people said at one moment — not why they said it, and not what they'll say after your message has moved through their households, group chats, and church parking lots. Most smaller campaigns can afford one or two photographs per cycle. Then they fly blind.

Traditional poll

  • COST / READ$20k–$60k per wave
  • LATENCY2–4 weeks from question to crosstab
  • OUTPUTA snapshot: toplines and crosstabs at time t
  • MECHANISMNone — correlation, no decision process
  • ITERATIONOne shot. Refielding costs the same again

Jefferson simulation

  • COST / READPennies per simulated wave, after setup
  • LATENCYHours — run overnight, read at breakfast
  • OUTPUTInstant segmented snapshot — reaction trajectories on the roadmap
  • MECHANISMInspectable: every agent's decision has a trace
  • ITERATIONUnlimited. Test ten drafts before lunch
02 · The decision engine

We don't predict opinions. We model the deciding.

Each simulated voter is a generative agent with memory, reflection, and planning — the architecture behind research showing AI agents can replicate real individuals' survey responses with 85% of the accuracy of those same people repeating their own answers two weeks later. When your message reaches an agent, it doesn't look up a probability. It remembers, weighs, and decides — and the trace of that decision is yours to read.

LAYER 1 / POPULATION

A synthetic precinct

Census, voter-file aggregates, and survey priors are fused into a statistically faithful population — every agent representative, no real person's data inside.

agents: 2,847
turnout_hist: matched
party_reg:   matched
issue_priors: calibrated
LAYER 2 / DECISION

Memory → reflection → choice

Agents store what they've seen, form stances, and respond to stimuli through retrieval over their own history — attention, persuasion, conversation intent, turnout intent.

recall(msg, k=12)
reflect() → stance Δ
decide() → {attend,
  persuade, share, vote}
LAYER 3 / DIFFUSION · ROADMAP

Decisions that travel

Agents talk. Households, neighbors, weak ties — reactions propagate along a generated social graph, so you see the cascade, not just the first impression.

graph: household+geo+homophily
cascade depth: 3.2
peak reach: day 9
SOCIAL DIFFUSION · MESSAGE draft_03 · DAY 1 → DAY 14

Live toy render: one seeded message diffusing through a simulated precinct graph. In production runs, every lit node is an agent whose decision trace you can open.

03 · Grounded in the real world

Simulate continuously. Poll sparsely. Calibrate forever.

Jefferson isn't a substitute for ever touching reality — it's a way to spend your contact budget where it matters. Compliant peer-to-peer text micro-polls provide sparse ground truth; precinct-level election returns provide backtests. Every calibration wave makes the simulation sharper, and every claim we show you links to the evaluation run that produced it.

The loop is the product: simulate, verify, recalibrate — a simulation that earns its predictions.

04 · Who it's for

Built for the campaigns polling left behind.

State house races. School board slates. Municipal measures. Primary challengers. The 99% of American campaigns that will never commission a tracking poll can now test messages, target persuadable segments, and forecast reaction — with the same class of tooling national campaigns pay seven figures to approximate.