Inspiration

Local infrastructure issues like potholes, illegal waste dumping, and broken streetlights often go unnoticed or unmanaged due to communication gaps and disorganized reporting channels between citizens and local authorities. We wanted to build a bridge—a tool that empowers everyday citizens to seamlessly report problems while equipping municipal managers with automated intelligence to handle them efficiently.

What it does

CivicPulse is an end-to-end municipal issue-tracking and triage platform.

  • For Citizens: Provides an interactive reporting portal where users can upload an issue photo, add a description, and pin the precise location on a GIS map.
  • For Duplicate Control: Automatically checks incoming submissions against active reports using SHA-256 image hashes and spatial geofencing (< 20 meters), utilizing multimodal AI to intercept duplicates.
  • For Municipal Authorities: Features a secure, password-protected administrative dashboard displaying a dynamic color-coded GIS map (red for active tickets, green for resolved ones) along with automated work order summaries and repair cost estimations.

How we built it

  • Backend: Built using Python and Flask, paired with Flask-SQLAlchemy and an SQLite database to handle secure data persistence and user sessions.
  • AI Engine & Built with AI: We integrated the Google GenAI SDK (gemini-3.5-flash) to process user-uploaded images and descriptions directly on the backend. Using Pydantic schemas (TriageReport and DuplicateCheck), we forced Gemini to return strict JSON data containing professional titles, severity levels, categories, repair cost estimations, and formal work order summaries.
  • Frontend: Designed responsive user interfaces using HTML5, Tailwind CSS, JavaScript, and Leaflet.js for interactive mapping.

Challenges we ran into

  • Smart Duplicate Interception: Balancing spatial proximity calculations (using the Haversine formula) with visual AI validation to prevent false positives when multiple reports happen near each other was tricky. We solved this by combining strict SHA-256 fingerprint matching with targeted multimodal AI verification.
  • Structured AI Outputs: Ensuring the Gemini model consistently returned reliable JSON schemas for automated work order generation required carefully configuring structured response types and Pydantic validation models.

What we learned

We gained deep experience integrating multimodal AI workflows directly into web application backends, managing geographic coordinate logic, and structuring secure session-based authentication for administrative dashboards.

Built With

Share this project:

Updates

Submission history