Inspiration

Watching disaster response coverage in India — floods in Chennai, earthquakes in Gujarat — one thing kept standing out: the bottleneck isn't detection, it's allocation. Emergency coordinators spend 30-45 minutes per decision figuring out which ambulance goes where, while people wait. WHO says 40% of disaster deaths are from delayed response, not the disaster itself. That felt like a solvable problem.

## What it does

CrisisCompass is a command-center style dashboard that uses ML to predict resource needs for each disaster incident and then runs an optimization algorithm to allocate ambulances, rescue teams, and medical supplies — cutting decision time from 40 minutes to under 2.

Select an incident on the map, get instant ML predictions (how many ambulances, rescue teams, medical kits needed). Hit optimize, and the system assigns all available resources across all active incidents, minimizing response time while respecting capacity constraints. Routes draw on the map, metrics update live.

## How we built it

  • Backend: Python + FastAPI. Trained a RandomForest model on 500+ synthetic disaster scenarios. Built a severity-weighted optimization algorithm with Haversine distance calculations and capacity constraints.
  • Frontend: Next.js 14 + TypeScript + Tailwind CSS. Leaflet.js for the interactive map with OpenStreetMap tiles. Custom dark command-center theme.
  • Data: 50 realistic disaster scenarios across Mumbai, Delhi, Chennai, Kolkata, and Bangalore with real coordinates. 30 emergency resources distributed across the city.

## Challenges

Getting the optimization to feel realistic was tricky — early versions were allocating everything instantly with perfect scores, which doesn't reflect real constraints. Had to add capacity limits, distance-based response times, and resource gaps to make it honest. Also spent a lot of time getting Leaflet to play nice with Next.js SSR.

## What we learned

The real value in disaster AI isn't prediction alone — it's the allocation step. Most tools stop at "here's where the incidents are." The hard part is answering "which of my 15 ambulances goes to which of my 50 incidents, right now."

## What's next

Integration with live incident feeds (emergency hotline APIs), multi-city support, and retraining the model on real historical disaster data from NDRF.

Built With

Share this project:

Updates