CivicSim: Synthetic Personas for Inclusive Policy Testing
The Problem
Policy decisions shape the lives of millions, yet the processes used to anticipate their impact are often too slow, too expensive, or too narrow to capture the full diversity of communities affected. Public consultations are limited by who shows up. Economic models aggregate away the details that matter most. And by the time real-world feedback arrives, the policy has already been implemented.
At the same time, AI systems are increasingly capable of reasoning about human perspectives - but without grounding in real demographic data, they risk reproducing stereotypes rather than reflecting the actual distribution of lived experiences across a population.
The result is a gap: policymakers lack fast, affordable, and demographically honest tools for understanding how a proposed law might land across different communities before it takes effect.
Our Goal
Our team set out to build CivicSim: a civic technology prototype that lets policymakers, researchers, and advocates simulate public opinion across synthetic but statistically grounded populations — in seconds, not months. Our goal was to make demographic diversity a first-class input to the policy design process, not an afterthought.
Approach
Our approach combined social science, data engineering, and applied AI to build a system grounded in real evidence:
Literature review and domain scoping to understand how public opinion research, survey methodology, and synthetic population modeling intersect and where existing tools fall short for early-stage policy analysis.
Data pipeline development drawing on two real-world sources: U.S. Census Bureau microdata (ACS PUMS) for demographic realism, and Pew Research Center's American Trends Panel (ATP) for empirically observed opinion distributions across demographic groups.
Agent sampling using Hamilton's method to guarantee proportional demographic representation even when simulating small populations - ensuring minority groups are never accidentally dropped from the simulation.
LLM-grounded opinion generation where each synthetic agent's stance and reasoning is produced by a language model conditioned on their demographic profile and historically observed survey priors for their group, anchoring AI outputs in real polling data rather than model assumptions.
Iterative user testing with the simulate interface to validate that the system surfaces meaningful and interpretable demographic patterns, not just plausible-sounding text.
Empirical validation against held-out Pew ATP survey responses, measuring how closely CivicSim's simulated distributions match real-world ground truth across demographic slices.
Our Solution
CivicSim is a web application that lets users select a U.S. geographic region, choose a policy domain - such as minimum wage, immigration, or healthcare - and pose a question in plain language. Within seconds, the system returns a real-time distribution of stances with per-agent rationales, broken down by race, age, income, and other demographic dimensions.
Each simulated "citizen" is not a real person, but a statistically grounded synthetic agent whose demographics are drawn from census data and whose opinions are anchored to Pew survey priors for their demographic group. The result is a tool that surfaces not just aggregate support or opposition, but where and why opinion diverges, giving decision-makers a richer picture of who stands to be affected and how.
CivicSim achieved an average Total Variation Distance of 0.101 (Naive GPT-4o-mini: 0.188, Claude Haiku 4.5: 0.311) and Wasserstein distance of 0.058 (Naive GPT-4o-mini: 0.201, Claude Haiku 4.5: 0.215) against held-out Pew ATP data - validating that its simulated distributions reflect real patterns in public opinion rather than model hallucination.
Try it live at civicsim.xyz
