Inspiration
On 29 October 2024 the Poyo ravine near Valencia peaked at about 2,283 m³/s at 18:55. The phone alert reached people at 20:11. The data was there; the explanation and the decision came too late. We wanted an AI that explains why a place will flood, proves it with real data, and still leaves the final call to a person.
What it does
FloodSense EU watches European rain and river data and answers three audiences: citizens, insurers and civil-protection operators.
- Watch: a Control tower scans live river gauges (26 PEGELONLINE gauges and 12 GloFAS points across Europe) without any model calls.
- Investigate: an Investigator agent builds a causal chain (rain → catchment → river → site) where every link cites the SQL query that produced it.
- Falsify: a Skeptic agent tries to disprove each link with counter-checks; weak links go back for revision.
- Expose and plan: plain SQL finds which insured sites sit in the flood footprint; a Playbook drafts next actions, and any action without evidence is dropped.
- Judge and approve: an LLM Judge scores every claim, then a human approves, edits or rejects. Nothing goes out without a yes.
- Remember: only approved findings go into long-term memory, so the next question starts from what a person already checked. Repeat questions come back labelled "cached", and if a model fails the console shows the last approved run labelled "replay", never a silent guess.
The demo replays real events: Valencia 2024 and the Ahr valley 2021.
How we built it
- NVIDIA Nemotron on Nebius Token Factory: every model call goes through Token Factory's OpenAI-compatible API. A fast lane handles drafts and quick replies; a deep lane handles the Judge's grounding check and Playbook repairs.
- Agents: a LangGraph graph with a router, the agents above, a human-approval interrupt and a checkpointer, served by FastAPI with a live trace over SSE.
- Data: Zetaris federates every source (Open-Meteo, GloFAS, PEGELONLINE, DWD ICON, the Copernicus EMS flood maps) behind read-only SQL views, so each number keeps the query id that produced it.
- Memory: Meterless H-MEM (long-term memory with a trust ledger) and the Meterless World Model (a board of hypotheses and verdicts) run as a sidecar service.
- Documents: a retrieval layer over cited reports (EEA, EIOPA, the EU Floods Directive and past floods per river) gives page-level citations.
- Consoles: a citizen view, an insurer view with approvals and exposure, and a civil-protection desk, each showing "How this answer was made".
FloodSense was built from 22 to 27 October 2026. For this hackathon we moved its model calls onto NVIDIA Nemotron served by Nebius Token Factory.
Challenges we ran into
- Keeping every claim grounded: the Investigator may only cite query ids from the current run, and memory is context, never evidence.
- Speed: a full multi-agent run took 864 s at first; lane routing, parallel reads and pacing brought it to 225 s.
- Rate limits and flaky endpoints: retries with backoff, a concurrency cap, and labelled replays so the demo never goes blank.
- Making a Skeptic useful: counter-checks that run before the peak, not only after it.
Accomplishments that we're proud of
- An agent that actively tries to prove itself wrong, with every claim traceable to data.
- Memory that learns only from a human yes.
- A complete product for three audiences, not a notebook demo.
What we learned
Trust comes from showing the work: citations, a visible Skeptic, honest "cached" and "replay" labels, and a human in the loop matter more to real users than a fluent answer.
What's next
Similar-question matching with embeddings, more European river basins, and pilots with an insurer and a civil-protection authority.
Built With
- copernicus-ems
- cursor
- docker
- dwd-icon
- fastapi
- glofas
- langgraph
- leaflet.js
- meterless
- nebius-token-factory
- nvidia-nemotron
- open-meteo
- openstreetmap
- pegelonline
- postgresql
- python
- rag
- redis
- server-sent-events
- sql
- sqlite
- typescript
- zetaris
Log in or sign up for Devpost to join the conversation.