Project Prelude · internal explainer

Listening to a public at scale

How we turn tens of thousands of Persian-language voices about media propaganda into structured, honest insight — and then go back and listen deeper.

A walkthrough of the full process: what each stage is for, what goes in, what comes out, and which tool does the work.

Navigate with → / ← arrow keys or click the dots below.

Context 1/3

What is "sensemaking"?

When thousands of people talk about an issue, nobody can read it all. The usual shortcuts — polls, hashtag counts, viral posts — either flatten opinion into multiple-choice, or amplify whoever shouts loudest.

Sensemaking is a middle path: use AI to read everything, organize it into themes and distinct opinions, keep people's actual words attached as evidence, and present it so a human can explore what a whole community thinks — including the quiet, thoughtful voices.

The research community calls the collection side of this "broadlistening" — the opposite of broadcasting: one institution listening to many people, instead of speaking to them. The term comes out of the Plurality movement around Audrey Tang (Taiwan's former digital minister) and Glen Weyl.

Context 2/3

Whose tools are we standing on?

Google Jigsaw — sensemaking-tools

Jigsaw (Google's societal-challenges unit) open-sourced the pipeline it used to digest 1M+ opinions from Bowling Green, Kentucky. Our analysis engine — adapted by us to run on Claude models.

AI Objectives Institute — Talk to the City

The lineage most analysis tools trace back to; their WhatsApp "elicitation bot" is one of the interviewers we evaluated.

Team Mirai — みらい議会 (mirai-gikai)

Engineer Takahiro Anno ran for Tokyo governor in 2024 with an AI avatar that listened to voters around the clock, then founded the party Team Mirai. Their platform runs AI depth interviews — adaptive follow-up questions, a structured report per person. Our listening engine, translated fully into Persian.

Showra — ours

Our own implementation of Polis, the open-source agree/disagree deliberation format proven in Taiwan's vTaiwan and Jigsaw's Bowling Green project. Already built out — this is our voting engine for validating findings with real participants beyond Twitter.

Context 3/3

Project Prelude: the issue at hand

Prelude studies media propaganda targeting Iranians — how audiences talk about the influence of outlets like Iran International, Manoto, BBC Persian, state TV (صداوسیما), and social-media influencers, across 2016–2026 including the war period.

28,619
Farsi statements collected & labeled
6
analytical dimensions per statement
~$24
total collection + labeling cost
10 yrs
of discourse covered

The az-democracy hashtag study (#از_دموکراسی_بگو, 4,180 tweets) was our prototype: we ran it through every stage first, end to end, so Prelude runs on a proven path.

The big picture

Two ways of listening, one analysis machine

1a · Harvest 1b · Interview→ merge → 2 · Organize 3 · Report 4 · Test agreement Validate (Showra)

Collection has two channels. First we harvest what people already say publicly — broad, cheap, and it maps the terrain. That map is what makes good interviews possible: the themes it reveals become the questions our AI interviewer asks in depth. Both sources merge into one dataset.

That merged dataset feeds the analysis machine: organize it into themes, opinions and quotes → publish an explorable report → test which concrete statements could command broad agreement → validate with real votes. Any stage can send us back to collect more.

Stage 1a · Collect: harvest prelude pipeline (ours)

Harvesting the discourse

Purpose
Gather what people already say publicly, at scale, without prompting them.
Input
Keyword & phrase queries in Farsi (outlet names, propaganda terms, media-criticism phrases).
Tools
prelude/collect.py against the twitterapi.io service (X/Twitter data); categorize.py (Claude Haiku) labels each tweet's role and dimensions; export.py packages the dataset.
Output
A clean CSV — one row per statement: participant_id, survey_text — plus per-dimension slices and keyword lists (bilingual README included).

Every statement gets tagged with which of six questions it speaks to: the mechanisms of propaganda, disputed facts, its impact, the discourse around outlets, who is affected, and proposed solutions. Those six dimensions echo through every later stage — starting with the second collection channel, where they become the interviewer's question plan.

Stage 1b · Collect: interview Team Mirai: mirai-gikai (in Persian)

An AI interviewer that listens in Farsi

Purpose
Harvesting is broad but shallow — one post per person, skewed toward complaint. The second channel invites people into a real ~15-minute conversation with adaptive follow-ups, to capture reasons, lived experience, and the things people don't volunteer on social media (like solutions).
Input
An interview plan prepared from the harvest: the six Prelude dimensions became six questions, each with follow-up guidance, and the interviewer is "briefed" with background knowledge on the topic — read the full interview guide (bilingual, with every question and probing path).
Tool
Team Mirai's interview platform, which we fully localized: Persian interviewer persona, right-to-left Persian interface (585 translated strings), running on Claude. Safety is built into the prompt: no pressing for identity or location, any question can be skipped, anonymity by default.
Output
Per-person transcripts and structured reports (summary, stance, background, key opinions with verbatim quotes) — exported into the same format as the harvest and merged with it into one dataset that feeds everything downstream.
نمونهٔ واقعی از مصاحبهٔ آزمایشی — مشارکت‌کننده گفت در فضای مخالفان هم منتقدان «مزدور» خطاب می‌شوند؛ مصاحبه‌گر پرسید: «به نظر شما ریشهٔ این رفتار کجاست؟»
Stage 2 · Organize Jigsaw: categorization_runner

From 28k posts to a map of opinion

Purpose
Discover what themes exist and what distinct positions people take — with receipts.
Input
The merged collection CSV (harvest + interview statements) + a short "context file" telling the AI who's speaking and what the study is about (this framing file matters more than any setting).
Tool
Jigsaw's topic-discovery stage, running on Claude. It reads every statement, builds a topic taxonomy, writes distinct opinions under each topic, and extracts verbatim quotes as evidence for each opinion. It even grades its own extraction quality.
Output
A structured CSV: topic → opinion → quote → who said it.

Prototype benchmark: 4,180 tweets became 30 topics, 226 opinions, and 9,132 quote-to-opinion links. Rule of thumb: read the topic list before trusting anything downstream.

Stage 2½ · Score Jigsaw: get_bridging_scores

Finding the constructive voices

Purpose
Not all quotes are equal. This stage scores each one for constructive quality — does it give reasons, acknowledge other views, invite dialogue?
Input
The organized topic/opinion/quote table.
Tool
A cheap, fast model (Claude Haiku) scoring tens of thousands of quotes.
Output
The same table plus a quality score per quote.

This is what lets the final report surface thoughtful contributions instead of the loudest or most repeated ones — the quiet middle of a discourse becomes visible.

Stage 3 · Report Jigsaw: report generator + report UI

An explorable, bilingual report

Purpose
Make the whole discourse browsable by a human — themes, summaries, and real quotes side by side.
Input
Scored quotes + AI-written topic summaries.
Tool
Jigsaw's web report builder, which we extended with right-to-left layout, a Farsi translation layer, and an English/فارسی switcher.
Output
A static website — shareable as a link, no servers to maintain.

Prototype example (az-democracy): az-democracy-report.pages.dev — English at /, Farsi at /index-fa. Prelude gets the same treatment once its analysis run completes.

Stage 4 · Test agreement Jigsaw: propositions + simulated jury

From "what people said" to "what they'd endorse"

Purpose
Turn the opinion map into concrete, votable statements and predict which could command broad agreement.
Input
The opinion map from stage 2.
Tool
Jigsaw's deliberative track: it distills opinions into short "propositions", then runs a simulated jury — the AI role-plays real participants (each persona built from that person's own posts) voting Agree/Disagree — and aggregates the votes with real election math, including a proportional method so minority viewpoints stay represented.
Output
Ranked statement slates per topic, with simulated approval rates.
The honest caveat we always attach: these are AI predictions of votes, not votes. We treat the output as a draft questionnaire for a real poll — which is exactly what the next stage does with Showra — never as "X% of people agree." The rankings and gaps carry the signal, not the percentages.
Stage 4½ · Validate with real people Showra — our Polis implementation

From simulated votes to real ones

The simulated jury is our preliminary analysis — fast and nearly free, it tells us which propositions are even worth putting in front of people. The real test happens on Showra, our own implementation of Polis.

The model
Polis is the open-source deliberation format proven in Taiwan's vTaiwan process and Jigsaw's Bowling Green project: participants see one statement at a time, vote Agree / Disagree / Pass, and can contribute statements of their own. Clustering reveals opinion groups and — most valuably — the statements that bridge them. Showra brings that format to our community, already built and ready to use.
Input
The top-ranked propositions from the simulated jury become Showra's seed statements.
Output
Real votes from a self-selected but much wider community — anyone with the link can participate, not just the Twitter users whose posts we harvested.

So the division of labor is: simulated jury to shortlist cheaply, Showra to measure for real. Where the two disagree, that gap itself is a finding — it usually means the harvested discourse doesn't represent the wider community.

Proof it works

The az-democracy dry run

Before pointing this at Prelude, we ran the analysis path — harvest through simulated jury (stages 1a → 4) — on the smaller hashtag study:

4,180
tweets in → 30 topics, 226 opinions, 9,132 quotes
2
languages, one report, live on the web with a switcher
751
propositions distilled, then ranked by a simulated jury
7,360
jury ballots cast by 40 AI personas of real participants

See the results yourself: the explorable report — az-democracy-report.pages.dev (فارسی) — and the propositions + jury-simulation analysis — /propositions (فارسی).

Every stage ran on Claude (the toolkits were built for other providers — the adaptations are ours and reusable), and the interviewer has hosted real Persian test sessions. Not yet exercised: Showra validation and interview-fed re-analysis — Prelude will be the first project to run the full process.

Limitations

What this process can't tell us

Where we are · what's next

Prelude status

Questions → Hadjar. This deck: docs/prelude-sensemaking-deck.html in the sensemaking workspace.