Inspiration

India processes millions of civic complaints every year — potholes, broken streetlights, water supply failures — yet most go unresolved simply because they reached the wrong department, were filed in the wrong language, or got lost in a paper trail. We wanted to build something that removes every single one of those friction points, for both the citizen filing the complaint and the official trying to resolve it.

What it does

ResolveX is an AI-powered civic grievance platform. Citizens can file complaints in any Indian language — the system automatically translates, categorizes, and routes each complaint to the correct government department using an AI pipeline. Admins get a real-time map dashboard showing every open issue in their jurisdiction, with AI-generated resolution plans and priority scoring. Every complaint is tracked end-to-end with full status transparency for the citizen, and a super-admin layer monitors routing accuracy across all departments so the system gets smarter over time.

How we built it

Frontend & Backend** — Next.js 16 (App Router) with React 19, fully server-rendered where possible and client-interactive where needed

  • Database & Auth — Supabase (Postgres) with Row Level Security, real-time subscriptions for the live map, and SSR-safe auth via @supabase/ssr
  • AI Pipeline — Google Gemini via LangChain for multilingual translation, complaint categorization, department routing, priority scoring, resolution plan generation, and AI summarization
  • Maps — MapTiler SDK (MapLibre GL) with real-time complaint markers, live geolocation, and a full-screen admin map view
  • UI — Tailwind CSS v4, shadcn/ui, next-themes for dark/light mode, and a custom GSAP-powered dot grid on the landing page
  • Routing accuracy tracking — a dedicated super-admin analytics layer that measures how often the AI routes complaints to the correct department and surfaces misroutes ## Challenges we ran into MapLibre GL + Tailwind v4 conflict** — Tailwind's universal * CSS reset was applying outline and border styles to the MapLibre <canvas> element, causing the entire map to render black. Took significant debugging to trace it to a CSS specificity issue rather than a logic bug.
  • SSR vs. client-side map rendering — MapTiler's SDK is entirely browser-side (WebGL), so we had to carefully gate it behind dynamic(() => import(...), { ssr: false }) to prevent Next.js from trying to server-render WebGL code.
  • Real-time without overloading — Supabase Realtime fires an event for every database change, which could cause marker thrashing on the map. We implemented a debounce layer to coalesce bursts of events into a single fetch.
  • Multilingual AI reliability — Getting Gemini to consistently return structured JSON (category, department, priority, translated text) across many Indian languages and complaint types required careful prompt engineering and output validation. ## Accomplishments that we're proud of A fully end-to-end complaint lifecycle — from multilingual filing to AI routing to resolution planning to closure — all in one platform
  • A live full-screen map dashboard that actually updates in real time as complaints are filed and resolved
  • An AI routing accuracy tracker that holds the system accountable — it doesn't just route complaints, it measures whether it got it right
  • Dark mode that works seamlessly across every page, including the map ## What we learned How to build production-grade SSR applications where some features are fundamentally client-only (WebGL, geolocation) and need to be carefully isolated
  • How much prompt engineering matters — small changes in how you ask Gemini for structured output made the difference between reliable routing and inconsistent results
  • That CSS resets and third-party WebGL libraries are a dangerous combination and need explicit exclusions
  • How powerful Supabase Realtime is when combined with a debounce strategy — you get live UX without hammering your database ## What's next for ResolveX Mobile app** — a React Native version so citizens can file complaints and attach photos directly from the street
  • Photo & evidence support — multimodal AI analysis of uploaded images to auto-detect complaint category from a photo alone
  • Push notifications — citizens get notified the moment their complaint status changes
  • Department performance analytics — public-facing dashboards showing resolution rates and average response times per department, creating accountability
  • Expanded language support — moving beyond translation to fully localized UI in regional languages
  • Government API integration — direct hooks into existing municipal systems so ResolveX can push complaints into official workflows rather than running in parallel

Built With

Share this project:

Updates