For Citizens
- Complaints with category, ward, location, map pin, photo and an anonymous option
- Tracking IDs per ward
- A public feed with “I’m affected” votes and comments
- A duplicate warning for similar reports within about 200 metres
12Case study · Municipal complaint system
CivicSathy is a complaint and infrastructure tracking system designed for Itahari Sub-Metropolitan City. Citizens report a problem with a photo and a map pin, and the municipality triages it with Gemini. I built it in Java as a university project in April and May 2026, and the source code is on GitHub.
01The problem
A broken road or an overflowing drain is reported by phone, forgotten, and reported again.
Ward offices in a growing city like Itahari receive complaints about roads, sanitation, water, electricity, flooding and safety through calls and visits. The same problem gets reported many times, and nobody has a clear picture of which wards need attention.
CivicSathy gives every complaint a tracking ID, a location on a map and an AI severity estimate, so a municipality can see where problems cluster and act on the worst first.
02The solution
Citizens register with their ward, report a problem with a category, location, map pin and optional photo, and follow it with a tracking ID such as CS-W5-A3B7. Others can mark that they are affected, or comment.
Administrators triage tickets, assign crews and vehicles, broadcast announcements and publish resolution reports. It is the kind of management system an organisation runs every day.

03Features
Two sides of one ticket: the citizen who reports it and the municipality that has to fix it.

04Architecture
CivicSathy follows a classic MVC structure on Jakarta Servlets with a DAO layer over MySQL. Every query is a prepared statement, and authentication filters protect the citizen and admin areas with 30-minute sessions.
The AI step runs when an administrator asks for it, and its suggestions are stored with the ticket, so every triage decision can be reviewed later, much like the audit log in Eutaa.
05Engineering
The three decisions that shaped CivicSathy, and why I made them. Each one solves a problem a real user would hit.
01
When an administrator runs the analysis, the complaint text and photo go to Gemini together. It returns a severity from low to critical, a suggested crew, equipment, estimated hours, crew size and a vehicle, which are stored with the ticket. RecruitFlow uses Gemini with the same care.
02
Before a complaint is submitted, the system looks for similar titles within roughly 200 metres using a Haversine distance query, and shows them to the citizen first. The data model behind it is plain database design done carefully.
03
A Leaflet heatmap shows complaints by location across the city’s wards, so administrators can see clusters at a glance, and tickets pending more than 48 hours move to an escalation list.
06Screens
A single ticket with Gemini’s recommendation, and the full ticket table administrators work from. Demo data only.


07Status
CivicSathy was built as a university project and is not in production use. The source code is on GitHub, and the screens on this page come from a local run with demo data.
CivicSathy
University project, source on GitHub
Before any real deployment, two security changes come first. Knowing what a project still needs is part of the job.
Related services
These are the services behind this case study. Each page lists prices, timelines and how I work, and every starting price is on my services page.
Every project, with its stack and status side by side, are in my web development portfolio, and the person behind them is on my about page.
What CivicSathy does, how it uses AI and whether Itahari uses it.
Ask me on WhatsAppCivicSathy is a complaint and infrastructure tracking system designed for Itahari Sub-Metropolitan City. Citizens report problems such as broken roads, sanitation, water, electricity, flooding and safety with a map pin and photo, and administrators triage, assign and resolve them ward by ward.
When an administrator runs the analysis, the complaint text and photo go to Google Gemini 2.5 Flash together. Gemini returns a severity from low to critical, a suggested crew, equipment, estimated hours, crew size and a vehicle, and those suggestions are stored with the ticket for review.
Before a complaint is submitted, the system looks for similar titles within roughly 200 metres using a Haversine distance query, and shows them to the citizen first. The citizen can then mark that they are affected by an existing report instead of filing a new one.
CivicSathy is written in Java 17 on Jakarta Servlet 6 and JSP, running on Apache Tomcat 11 and built with Maven. It uses MySQL with 14 tables, Leaflet with a heat layer on OpenStreetMap for maps, OpenPDF for reports and Gemini 2.5 Flash over REST.
No. CivicSathy was designed for Itahari Sub-Metropolitan City as a university project, and it is not in production use. The source code is on GitHub, and the screens on this page come from a local run with demo data.
Yes. I build custom management systems, including ticketing, complaints, tasks and reports, that fit how an organisation already works. For real use they ship with argon2id passwords, CSRF protection and role-based access from day one, and they are quoted per module. See management systems for details.
Send a short note about your project and budget. I reply within one working day with questions or a first estimate.
Ujjwal RupakhetiReplies within one working day
What are you planning?
Opens WhatsApp with your message started.