PULSE: Predictive Urban Logistics & Safety Engine

Team: Abhinav, Niyati, Sahana


Inspiration

Emergency response systems are built to react. A crash happens — then units are dispatched. Most tools available to cities only describe where accidents occurred in the past. They don't help planners anticipate where risk is building or decide how to act before harm occurs.

In Madison, unpredictable winters, high-traffic events, and limited EMS coverage make response timing critical. We wanted to move from reaction to preparation — building a system that helps cities stage resources before emergencies happen.


What it does

PULSE forecasts short-term crash risk across geographic regions of Madison and turns those forecasts into deployment recommendations. It:

  • Generates short-term crash risk predictions across grid cells
  • Displays risk on an interactive heat map
  • Recommends strategic EMS pre-positioning locations
  • Highlights persistent hotspots versus temporary spikes

Rather than just predicting where crashes might occur, PULSE connects risk forecasts to real deployment decisions.


How we built it

  • Pulled the road network from OpenStreetMap via OSMnx and saved it as GeoPackages so every road segment had geometry plus attributes like speed, travel time, length, and road class
  • Cleaned and filtered Wisconsin DOT crash records down to the Madison region and aggregated them into edge-by-hour "events," engineering predictive features such as hour of day, day of week, month, and short-term crash lags
  • Aligned crash data with NOAA station weather by parsing hourly fields and producing a weather_hourly.csv
  • Trained a compact model to output a per-segment risk score and converted predictions back into geospatial form for mapping
  • Ran a network travel time optimization to recommend EMS staging sites that minimize time to the highest-risk hotspots
  • Wrapped everything in a Streamlit dashboard with a heatmap radar view and narrative operational cards so the output works as a command-style briefing

Challenges we ran into

  • The hardest part was not the modeling — it was data alignment and geospatial joins, where keys repeatedly failed to match across sources (e.g. missing edge_id in CSV exports, OSM attributes not joining because u/v/key were only present in the GPKG, time columns appearing under different names like hour vs. timestamp)
  • Repeatedly encountered "flat" risk maps where everything looked identical because the latest hour contained too few rows, merges filled missing risk with zeros, or the training window had no positive samples when crash and weather years were misaligned
  • Fixed road identifier issues by switching to the GPKG as the source of truth
  • Correctly parsed NOAA's encoded ISD fields (TMP/DEW/VIS/WND/AA1) and rebuilt weather data to match the same year as crash records
  • Ensured the visualization pipeline did not unintentionally drop most segments through filtering or thresholding

Accomplishments that we're proud of

  • Building an end-to-end pipeline from raw crash data to deployment recommendations
  • Successfully integrating spatial, temporal, and environmental datasets
  • Translating model outputs into actionable EMS staging suggestions
  • Creating a clean, interpretable risk heat map for decision-makers

What we learned

  • Spatial data modeling introduces unique aggregation challenges
  • Prediction alone is not enough — decision framing matters
  • Visualization design is just as important as model accuracy
  • Public data requires substantial cleaning and alignment before modeling

What's next for PULSE

  • Real-time 911 dispatch integration
  • Expansion beyond Madison
  • Adaptive EMS routing with reinforcement learning
  • Public-facing transparency dashboard

Built With

Share this project:

Updates