Methodology
How Floodi collects, verifies, and publishes flood information for the State of Florida — written so a city official, emergency manager, or curious neighbor can understand exactly where every dot, polygon, and badge on the map comes from.
The 30-second version
- 🏛️ NWS alerts are pulled from
api.weather.govevery 15 minutes and drawn on the map exactly as the federal government publishes them. - 📊 USGS gauges are shown when their water level crosses the official action stage or flood stage.
- 👥 Community reports are anonymous neighbor observations, verified through a vote system and cross-checked against active NWS warning polygons.
- 📍 Reports within a 2-mile radius of an existing event are grouped to keep the map readable.
- ✅ The NWS-confirmed badge means a federal alert was active for that exact location at the time the report came in.
1. National Weather Service alerts
Every 15 minutes, a scheduled job on Floodi's servers calls the public NWS API at api.weather.gov for all active alerts in the State of Florida. We ingest:
- Flash Flood Warnings & Flood Warnings
- Flood Watches & Flash Flood Watches
- Coastal Flood Advisories, Warnings & Watches
- Storm Surge Warnings
- Hurricane / Tropical Storm warnings tied to flooding risk
Alert polygons are drawn on the map exactly as published by the NWS — we do not modify the geometry, the severity classification, or the expiration time. When the NWS cancels or updates an alert, the next 15-minute poll picks up the change. If our scheduler misses a cycle, the map automatically catches up on the following run.
2. USGS stream gauges & flood stages
Real-time water level readings are pulled from the USGS Water Services API. A gauge is plotted on the map when its current reading reaches or exceeds its official action stage. Each stage is defined by the National Weather Service in coordination with USGS:
| Stage | What it means in plain language |
|---|---|
| Action | Water has risen high enough that emergency managers should start preparing — moving equipment, alerting residents, staffing up. |
| Minor | Minimal property damage; nuisance flooding of low-lying roads and yards. Public safety threat is limited. |
| Moderate | Some inundation of structures and roads near the waterway. Some evacuations may be needed. |
| Major | Extensive inundation of structures and roads. Significant evacuations and large-scale property transfer to higher ground are likely. |
Stage thresholds are gauge-specific, resolved from NOAA's official flood-category data for that location — Floodi never invents or adjusts them. For the small number of gauges NOAA hasn't assigned an official category to, we fall back to a clearly conservative estimate and label it as such rather than presenting it as an official threshold.
3. Community reports & vote-based verification
Anyone in Florida can submit a flood report in about 30 seconds — location, severity, an optional photo, and an optional comment. To keep the map trustworthy, every community report passes through a multi-stage verification pipeline:
- Confirm votes: any signed-in user (other than the original reporter) can tap "Confirm" if they see the same flooding. Each confirm increments a public counter shown on the report.
- Dispute votes: if a user believes a report is inaccurate, they can tap "Dispute." Once a report receives 3 or more dispute votes, its status is automatically downgraded to clearing and the pin is de-emphasized on the map.
- "Likely cleared" status: when 2 or more independent users mark a report as cleared (water has receded), the report transitions to likely_cleared.
- Auto-expiration: any report still active after 6 hours is automatically transitioned tolikely_cleared. Floods rarely persist on a single street longer than that without a fresh observation.
- Rate limit: a single account may submit at most5 reports per hour. This is enforced at the database level to block spam.
- Flag-based hiding: any user can flag a report. A single flag immediately hides the photo; 3+ unique flags hide the entire report pending admin review.
- Photo moderation: all uploaded photos are scanned for unsafe content before becoming visible on the map.
- Self-vote prevention: users cannot confirm or dispute their own reports, and each user can vote on a given report only once.
3.5 AI-powered photo severity classification
When a community report includes a photo, Floodi's AI vision system independently analyzes the image before it becomes publicly visible. This analysis runs on Google Gemini Vision through a secured AI gateway and produces two outputs:
- Content safety check: the image is screened for nudity, graphic violence, hate content, and non-flood imagery. Only confirmed flood-condition photos are approved for public display.
- Flood severity classification: approved photos are classified into one of four severity levels:
minor— puddles, wet pavement, nuisance floodingmoderate— significant standing water, partially flooded roads or yardssevere— major flooding, structures inundated, vehicles submergedunknown— severity cannot be determined from the image alone
Why this matters: the AI-classified severity provides an independent signal that complements the reporter's own assessment. Moderators can see both signals side by side, and the AI severity is stored with the moderation record so data consumers have two independent flood-severity data points for every photo-backed report.
If the AI classification service is unavailable for any reason, the photo is held for manual admin review — photos are never auto-approved without a verification signal.
4. The 2-mile deduplication radius
During a major event — a hurricane, a king tide, an afternoon thunderstorm sitting over a single neighborhood — dozens of people will report the same flooding within minutes. To keep the map readable, Floodi groups those reports using a 2-mile deduplication radius:
- When a new report is submitted, Floodi checks for existing active reports within a 2-mile radius on the same street segment.
- If a match is found, the new report is treated as an additional confirmation of the existing event rather than a separate incident — the existing pin gains a confirm vote and stays in place.
- If no match is found, a new pin is created. This is what triggers the "X new nearby" badge for users already viewing the map.
The result: during widespread events the map shows real density (many pins across a region) rather than dozens of overlapping pins on a single block.
5. What "NWS-confirmed" actually means
A community report is tagged with the green NWS-confirmed badge when, at the moment of submission, its coordinates fall inside an active National Weather Service flood warning polygon.
The badge means: a federal flood alert is in effect for that geographic area, so the conditions reported by the neighbor are consistent with what the National Weather Service is already warning about.
The badge does NOT mean: that the NWS has individually verified the specific street-level observation, sent a meteorologist to that block, or endorsed Floodi's report in any way. We are an independent service.
Reports without the badge are still useful neighbor observations — they simply haven't been corroborated by an active federal warning at that exact location and time. Vote counts, photos, and timestamps still apply.
6. Road impacts and public-safe publishing
Floodi separates general flood observations from road-impact signals when a reporter identifies a flooded road, partially blocked route, impassable street, or reopened condition. Road-impact labels are community awareness signals, not official road closures.
- Public pages show city/county labels, age, severity, road-impact status, and verification context.
- Private reporter contact details, user IDs, admin notes, and unapproved photos are not included in the public feed.
- Verified means a report has an admin/community/NWS-context signal in Floodi; it does not mean a government agency has endorsed that street-level report.
7. Safety, limitations, and no-emergency-use rule
Floodi does not replace 911, official emergency alerts, evacuation orders, National Weather Service warnings, law enforcement, transportation agencies, or local government instructions. Community reports may be delayed, inaccurate, duplicated, or missing. Never drive through flooded roads and never enter dangerous water to submit a report.
Want to consume the data programmatically? See the public API docs → or read the data sources page →
Floodi is not affiliated with the National Weather Service, NOAA, USGS, or FEMA. All upstream data is consumed via public, no-key APIs. Last reviewed: May 10, 2026.
