Skip to content

Hallicopter/PopulationScale

Repository files navigation

Disclaimer / Epigraph
The prose below was hammered out by a Large Language Model, but every concept, side-eye, and bad-heuristic quip is straight from Advait Raykar's. Any wisdom is mine; any hallucination is the model’s.

Population-Scale Persona & Survey Toolkit

A three-script pipeline for fabricating whole focus-groups out of thin air, grilling them with questions, and ogling the data in a browser—faster (and cheaper) than scheduling a single real Zoom.


Table of Contents

  1. Why does this exist?
  2. Feature Fly-over
  3. Folder Anatomy
  4. Quick-Start
  5. Drive-Through Usage
  6. Sample Results & What They Whisper
  7. Meet the Personas (Manhattan Girlies 2)
  8. Contributing
  9. License

1 · Why does this exist?

Because interviewing 10 000 real humans is expensive, messy, and occasionally illegal.
So we let an LLM spin up synthetic humans—Personas-as-a-Service. Point the gizmo at a demographic slice (“20–28, female, Manhattan, well-to-do”) and a research prompt (“Will you watch this Twitch-style tech show?”). Out pops structured opinion data you can chart before your latte cools.

Contrarian Paradox™
LLM personas are brilliant at spitting out averages; they’re allergic to genuine, fat-tail weirdness. Great for N = 100 sentiment charts, terrible if you’re scouting the next Tyler Cowen hot-take.


2 · Feature Fly-over

Script Elevator pitch
01_generate_personas.py Mints personas with names, bios, Big-Five scores, mood sliders, value stacks—even a “candor” dial.
02_run_survey.py Feeds each persona your question. Options: self-consistency rerolls, reflection (“think step-by-step, dear NPC”).
03_visualize.py Legacy CLI heat-map for terminal nostalgics.
app.py Flask UI—click an opinions file, browse results, feel like Nate Silver.

3 · Folder Anatomy

population_scale/
├── 01_generate_personas.py   # Persona foundry
├── 02_run_survey.py          # Survey engine
├── 03_visualize.py           # Old-school ASCII view (optional)
├── app.py                    # Flask front-end
├── templates/                # Jinja2 HTML
│   ├── index.html
│   └── view_opinions.html
├── requirements.txt
├── .env                      # Put OPENAI_API_KEY here
└── opinions_*.json           # Autogenerated, git-ignored

4 · Quick-Start

git clone https://github.com/Hallicopter/PopulationScale.git
cd PopulationScale
python3 -m venv venv && source venv/bin/activate      # Windows?  venv\Scripts\activate
pip install -r requirements.txt
echo "OPENAI_API_KEY='sk-example123'" > .env

5 · Drive-Through Usage

Task Command-line incantation
Forge personas python 01_generate_personas.py -d "20-28 female manhattan college educated" -n 13 -g "manhattan girlies 2"
Run a survey python 02_run_survey.py personas_manhattan_girlies_2.json -q "Will you watch our tech-banter podcast?" -sc 3 --reflect
See the mosaic python app.py → open http://127.0.0.1:5001

6 · Sample Results & What They Whisper

Interest Snapshot (13 synthetic respondents)

Disposition # Share
Would watch TBPN 2 15.4 %
Would not watch 10 76.9 %
Undecided / “Maybe” 1 7.7 %

What the focus-group murmured

They’re in because… They’re out because…
“Fast-paced, irreverent sports-talk vibe.” “Chaotic / hype-over-substance.”
“Unfiltered founder + VC war stories.” “Tech chatter is oversaturated.”
“Courtside energy—no corporate fluff.” “Prefer deeper, slower analysis.”

Cheer squad archetype

  • Startup operators who mainline Twitter Spaces.
  • Viewers preferring banter-first, CNBC-meets-Twitch energy.
  • Folks chasing founder lore unavailable in mainstream press.

7 · Meet the Personas (Manhattan Girlies 2)

Below is the synthetic cast that produced the numbers. Remember: each persona is a median-of-a-median—useful for trend-hunting, not memoir-writing.

ID Name Age Vibe & Mini-bio Mood today
b6a1f7 Jasmine Lee 25 Marketing strategist, foodie, yoga evangelist. “Excited for weekend brunch.”
c7e3d8 Elena Rodriguez 27 Tech entrepreneur, art lover, skateboarder. “Energized by a new project.”
d8c4f2 Sarah Wu 23 Data analyst, bookworm, Met-strolling traveler. “Calm after a long week.”
e1f7c8 Aaliyah Khan 26 Social-work activist, podcaster, rally speaker. “Motivated to make change.”
f2g7h3 Nina Patel 24 Graphic designer, coffee-hop blogger. “Bursting with creative energy.”
g4h5j6 Olivia Johnson 22 Biz-major, startup incubator newbie, food-truck hunter. “Overwhelmed but determined.”
h1k9l2 Crystal Zhao 28 Fashion consultant & vintage-shop queen. “Thriving in the fashion scene.”
i9o2p7 Taylor Scott 26 PR exec, nightlife evangelist, sports fan. “Buzzed from last night’s event.”
j3q8r4 Rachel Adams 24 Non-profit manager, environmentalist, animal-ally. “Focused on making a difference.”
k5s1t7 Sophia Chen 22 Financial analyst, board-game guru, film buff. “Crunching numbers with a clear head.”
l7u3v9 Isabella Torres 27 Fitness founder, wellness coach, runner. “Inspired to help others.”
m8w5x1 Chloe Lewis 25 Interior designer, aesthetics devotee, brunch fan. “Delighted by a new project.”
n9y6z5 Zoe Martinez 23 Journalism grad, sustainability writer. “Inspired by new story ideas.”
Click for the raw JSON (spoiler: emojis included)
{  "group_name": "manhattan girlies 2", "demographic": "20-28, female, living in manhattan, college educated, diverse, well to do", "personas": [ /* full blob omitted for brevity */ ] }

8 · Contributing

PRs welcome—especially if you can teach the personas to break into song mid-survey.


9 · License

MIT, because the world already has enough NDAs.


Happy persona-wrangling. May your synthetic humans be insightful, or at least amusing.

About

Can LLMs ever replace the wisdom of the crowds?

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published