The Elicitation Bot
A multimodal WhatsApp agent for democratic deliberation at scale. I built it end-to-end, solo, at the AI Objectives Institute, and kept it reliable through months of live national-scale sessions.
What it is
The Elicitation Bot is an open-source, LLM-based tool the AI Objectives Institute built to strengthen democratic deliberation. Citizen assemblies and public consultations surface valuable input but are expensive and hard to scale; the bot delivers that same reflective dialogue directly over WhatsApp (a platform billions already use), reaching communities with limited connectivity or digital literacy who are usually left out. It is the front-end companion to AOI's flagship platform, Talk to the City, which aggregates and analyzes the responses at scale.
What I built
I built it end-to-end as the sole engineer: a full-stack, multimodal WhatsApp agent (Twilio + GPT-4o + Whisper) that guides each participant through the bot's three phases (active listening, view-broadening, and reflection), drawing out personal stories and the reasoning behind their views, in their own language. It transcribes multilingual voice and text responses and feeds them into Talk to the City for analysis. I also contributed cloud engineering to Talk to the City itself.
How it works
The system ran as two loops sharing one store: a real-time, multilingual WhatsApp conversation, and a batch pipeline that turns each finished session into structured data for Talk to the City. Hover, tap, or tab through any component to see what it does and the tech behind it.
Hover, tap, or tab through any component for what it does and the tech behind it.
Production considerations
The diagram is the overarching framework. These are the concerns handled beneath it.
AWS Lambda runs the session-end exports; a deliberate cold-start vs. provisioned-concurrency tradeoff for when many sessions end at once.
Retries and fallbacks when Whisper, the LLM, or Twilio fail; idempotency on Twilio webhook retries so a message is never processed twice.
Async by design - the webhook acknowledges immediately and the reply is sent as a separate Twilio call, so model latency never blocks the request.
Per-participant session keyed in Firestore for safe concurrency; phone numbers as identity handled with care; authenticated fetch for Twilio media.
Making it reliable at scale
The hard part was keeping it up under real load. Across four months of weekly live sessions it ran at 10-20K messages/day at peak. Onboarding thousands of new users at once hit Twilio's per-number cap of 1,000 new users/day (a day-one launch blocker), so I sharded onboarding across five Twilio numbers to clear it. Then I lifted delivery success from 96% to 98% by fixing Heroku rate-limit and cold-start failures and sizing horizontal and vertical scaling to the app's actual CPU and memory profile. This is the transferable part: shipping and operating a high-volume, multilingual, voice-and-text agent that stayed reliable in production.
Where it ran
The bot was deployed in multiple languages across universities and international conferences, including:
- Search for Common Ground - the world's largest peacebuilding organization, piloted in 2024 across 12 conferences in the UK, US, and Taiwan, then Burundi and Niger, in French, Kirundi, Swahili, and English.
- Taiwan AI College Alliance (TAICA) - ~5,000 students across 55 universities in Taiwan reflecting on course material and ethics after each class, over four months.
- Notre Dame's Kroc Institute - a peacebuilding workshop on deliberative tools in polarized contexts, sponsored by the Toda Peace Institute.
- Edge Esmeralda AI Conference - 50-75 leaders in AI, governance, and health, captured in real time.
All of it fed Talk to the City, AOI's flagship platform - adopted by Taiwan's Ministry of Digital Affairs for national consultations - which I also contributed cloud engineering to.
Why it mattered
Most digital-democracy tools reach the people who are already online and comfortable with them. Running deliberation over WhatsApp, in each participant's own language, brought reflective public dialogue to underrepresented, low-connectivity communities - and gave policymakers and peace mediators clean, structured input to act on without losing the nuance of individual voices.