PulseGrid

##Inspiration

Every disaster response system we studied had the same fundamental flaw: they optimized for speed rather than fit. The nearest ambulance gets dispatched regardless of whether it carries the right equipment. The first SOS in the queue gets answered regardless of whether someone else is dying faster.

We kept returning to one question: what would a seasoned emergency coordinator do that software doesn't? The answer was a reason that weighed severity, capability, road conditions, language, and supply availability all at once. We wanted to automate that reasoning without losing its explainability.

The name PulseGrid captures exactly what the platform is: a living grid of pulses, distress signals, responder heartbeats, supply flows, all synchronized in real time. That idea became our north star.

What It Does

PulseGrid is a real-time disaster response coordination platform that connects three roles: victims, responders, and organizations through a shared live intelligence layer.

A victim submits a structured SOS from their phone. The system immediately runs a chained algorithm pipeline:

  • A Bayesian classifier infers true severity from indirect signals like elderly involvement and oxygen dependency.
  • A priority heap reorders the queue so the most critical cases surface regardless of submission order.
  • Dijkstra's and Yen's K-Shortest Path algorithms find the safest route while pre-computing alternatives in case roads fail.
  • The Hungarian algorithm assigns the optimal responder by penalizing skill mismatches and missing equipment.
  • Gale-Shapley stably matches volunteers by language, proximity, and capability.
  • A Min-Cost Flow model distributes supplies from depots to shelters.

The victim receives a calm, human-sounding audio message via ElevenLabs TTS explaining exactly what help is coming and what to do while they wait. The responder gets turn-by-turn routing instructions. The organization coordinator sees everything live on a map dashboard updated via WebSocket.

Every decision is explainable and traceable. No black box.

How We Built It

Backend: Python FastAPI on PostgreSQL and a Neo4j graph database. Neo4j models the road network as a live graph, with zones as nodes, roads as weighted edges, so routing reflects actual blocked or flooded infrastructure in real time.

Algorithms: Six algorithms chained sequentially inside a single SOS pipeline: Bayesian severity classifier, priority heap, Dijkstra's, Yen's K-Shortest, Hungarian assignment, Gale-Shapley volunteer matching, and Min-Cost Flow for supply distribution.

AI Layer: Gemini for triage reasoning and natural language message generation. ElevenLabs Scribe v2 for speech-to-text intake and TTS for victim-facing audio confirmations.

Mobile Frontend: Flutter with Material 3, iOS-first. Three completely separate role experiences — victim, responder, organization each tuned to the user's mental model in a crisis. High contrast, large touch targets, zero ambiguity by design.

Real-Time Layer: WebSocket connections push live incident updates to organization dashboards and responder assignment screens the moment a dispatch decision is made.

Challenges We Ran Into

Chaining six algorithms without silent failures. Early builds returned incorrect assignments when a responder had a skill mismatch, because the error was silently absorbed. We solved this by explicitly incorporating a penalty matrix into the Hungarian cost function, so mismatches are penalized and surfaced rather than ignored.

GPS honesty across three environments. Real device GPS, iOS simulator fake coordinates, and Nominatim reverse geocoding all behave differently and fail differently. We built a GeoZoneResolver that handles all three cases transparently and tells the user exactly which mode it's operating in.

Designing for three opposite emotional states in one codebase. A victim submitting an SOS is panicking. A coordinator reading a dashboard is making rapid decisions under pressure. A responder reading instructions is moving fast in the field. The same incident data had to be presented completely differently to each role without building three separate apps.

Neo4j edge weight modeling. Getting Dijkstra's to respect blocked roads as infinite-weight edges rather than missing edges and making Yen's alternates pre-compute correctly across the same graph took significant debugging before routing felt reliable under failure conditions.

Accomplishments We're Proud Of

  • A single SOS submission triggers six algorithms and returns a fully reasoned, explainable dispatch decision in under two seconds.
  • The victim confirmation message is calm, specific, and human, not a generic alert.
  • Blocked road rerouting works automatically with two pre-computed alternates always ready.
  • The Hungarian assignment correctly penalizes skill mismatches, selecting a non-nearest but better-qualified responder when appropriate.
  • Gale-Shapley volunteer matching respects language preference of a bilingual volunteer.

Built With

Share this project:

Updates