Inspiration
I wanted to build a platform where different views and interests, across people, countries, and issues, could be surfaced side by side using AI. AI bridges this gap by a large margin. A single LLM call asked to "analyze this policy" tends to produce a balanced-sounding memo that never actually gets pushed on, never has to defend a position against a real objection. I wanted to see what happens when you force an AI system to argue with itself on different policies and with different personalities: give opposing agents a stake in the outcome, make them rebut each other, and let a panel be genuinely persuadable.
What it does
Deliberata is a UN-style AI deliberation chamber. You bring a real SDG policy motion, we ship three:** a Global South data-center network, a plastics-export treaty, and an AI-tutoring rollout, and 14 Qwen agents argue it out across 8 visible stages**: A neutral UN Technical Secretariat (3 agents) fact-checks the motion and tags every provision to the UN Sustainable Development Goal it touches. Two rival blocs, the Global Progress Alliance (FOR) and the Sovereign Priorities Coalition (AGAINST) , each fields a Head of Delegation plus legal, economic, and social advisers, and drafts opposing proposals. The blocs rebut each other directly, and a Head of Delegation can concede or soften a position mid-round if the rebuttal actually lands. A three-ambassador Council, each championing a distinct value lens (social, economic, legal), gives opening statements, deliberates, and votes. An ambassador can change their vote after being persuaded by a colleague, and names who persuaded them. The outcome is computed in code (majority, or a 3-way split resolves to adopt with amendments), and a Rapporteur writes the official Session Resolution. Every stage streams live over SSE, every agent call and highlight are visible, and the two "hero" behaviors, a bloc's position changing, an ambassador's vote changing, are badged in the UI in real time, not just narrated after the fact.
How we built it
Backend: FastAPI + a hand-rolled async orchestrator (asyncio.gather per stage) running on Alibaba Cloud ECS in Singapore. All 14 agents call Alibaba Cloud Model Studio (Qwen) through its OpenAI-compatible endpoint, tiered by how much a role's decision actually matters: qwen3.6-flash for the 9 advisers doing cheap parallel drafting, qwen3.7-plus for the Heads of Delegation and Rapporteur doing synthesis, and qwen3.7-max for the 3 Council ambassadors, since persuasion quality there is what decides the outcome. Every agent output is validated against a strict pydantic schema; a bad JSON response gets one retry, then a graceful fallback, so one flaky call never crashes a run.
Frontend: Next.js on Vercel, 5 session pages that reveal stage-by-stage from a server-side cache (so page navigation never re-calls the LLM), live vote tracker, animated change badges, and one-click PDF export per stage. A server-side rewrite proxies API calls to the Alibaba backend so the browser only ever talks to Vercel over HTTPS.
Eval harness: we didn't want to just claim the multi-agent system is better — we measured it. eval/baseline.py asks a single qwen3.7-max call to write the same policy memo; eval/run_society.py runs the full 14-agent deliberation; eval/judge.py has qwen3.7-max at temperature 0 score both, blind, on 5 dimensions across all 3 demo topics.
What we're proud of
The eval numbers are honest, not cherry-picked, and they show a real, explainable tradeoff rather than a clean sweep. Averaged across all 3 topics (0–10 scale): the society beats the single-call baseline on counter-argument depth (8.7 vs 6.3) and transparency of reasoning (10.0 vs 7.3), exactly the two dimensions a deliberation process should win on, and edges it on evidence grounding. The baseline wins on actionability, because it's one essay optimized to end in a clean recommendation list, while the society's final output is a terse, UN-resolution-style verdict. That's a genre difference we can point to, not a system that just performs worse. We're also proud that the "hero" behaviors, a bloc conceding ground, an ambassador switching sides, aren't scripted narrative. They're fields (position_change, vote_changed) the model itself sets when it decides its own argument no longer holds, logged as a real event the frontend reacts to.
What's next
Persistent sessions (motions that span multiple real-world days, not one run), letting users define their own institutions instead of picking from three demo topics, and a public leaderboard of resolutions voted on by real users to compare against the AI Council's verdict.
To check the proof of Alibaba backend, here's proof: link
Built With
- alibaba
- asyncio
- cloud
- css
- ecs
- fastapi
- framer
- model
- motion
- next.js
- pydantic
- python
- qwen
- qwen3.7-max)
- qwen3.7-plus
- react
- server-sent
- studio
- tailwind
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.