Inspiration

Civic reporting systems usually stop at collecting complaints. A citizen uploads a photo, writes a short description, and the report enters a queue. From there, municipal teams still have to manually understand the evidence, detect duplicate reports, judge urgency, identify the right department, create an action plan, and verify whether the problem was actually resolved.

We wanted to build the missing intelligence layer between a citizen report and municipal action.

Civitas was designed around a simple question: what if every civic report could be converted into a traceable, evidence-backed operational decision instead of becoming just another ticket?

What it does

Civitas is a multimodal civic incident intelligence and municipal operations platform.

Citizens can report issues using text, images, video and location data. Civitas then turns that raw evidence into a structured incident workflow.

The system can:

  • understand and structure civic evidence from citizen reports
  • analyse images and associated media
  • detect duplicate and related reports using spatial and contextual signals
  • cluster reports that refer to the same underlying incident
  • assess severity separately from operational priority
  • use geospatial context to understand nearby infrastructure and sensitive locations
  • retrieve relevant municipal policies and operational guidance
  • route incidents to the appropriate department
  • generate an operational plan and work order
  • pause consequential decisions for human review
  • resume the same workflow after clarification or supervisor action
  • maintain a trace of decisions, tools and evidence used
  • communicate meaningful status updates back to citizens
  • compare before-and-after evidence to verify resolution
  • support recurrence analysis, contractor performance, open-data feeds and municipal auditability

Civitas is not a complaint form or a generic chatbot. It is an end-to-end decision and execution layer for civic operations.

How we built it

Civitas is built as a modular full-stack system rather than a single AI prompt.

The frontend is built with Next.js, React and TypeScript and is deployed on Vercel. It provides citizen reporting, municipal workspaces, GIS-based incident views, workflow review, analytics, documentation and resolution interfaces.

The backend uses FastAPI with PostgreSQL, PostGIS and Supabase for operational data, authentication and media storage.

The intelligence layer combines several specialised components:

  • computer vision for visual evidence analysis
  • geospatial processing for proximity and location context
  • duplicate detection and incident clustering
  • severity and priority modelling
  • resolution verification using before-and-after evidence
  • deterministic municipal knowledge retrieval with source grounding
  • policy-reference validation and abstention when evidence is insufficient

The agentic workflow is orchestrated with LangGraph. Instead of asking one model to make every decision, the workflow separates evidence structuring, clarification, ML analysis, knowledge grounding, routing, operational planning, critique, human review and citizen communication into bounded stages.

LLM access is provider-neutral, with Groq used for deployed inference. Structured outputs and validation are used throughout the workflow so downstream systems receive predictable data rather than free-form model responses.

Long-running workflows use persistent workflow IDs, thread IDs and PostgreSQL checkpointing. Human-review and clarification interrupts resume the same workflow instead of starting the reasoning process again.

We also built explicit API boundaries, trace persistence, role-based access, media guardrails, evaluation tooling and automated test coverage across the frontend, backend, workflow, knowledge, geospatial and ML modules.

Challenges we ran into

One of the hardest problems was keeping multiple forms of intelligence consistent.

Vision, geospatial analysis, duplicate detection, policy grounding and LLM reasoning all produce different kinds of evidence. We needed a common contract so that one component could not silently overwrite or reinterpret another component's output.

Another challenge was designing human-in-the-loop workflows correctly. A review screen is easy to build; preserving the exact workflow state, pausing at a consequential decision and safely resuming the same thread after approval, rerouting or clarification required persistent workflow state and carefully restricted review contracts.

Media handling also became an important engineering problem. Uploaded evidence had to move reliably from the frontend to storage, persist as a media record, be loaded again by the backend and reach the actual ML pipeline rather than existing only as a browser preview.

We also had to separate severity from priority. An issue can be visually severe without being the highest operational priority, while a moderate issue near a school, hospital or high-traffic location may require much faster action.

Finally, we spent significant time eliminating misleading fallback behaviour. Production failures now surface as failures rather than silently turning into demo data or fabricated success states.

Accomplishments that we're proud of

We are particularly proud that Civitas operates as a connected engineering system rather than a collection of isolated AI features.

Some of the most important accomplishments are:

  • a persistent LangGraph workflow with clarification and human-review interrupts
  • multimodal evidence flowing into a real ML analysis pipeline
  • duplicate and recurrence analysis using persisted incident context
  • deterministic policy grounding with traceable references
  • separate severity and operational-priority reasoning
  • geospatial intelligence using PostGIS and spatial indexing
  • structured routing and work-order generation
  • before-and-after resolution verification
  • role-aware municipal review and workflow resume
  • auditable workflow traces without exposing private chain-of-thought
  • open-data, dispute, contractor and civic-operations interfaces
  • production deployment across Vercel, Render and Supabase
  • automated testing across the major system layers

The result is a platform that can take an ambiguous citizen report and progressively turn it into an evidence-backed, reviewable and accountable municipal action.

What we learned

The biggest lesson was that reliable AI systems depend more on architecture and boundaries than on a single model.

LLMs are useful for interpretation and reasoning, but they become much more dependable when they operate alongside deterministic retrieval, geospatial computation, specialised ML models, typed schemas and human approval.

We also learned that traceability has to be designed into the workflow from the beginning. If a system is making operational recommendations for a city, it should be possible to understand what evidence, policy references and tools contributed to that recommendation.

Another important lesson was that human review should not be treated as an exception to automation. For consequential civic decisions, it is part of the system architecture.

What's next for Civitas

Civitas is designed to extend from a deployed civic-intelligence platform into larger municipal operating environments.

The next direction is broader real-world adoption: connecting additional municipal systems, expanding policy and jurisdiction coverage, integrating more live operational feeds, and evaluating the platform with larger real incident datasets and municipal users.

The architecture already supports those integrations without changing the core workflow: evidence in, grounded intelligence, accountable action, verified resolution.

Built With

Share this project:

Updates

Submission history