A population world model on one machine. 6,245 real personas mined from 1.6 million tweets, wired into their real @-mention graph, and simulated on a single node in under 300 MB of RAM.
► Live interactive explainer: https://popsim.micahstubbs.ai
Built in one evening at Postlabor.dev: Building Economic World Models (Simulation Build Night, August 2026) by Micah Stubbs, Yvonne Chen, and Jake Schwartz.
The event's two anchor papers — Light Society (one billion agents) and MatrAIx (8.3 billion personas) — both stand on human-grounded persona data and tiered compute. This project reproduces the load-bearing elements of both at laptop scale, on the public Sentiment140 corpus, with every number computed from the real data:
| Direction | Pattern from | Result |
|---|---|---|
| Persona mining — 6,245 users with ≥20 tweets become persona cards (disposition, verbosity, cadence, vocabulary) | MatrAIx | 6,245 human-grounded personas |
| Mixture-of-models scale ladder — full LLM for 927 heavy users, surrogates for 5,318, statistics for 653,530 | Light Society | 702.7× cheaper than all-LLM |
| Diffusion validated against ground truth — DeGroot mixing on the real 31,515-edge mention graph vs. simple persistence | Light Society's validation method | Negative result: diffusion r = 0.54 loses to persistence r = 0.73 — disposition beats diffusion |
| Bilateral dyads — real reciprocal mention pairs as two-agent conversation seeds | mindmeld.now | 3,324 reciprocal pairs |
| Behavioral-adherence benchmark — held-out sentiment adherence with a fixed protocol | MatrAIx's headline metric | 63.1% zero-parameter floor on 42,998 held-out tweets |
| Relationship strength + parasocial structure — full-graph pair model with observability-honest reciprocity | (extension) | 12.1% of all mention attention flows to broadcast/parasocial accounts |
We define a fixed behavioral-adherence evaluation for persona agents on Sentiment140:
Section 06 of the live site has a copy-paste prompt that points any agentic LLM at this repo to run an autonomous research loop against the protocol. If you get anywhere near the bar, open a PR.
git clone https://github.com/micahstubbs/pop-world-model-sim && cd pop-world-model-sim
python3 -m venv .venv && .venv/bin/pip install pandas numpy pyarrow
# data (git-ignored): Sentiment140 original distribution, ~81 MB zip
curl -L -o data.zip http://cs.stanford.edu/people/alecmgo/trainingandtestdata.zip
mkdir -p data && cd data && unzip ../data.zip && cd ..
.venv/bin/python scripts/sentiment140_stats.py # corpus + cohort statistics
.venv/bin/python scripts/build_demo_artifacts.py # all five directions -> site/data/*.json
.venv/bin/python scripts/relationship_analysis.py # relationship strength + parasocial classes
Every figure on the site is generated by these scripts — no hand-entered numbers.
scripts/ analysis pipeline (stats, demo artifacts, relationship model)
site/ the explainer site (single index.html, D3 v7, no build step)
site/data/ computed JSON artifacts the site renders
docs/reports/ research reports (dataset selection, stats, parasocial analysis)
docs/decisions/ decision records (why Sentiment140)
docs/session-summaries/ build log
The deployed copy of site/ lives in micahstubbs/popsim and serves via Cloudflare Pages at popsim.micahstubbs.ai.
jonasbrothers drew 1,901 distinct fans in 48 days). Parasocial edges are one-directional, so this tier costs almost nothing to simulate.Sentiment140 (Go, Bhayani & Huang, 2009) is the standard academic sentiment corpus: 1.6M public tweets, Apr–Jun 2009, distant-labeled. Everything shown is real, public, 17-year-old text — except surrogate samples explicitly labeled synthetic. Parasociality is only claimed where a target's silence is observed (they author tweets in the sample) — never where it's censored by the 1% sample.
Python
57.6%
HTML
39.7%
JavaScript
2.7%
A population world model on one machine. 6,245 real personas mined from 1.6 million tweets, wired into their real @-mention graph, and simulated on a single node in under 300 MB of RAM.
► Live interactive explainer: https://popsim.micahstubbs.ai
Built in one evening at Postlabor.dev: Building Economic World Models (Simulation Build Night, August 2026) by Micah Stubbs, Yvonne Chen, and Jake Schwartz.
The event's two anchor papers — Light Society (one billion agents) and MatrAIx (8.3 billion personas) — both stand on human-grounded persona data and tiered compute. This project reproduces the load-bearing elements of both at laptop scale, on the public Sentiment140 corpus, with every number computed from the real data:
| Direction | Pattern from | Result |
|---|---|---|
| Persona mining — 6,245 users with ≥20 tweets become persona cards (disposition, verbosity, cadence, vocabulary) | MatrAIx | 6,245 human-grounded personas |
| Mixture-of-models scale ladder — full LLM for 927 heavy users, surrogates for 5,318, statistics for 653,530 | Light Society | 702.7× cheaper than all-LLM |
| Diffusion validated against ground truth — DeGroot mixing on the real 31,515-edge mention graph vs. simple persistence | Light Society's validation method | Negative result: diffusion r = 0.54 loses to persistence r = 0.73 — disposition beats diffusion |
| Bilateral dyads — real reciprocal mention pairs as two-agent conversation seeds | mindmeld.now | 3,324 reciprocal pairs |
| Behavioral-adherence benchmark — held-out sentiment adherence with a fixed protocol | MatrAIx's headline metric | 63.1% zero-parameter floor on 42,998 held-out tweets |
| Relationship strength + parasocial structure — full-graph pair model with observability-honest reciprocity | (extension) | 12.1% of all mention attention flows to broadcast/parasocial accounts |
We define a fixed behavioral-adherence evaluation for persona agents on Sentiment140:
Section 06 of the live site has a copy-paste prompt that points any agentic LLM at this repo to run an autonomous research loop against the protocol. If you get anywhere near the bar, open a PR.
git clone https://github.com/micahstubbs/pop-world-model-sim && cd pop-world-model-sim
python3 -m venv .venv && .venv/bin/pip install pandas numpy pyarrow
# data (git-ignored): Sentiment140 original distribution, ~81 MB zip
curl -L -o data.zip http://cs.stanford.edu/people/alecmgo/trainingandtestdata.zip
mkdir -p data && cd data && unzip ../data.zip && cd ..
.venv/bin/python scripts/sentiment140_stats.py # corpus + cohort statistics
.venv/bin/python scripts/build_demo_artifacts.py # all five directions -> site/data/*.json
.venv/bin/python scripts/relationship_analysis.py # relationship strength + parasocial classes
Every figure on the site is generated by these scripts — no hand-entered numbers.
scripts/ analysis pipeline (stats, demo artifacts, relationship model)
site/ the explainer site (single index.html, D3 v7, no build step)
site/data/ computed JSON artifacts the site renders
docs/reports/ research reports (dataset selection, stats, parasocial analysis)
docs/decisions/ decision records (why Sentiment140)
docs/session-summaries/ build log
The deployed copy of site/ lives in micahstubbs/popsim and serves via Cloudflare Pages at popsim.micahstubbs.ai.
jonasbrothers drew 1,901 distinct fans in 48 days). Parasocial edges are one-directional, so this tier costs almost nothing to simulate.Sentiment140 (Go, Bhayani & Huang, 2009) is the standard academic sentiment corpus: 1.6M public tweets, Apr–Jun 2009, distant-labeled. Everything shown is real, public, 17-year-old text — except surrogate samples explicitly labeled synthetic. Parasociality is only claimed where a target's silence is observed (they author tweets in the sample) — never where it's censored by the 1% sample.
Python
57.6%
HTML
39.7%
JavaScript
2.7%