I led the problem research and system design for EPHOR.
Most of my work went into an early decision: not building the obvious thing. Our problem statement was public grievance management, and the default approach is an AI classifier that reads a complaint and routes it to the right department. During research I established that this is already solved in production. CPGRAMS 7.0 shipped AI auto-routing this year, the Samadhan Didi voice assistant launched in May 2026, and Indore's own municipal app already handles photo upload, geotagging and department routing for roughly 1.85 lakh users. Building another classifier would have meant rebuilding a live government product.
What is not solved is what happens after. In the reviews of Indore 311 itself, the recurring complaint is that issues get closed without being resolved or confirmed. The national picture matches: over 70 lakh grievances marked resolved between 2022 and 2024, official satisfaction reported at 76 percent against independent analysis putting it barely above 50, and closure notes that say nothing beyond "matter forwarded to concerned department." The structural cause is that officials auditing closures come from the same administrative cadre as the officials being complained about.
That reframing became the product. EPHOR does not replace a grievance system, it audits one. When a department marks something resolved, the agent treats that as a claim to be tested rather than a fact to be recorded, and runs five independent checks: a template detector for closure notes that say nothing, a geotag match against the original complaint location, a vision comparison to confirm the issue is actually gone, a confirmation request to the citizen in their own language, and a scan for the same issue reappearing in the same ward. A failed cross-examination reopens the grievance automatically, and every state change is hash-chained so a closure cannot be quietly rewritten.
I designed the agent graph around that loop, with each check as a node and the reopen decision as a conditional edge, and I built the research case and architecture behind the submission.
What I am most proud of is the metric inversion. Every grievance dashboard in the country reports closure percentage, which is precisely the number that gets gamed. Ours reports genuinely resolved percentage instead.
The biggest thing I have taken from it so far is how much of this was research rather than engineering. The design only became clear once I could say exactly which half of the problem was already solved and which half nobody had touched.
Log in or sign up for Devpost to join the conversation.