-
-
GhostNet AI — Secure operator login with JWT authentication
-
Live operator dashboard with Chennai situational map, real-time stats and AI agent activity
-
Citizen Emergency SOS — GPS captured, sending location to rescue coordination system
-
CRITICAL alert active — Jac Graph Engine showing 37 nodes, AI agents deployed, departments notified
Inspiration
Every year, disasters like floods claim lives not because help isn't available — but because coordination fails. Rescue teams don't know where people are. Hospitals don't know how many patients are coming. The wrong departments get called. We built GhostNet AI to fix this.
What it does
GhostNet AI is a real-time disaster coordination engine that:
- Citizen SOS — Any citizen in danger opens
/soson their phone, taps one button, and their GPS location + emergency message is instantly sent to the system - 5 AI Agents — Incident Analysis, Risk Prediction, Resource Allocation, Communication, and Recovery agents process every report in under 3 seconds using Groq LLM
- Jac Graph Engine — Every zone, hospital, rescue team, shelter and incident is a typed node in a Jac graph. Walkers traverse the graph to allocate resources and resolve incidents
- Auto-dispatch — The system automatically determines which departments to notify: rescue teams, EMS, fire department, police, coast guard, or NDRF based on severity
- Live Dashboard — Operators see real-time map pins, agent activity, timeline, and dispatch status via WebSocket
How we built it
We built GhostNet AI using Jac as the core graph engine — all entities (zones, hospitals, teams, shelters, incidents) are modeled as typed Jac nodes connected by edges. Python agents call into the Jac graph to build, query, and resolve the disaster network. Groq's llama-3.3-70b-versatile powers three of the five agents for natural language understanding and alert generation. Flask-SocketIO pushes live updates to the operator dashboard without any page refresh.
Challenges we ran into
The biggest challenge was getting Jac 0.15.2 to work correctly with Flask's async environment. Jac's static type checker is stricter than its runtime, so we had to carefully separate the graph definition layer (.jac file) from the Python bridge layer (jac_graph.py). We also had to handle GPS permission issues on localhost HTTP and build a graceful fallback system so the SOS page works even when GPS is denied.
Accomplishments we're proud of
- Complete citizen-to-rescue-team loop in under 3 seconds
- Jac graph with 5 node types and 4 walker types running live
- Real GPS coordinates feeding into AI agent pipeline
- Auto-dispatch correctly identifying the right government departments
- WebSocket live updates so two operators see the same incident simultaneously
What we learned
We learned how to architect a multi-agent AI system where each agent has a single responsibility and passes structured data to the next. We also learned Jac's graph-native programming model — thinking in nodes and edges rather than objects is a genuinely different mental model that maps perfectly to disaster coordination networks.
What's next for GhostNet AI
- SMS alerts to citizens via Twilio
- Integration with real government emergency APIs
- Predictive flood zone modeling using historical weather data
- Mobile app for field rescue teams with offline-first capability
- Multi-city deployment beyond Chennai
Built With
- bcrypt
- css
- flask
- flask-socketio
- groq
- gunicorn
- html
- jac
- javascript
- jwt
- leaflet.js
- llama-3.3-70b-versatile
- python
- sqlalchemy
- sqlite
Log in or sign up for Devpost to join the conversation.