CONSENSUS — Multi-Agent Policy Deliberation Engine
AI-powered policy deliberation that cuts through partisan noise — five expert agents debate so citizens can decide.
Inspiration
On January 19, 2025, the U.S. federal government shut down after Congress failed to reach consensus on a spending bill. Staffing shortages at the FAA — a direct result of the shutdown — contributed to the conditions that led to the crash of Air Canada Flight 2259. A policy disagreement in Washington had, through a chain of institutional neglect, cost lives.
That tragedy crystallized something for us: political gridlock is not abstract. Citizens are forced to rely on partisan media, think-tank spin, and social media noise to form opinions about policies that will directly affect their lives. There is no tool that subjects a policy proposal to rigorous multi-perspective analysis and produces an honest, transparent map of where experts agree, disagree, and what the evidence actually says.
CONSENSUS exists to fill that gap.
What It Does
CONSENSUS is an AI-powered deliberation engine that takes any policy proposal and subjects it to structured, multi-round analysis from five distinct expert perspectives:
| Agent | Analytical Focus |
|---|---|
| Fiscal Conservative | Federal budgeting, tax burden, deficit/debt impact |
| Progressive Policy | Income inequality, social mobility, fiscal multipliers |
| Macroeconomic Analyst | GDP projections, inflation, labor markets |
| Public Welfare | Cost of living, housing security, demographic disparities |
| Constitutional/Legal | Constitutional authority, SCOTUS precedent, jurisdiction |
These agents independently analyze the proposal, then confront each other's evidence across multiple rounds of structured debate. A sixth Moderator agent synthesizes the results into a transparent consensus report with an evidence-ranked recommendation.
The key: every claim is tagged and traceable, agents are forced to concede points to prevent ideological entrenchment, and disagreements are clearly labeled as factual disputes vs. framing differences. It maps the decision space — it doesn't tell you what to think.
How We Built It
The frontend is built with Next.js 15 (App Router), React 19, and TypeScript, styled with Tailwind CSS 4.0. The deliberation engine is powered by Anthropic's Claude API.
The backend orchestrates a structured 4-round protocol:
- Assumption Framing — Agents declare assumptions; conflicts are programmatically detected.
- Independent Analysis — Each agent provides evidence-tagged positions without seeing others' work.
- Discrepancy Detection & Conflict Resolution — Two-stage detection (programmatic + LLM) surfaces contradictions; agents must confront and concede.
- Consensus Synthesis — The Moderator produces a final report using an 8-tier evidence hierarchy weighted by source quality, not volume.
Results stream to the client via NDJSON over HTTP, and custom claim extraction and comparison systems programmatically detect numerical divergences, source conflicts, and causal contradictions across agents.
Challenges
Coordinating five AI agents with distinct analytical lenses while staying within API rate limits was the core engineering challenge. We batched what would be 15+ sequential API calls down to 5 per round, implemented exponential backoff retry logic (60s/75s/90s), and ensured the deliberation degrades gracefully if verification gets rate-limited.
What We Learned
Structured multi-agent deliberation produces dramatically better policy analysis than any single prompt. Forcing agents to confront contradictions and concede points creates emergent nuance that no individual perspective captures alone.
What's Next
Expanding the agent roster, adding real-time data source verification, and building a public-facing version so any citizen can analyze the policies that affect their lives.
Built for the people policies are made for. Not lobbyists. Not pundits. People.
Tech Stack: Next.js 15 · React 19 · TypeScript · Tailwind CSS 4.0 · Anthropic Claude API
Built With
- anthropic
- claude
- css
- next.js
- react
- tailwind
- typescript
Log in or sign up for Devpost to join the conversation.