📖 About
CivicResolve
CivicResolve is a full-stack, AI-powered public infrastructure reporting platform designed to help citizens and municipalities detect, classify, prioritize, and manage civic issues efficiently. Using computer vision, geospatial intelligence, and a composite risk engine, CivicResolve analyzes citizen-submitted images, identifies infrastructure problems (such as potholes, graffiti, or illegal dumping), estimates visual severity, and generates a data-driven priority score to help authorities address the most critical issues first.
💡 Inspiration
Every day, citizens navigate past potholes, broken streetlights, graffiti, and damaged sidewalks. However, reporting these infrastructure hazards to local authorities is often a tedious, manual process that discourages civic engagement. On the other side, municipalities receive a disorganized influx of complaints with varying descriptions and no objective way to prioritize them. CivicResolve was inspired by the need to bridge this communication gap. The goal was to build a platform that automates the triage process—empowering citizens to easily report problems while giving authorities an objective, AI-driven, data-backed system to fix the most critical issues first.
⚙️ What it does
CivicResolve is a comprehensive, AI-powered public infrastructure reporting platform built for both citizens and municipal administrators.
- Citizen Experience: Users can securely log in, drop a pin on an interactive map, and submit image-based reports of civic issues.
- AI Computer Vision: Under the hood, the platform runs uploaded images through an AI pipeline to automatically classify the type of issue (e.g., illegal dumping, pothole) and estimate its visual severity.
- Composite Risk Engine: The system doesn't just look at the image; it calculates a prioritized risk score by combining three factors: the AI's Visual Severity, the Road Hierarchy (e.g., highway vs. residential street), and Critical Proximity (how close the issue is to hospitals, schools, or fire stations).
- Admin Dashboard: Municipal administrators access a secure dashboard featuring an interactive geospatial map and a dynamically ranked list of reports, allowing them to dispatch crews to the highest-risk problems immediately. Admins also have a "Feedback Loop" to override AI predictions if necessary.
🛠️ How we built it
The project was architected as a fully decoupled, full-stack application to ensure maximum performance and scalability.
- Frontend UI: The interface was built using native HTML5, CSS3, and Vanilla JavaScript. By intentionally avoiding heavy frontend frameworks, the application remains incredibly lightweight, highly responsive, and accessible on mobile devices.
- Backend & API: The core logic is powered by a high-performance FastAPI (Python) backend. It handles RESTful API requests, securely routes JWT-based authentication (using
bcryptfor password hashing), and acts as the bridge between the database and the machine learning models. - Machine Learning Pipeline: We integrated a custom PyTorch computer vision model that intercepts incoming image data, runs inference to classify the anomaly, and feeds the resulting confidence scores directly into the spatial risk-scoring algorithm.
- Database Management: We utilized PostgreSQL alongside the SQLAlchemy ORM to handle complex relational data, ensuring that user profiles, geo-coordinates, and risk scores are stored efficiently and securely.
- Cloud Infrastructure: The deployment strategy utilized a multi-cloud approach: the frontend is hosted on Vercel for fast global edge delivery, the FastAPI backend and AI pipeline run on Render, and the production PostgreSQL database is managed via Neon.
⚠️ Challenges we ran into
One of the most significant technical hurdles was orchestrating the deployment of a resource-intensive AI pipeline within strict cloud hosting constraints. Running a PyTorch inference model alongside a FastAPI web server on free-tier cloud infrastructure (Render imposes a strict 512MB RAM limit) frequently resulted in out-of-memory errors and timeout crashes. We had to engineer strategic software workarounds and memory-optimization techniques to keep the pipeline alive.
Additionally, securely managing Cross-Origin Resource Sharing (CORS) and synchronizing environment variables across three distinct cloud platforms (Vercel, Render, and Neon) required meticulous configuration to ensure the decoupled frontend and backend could communicate flawlessly.
🏆 Accomplishments that we're proud of
We are incredibly proud of successfully deploying a cohesive system that seamlessly merges advanced machine learning with a clean, dependency-free web interface. Engineering the Composite Risk Engine—which mathematically balances raw visual AI data with geospatial context (like proximity to hospitals)—was a major technical milestone. Watching the data flow instantly from a user's phone, through the PyTorch backend, into a mathematically ranked dashboard for city planners was hugely rewarding.
🧠 What we learned
Building CivicResolve provided deep, hands-on experience in full-stack system architecture. We learned how to effectively manage decoupled microservice-style deployments, handle complex CORS configurations across multiple cloud providers, and manage relational database schemas using SQLAlchemy. Most importantly, it provided invaluable lessons in AI integration—specifically, how to optimize heavy machine learning models to run efficiently in constrained web environments.
🚀 What's next for CivicResolve
Moving forward, we plan to expand the AI's training dataset to recognize a much wider variety of infrastructure hazards (such as faded crosswalks and water leaks). We also aim to introduce real-time SMS notifications to keep citizens updated when their reported issues are fixed, and implement a deeper, predictive analytics dashboard for city planners to track infrastructure decay trends over time.
Built With
- css3
- fastapi
- html5
- javascript
- machine-learning
- neon
- postgresql
- python
- pytorch
- render
- rest-api
- sqlalchemy
- vercel
Log in or sign up for Devpost to join the conversation.