Civic issues, solved at city scale.
A photo. Seven specialized AI agents. A MILP solver. A public chain. One Bengaluru pothole goes from "reported" to "verified-fixed" without a helpline, without a 6-step app — and the citizen watches the system work, live, in their own language.
The system measures activity, not outcomes.
Citizens have learned to distrust the apps that exist. Crews close tickets without fixing them. NagarikAI rebuilds the loop with verification at the citizen end and CLIP+CNN audit at the crew end.
Every monsoon a tree branch comes down on our lane. Last June it blocked the road for two days — BBMP took 36 hours to even acknowledge the call.
They re-tarred the road in March and the same potholes were back in two months. There's no way to flag 'this fix didn't last' on the existing apps — you just file a fresh complaint.
The streetlight on our side has been out for three weeks. I logged it on BBMP Sahaaya, the BESCOM helpline, and on Twitter. No reply on any of them. I don't even know which one I'm supposed to use.
BBMP has half a dozen apps and a helpline. Citizens don't know which one to use.
Crews mark tickets resolved with a photo of a different street. No one audits.
Crews drive 23% more km than they need to. Ambulances overturn in potholes that have been reported for weeks.
The LLM proposes. The gate decides. The citizen sees every step.
Snap a photo or video → Gemini classifies it · Claude routes it · OR-Tools schedules it · CLIP + CNN verify the fix.
Every LLM output passes through deterministic guardrails. Hallucinations and prompt injections fail closed to the canonical SOP.
Citizen sees every status change in real time (in EN / हि / ಕ). XP rewards verified contributions.
8 issue types · 7 departments · 1 deterministic gate
Vision (Gemini 2.5 Flash) classifies your photo or short videointo one of these 8 categories. The Triage agent's SOP table routes each to the right BBMP / BWSSB / BESCOM department with a default SLA. The deterministic gate verifies the LLM's choice — any mismatch falls back to the canonical mapping below. See 7/7 video-classification probe on /references →
High-severity (≥ 4) reports auto-halve the SLA at runtime. e.g. a sev-4 pothole becomes 36h instead of 72h. See /architecture for the gate's full decision tree.
Earn XP for every verified contribution
Reporting civic issues is a public good. NagarikAI rewards citizens who show up consistently — every submitted report, every neighbour-verification, every crew-verified fix bumps your XP. Hit a tier and a soulbound NFT badge lands in your wallet (Polygon Amoy testnet — non-transferable, real proof of contribution).
Snap + submit a civic issue. Awarded the moment the report passes the BBMP gate.
Confirm a nearby citizen's report from your area. 3 confirmations promote it to VERIFIED.
When the ResolutionAgent's CLIP + CNN audit clears the crew's after-photo, the original reporter gets +10.
Badge tiers — climb the ladder
Each badge is a soulbound NFT (ERC-721, non-transferable)First milestone — you've actively engaged with civic issues
You confirm others' reports too — earning community trust
Sustained presence — your ward notices when you flag something
Top-tier civic contributor — featured on the public leaderboard
Reserved for the most active citizens — a soulbound NFT on Polygon
Demo account starts at 125 XP — log in and you're already past your first milestone. See the live leaderboard on /impact.
7 specialized agents · under 10 seconds end-to-end
Gemini classifies photo or video
PostGIS radius · CLIP · Vertex AI text embeddings
LLM routes, gate verifies
Citizens confirm
MILP picks the crew + slot
CLIP + CNN audit the fix
Predict tomorrow's hotspots
Citizens report. Crews fix. AI keeps both honest.
NagarikAI isn't a parallel BBMP. It's the front door for citizens and the inbox for departments — wired together so neither side can ghost the other.
| Dimension | For Nagariks (citizens) | For Crew & Supervisor (BBMP/BWSSB/BESCOM) |
|---|---|---|
| Who reports here | Anyone in BBMP wards — phone is enough | Dept supervisors + crew leads (seeded for 7 depts) |
| Where they sign in | /login (citizen JWT) | /dept-login (dept JWT, role = supervisor | crew_lead) |
| What they do | Snap a photo or video + share location | Acknowledge ticket → dispatch crew → upload after-photo |
| What they see | Live tracking + agent timeline + status updates in EN/HI/KN | SLA-sorted queue, dispatch log, supervisor stats, today's MILP stops |
| Trust mechanism | Verifier badge (home location at signup) + community confirms | JWT role-gated routes + CLIP+CNN audits the closure photo |
| Reward | +5 XP submit · +5 verify · +10 fix verified · badges + soulbound NFT | Supervisor KPI: today's acked / resolved / SLA on-time % |
| What closes the loop | Notification: "BBMP Roads acknowledged · crew on-site · resolved" | Citizen sees status change in real time; +10 XP fires when CNN audit passes |
From snap to resolved — every step is acked or escalated
apps/api/nagarik/jobs/sla_watcher.py ticks every 60s. Every escalation writes a citizen notification — citizens always know exactly where their ticket is.
NagarikAI pings the citizen at every step
Drop your number into the green opt-in on /report and the same 7-agent loop that triages your ticket also DMs you on WhatsApp the moment each stage finishes. No app to install. No refresh button. The phone buzzes.
- AI classifies your photo or video
- Forwarded to the right department
- Confirmed by your neighbours
- Crew on-site (MILP-optimised route)
- Resolved · after-photo verified · +10 XP
Four upgrades that take NagarikAI from working app to civic platform
Every feature below runs in the live build today — not on a slide. The 7-agent loop, the MILP solver, and the closed-loop CLIP verifier are still the spine; these four upgrades graft new tissue onto each end of it.
A low-severity issue (overflowing garbage, faded crosswalk, dark lane) that breaches its Level 3 SLA with no municipal action automatically unlocks a Community Fix module on the citizen's tracking page.
- Citizens pledge small amounts (₹100/500/1,000) or volunteer hours.
- Threshold: 5 volunteer-hours OR ₹1,500.
- Threshold met → platform generates a DIY workplan (tools, safety, meet-up).
Gemini 2.5 Flash now classifies and estimates physical dimensions + required materials. Supervisors get a budgeted line item before the truck even leaves the depot.
Unit-price table is held in the Vision Agent's prompt — easy for a BBMP procurement officer to tune per quarter.
The instant the Resolution Agent's CLIP audit passes, a watermarked Before | After graphic with “Fixed in 36 hours via NagarikAI” is auto-rendered. A single tap fires the Web Share API into WhatsApp, X, Instagram.
Solves discoverability without a marketing budget — every fix becomes a recruitment moment for the next citizen.
Tap the mic on /report, describe the issue in your language. Gemini 2.5 Flash ingests photo and audio in a single multimodal call — no latency-heavy STT round-trip, no glossary mismatches on local place names.
What ships next — beyond the hackathon
Today NagarikAI is a working web app + Meta WhatsApp sandbox. The architecture is production-ready; what's left is partnership, hardening, and platform reach. Here's the post-hackathon plan, ordered by user impact.
Today: responsive PWA that runs in any mobile browser, including the WhatsApp in-app browser. Next: native React Native shell so we get true background location for verifiers, push notifications without a service-worker round-trip, and Play Store / App Store discoverability.
Today we run on Meta's sandbox (test recipients only). Next: complete business verification + register the citizen-facing 'civic_ticket_update' template with {type}/{severity}/{dept}/{sla} variables. Unlocks unsolicited messages to any number, not just registered testers.
Switch each department's primary_channel from simulated to live. WhatsApp for Roads/SWM via their actual supervisor numbers; SMTP into the existing BWSSB and BESCOM complaint inboxes; signed webhooks into BBMP's e-Aasthi where available.
Prevent XP gaming. One verified human = one citizen account, tied to a UPI ID. Civic Hero NFTs become attestable identities crews can trust when triaging high-severity reports (sewage on busy roads, fallen power lines).
Today every ticket follows the same 45s pipeline. Next: a 'this is dangerous right now' tap that bypasses verification, fires an SMS + WhatsApp to the on-call supervisor, and pings the nearest crew via live GPS — for downed power lines, exposed manholes, fire-prone garbage piles.
Crew app uploads location every 30s when a stop is in progress. Citizen tracking page shows a live blue dot + a real-time ETA so they don't have to keep refreshing.
Hyderabad, Chennai, Mumbai, Delhi. The ward polygons, SOP table, and department list are config; the agent loop and MILP are not. Roughly 1 week of data ingestion per city plus a local MoU.
Today the scheduler re-solves on every new issue (fine for the demo, wasteful at city scale). Next: nightly Cloud Scheduler job that re-solves once + stores assignments + diffs against the prior solution so dispatchers see only what changed.
Try it — it takes 30 seconds.
A hackathon demo account is preloaded. Sign in, pick a Bengaluru ward, snap a photo or video, and watch all 7 agents fire in real time.