Inspiration

In fast-paced urban centers like New York City, critical incidents unfold every minute, but newsrooms often hear about them after they're over. We set out to change that. Inspired by the need for real-time situational awareness, our goal was to give journalists and emergency responders a live, actionable view of unfolding events as they happen, directly from the city’s police and fire radio.

What We Built

Our system listens to live radio streams (e.g. via Broadcastify), transcribes them using OpenAI Whisper, and runs a custom NLP pipeline to identify incident types and extract potential locations. The result is a constantly updating, real-time heatmap overlay of danger zones across NYC.

Key features:

  • Live audio ingestion from emergency radio.
  • Speech-to-text conversion using Whisper.
  • NLP classification to detect incident type and severity.
  • Named entity recognition to pull location references.
  • Geocoding of extracted locations via OpenStreetMap.
  • Frontend heatmap built with Leaflet and displayed via Flask.

What We Learned

  • How to parse natural speech from noisy radio traffic.
  • Designing a modular pipeline from audio → transcript → map overlay.
  • Working with map data libraries and coordinate systems for geolocation.
  • Handling vague or missing data and applying fallback strategies.

Challenges

  • Emergency radio is messy and unstructured, we had to tune our NLP pipeline to detect incident types from fragmented, overlapping speech.
  • Location mentions were often ambiguous (“near the CVS”, “by the FDR”), we used fuzzy heuristics and fallback models to approximate positions.
  • Keeping the map real-time and performant required optimizing data updates and caching strategies.

Built With

Share this project:

Updates