NYC FloodAI

A research project developed alongside fellow researchers from the Distributed AI Research Lab (DAIR) @ Hunter College. Led by Dr. Anita Raja.

FloodAI is a smart flood-alert system for New York City. It watches local water-level sensors and decides when to send alerts while staying within a small alert budget. The goal is simple: catch real floods early, avoid spamming people, and show what’s happening on a clear & interactive map.

Why it matters

Floods don’t just damage architecture, they throw emergency responders, transit, and whole neighborhoods into chaos. A system that is able to issue intelligent alerts based off a given neighborhoods vulnerability and antecendent flood data will allow authorities to know which locations are most likely to be impacted.

How it works

  • City sensors: We read water depth from NYC FloodNet
  • Smart alerting: An AI agent learns when an alert is worth it, given a limited budget (e.g., 25 alerts per season).
  • Clear map: A web dashboard shows live status, past events, and context layers like elevation and vulnerability.

Issues encountered

  • Training was too slow and jittery at 1-minute data.
    I moved to 15-minute sampling so episodes are shorter and the agent learns faster without losing the story of a storm.
  • API limits + missing days.
    The FloodNet API can be strict and limit requests. I created scripts to collect and cache everything locally first, then train from a clean, complete dataset.
  • Wild outliers ruined charts.
    Some readings (e.g., 1200–2000 mm) blew up the y-axis. I keep them for QA but filter >500 mm in visualizations so real patterns stay readable.
  • Sudden jumps triggered instant alerts.
    I added rate-of-change checks and hysteresis (different “start” and “stop” levels) so alerts are stable, and still allow multiple alerts in one day when separate events happen.
  • Nearby sensors disagree or go offline.
    I combine them with a winner-takes-all rule: at each moment, whichever sensor shows the stronger signal drives the decision. That way, the system stays resilient.

What you can do on the dashboard

  • Watch a simulated sensor status and alert history.
  • Step through time in 15-minute ticks (or run it automatically) to see how the agent responds
  • See budget used vs. floods covered.
  • Toggle layers: elevation, flood vulnerability, tree canopy, and sensor clusters.

Results so far

  • Alerts are conservative but clean (fewer false alarms).
  • Runs smoothly with a modest alert budget.
  • The 15-minute grid made training and evaluation manageable without losing important timing.

What’s next

  • Add more FloodNet sensors and short-term weather forecasts.
  • Push email/SOS notifications for locals

Built with Python, Pandas, Gymnasium, Stable-Baselines3, and Leaflet. For more information feel free to check out the GitHub page and associated paper (WIP).