International AI Builders Congress 2026 · Idea to Unicorn · ClimateSphere AI → Climate Shield · Team Quantum Builders
Flash-flood warnings that reach every household in time.
In August 2024, record rain in Tripura sent flash floods into Feni, Cumilla and Noakhali within hours — 5.8 million people affected, 71 dead, and no forecast of a flood that severe. The rain was visible across the border hours before the water came. Agam watches it every hour, judges it against each location's own 30-year history, and turns risk into verified, plain-Bangla voice calls and SMS that a local officer approves — reaching the most vulnerable first.
Prototype for research and demonstration — not an official warning service. Demo households are synthetic, and demo mode can never send to a real phone (officer PIN 0000).
System dashboard
Live system status
These cards call Agam's own risk API from your browser right now: the same engine the dashboard, the background worker and the MCP server use.
Live today
Open-Meteo rain, river and tide right now + residents' reports
Feni flood, 20 Aug 2024 12:00
Only the data that existed at that hour
Why this matters
The problem
Floods arrive in hours
Forecasts missed it
Warnings don't reach the last household
FFWC and Google Flood Hub forecast major rivers well, with days of lead time. Small flashy cross-border rivers — Muhuri, Gumti, Khowai, Someshwari — are not resolved by global models, and no existing tool turns a warning into a prioritised, household-level outreach plan.
Solution
How Agam works
- 1
Watch upstream
15 rain points in Tripura, Meghalaya, Assam, West Bengal and the Chittagong hills, plus local rain, 9 river points and 4 river mouths (tides) — every hour.
- 2
Judge against local history
2/5/10-year levels per location from 30 yrs of rain, 40 yrs of river flow, 2.5 yrs of tides. Residents' “water rising” reports count too.
- 3
Explain the risk
Normal / Watch / Warning / Danger, with the evidence, the estimated arrival time and today's official FFWC/BMD status.
- 4
Write & verify the alert
An AI model (free Google Gemini by default) writes a plain-Bangla SMS, voice call and loudspeaker script from verified facts; 7 automatic checks; an officer approves (two for Danger).
- 5
Reach everyone
Voice calls + SMS (retry → backup number), volunteer door-knocks for homes without a phone, mosque/CPP loudspeakers. Residents reply “1 safe / 2 need help”.
Technical whitepaper
Architecture
Input → processing → output
Inputs: Open-Meteo live rain, river (GloFAS) and tide; precomputed thresholds; area/station graph with travel times; residents' reports via Telegram and SMS.
Processing: a transparent rule-based risk engine (src/lib/risk.ts) compares rolling 24 h / 72 h / 5-day totals against each location's return levels, with a per-location bias factor between datasets.
Output: a level per area with evidence → verified alert facts → AI-written Bangla messages → officer approval → five delivery channels → replies and rescue list.
Components
- Web app — Next.js 16 + React 19: map, replays, alert drafting, approval, outbox, uploads, audit log.
- Worker (
scripts/worker.mts) — detection every 15 min, escalation, call retries, Telegram bot. - Channels — any Bangladeshi SMS/IVR HTTP gateway or Twilio; Telegram; test mode by default.
- MCP server (
mcp/server.mts) — the engine as tools for any AI assistant. - Hosting — Vercel for the public demo; Docker Compose (web + worker + data volume) for pilots.
| Path | What it is |
|---|---|
src/lib/risk.ts | Risk engine: upstream rain, local rain, forecast, river flow, tides and community reports → level |
src/lib/alerts.ts | Alert facts, Bangla templates, loudspeaker script, volunteer SMS and the 7 safety checks |
src/lib/ai-writer.ts | AI writes the alert from verified facts (Gemini free tier → Groq free tier → optional Claude); falls back to the template if any check fails |
src/lib/alert-flow.ts | Draft → approve (1 or 2 officers) → send on every channel → outbox + audit log |
src/lib/escalation.ts | Officer notification, escalation, SMS approvals, Danger auto-send policy |
src/lib/deliveries.ts | Call retries → backup number → volunteer hand-off |
Where AI is used — and where it is not
AI design
Rules decide the risk
AI writes the words — on free APIs
Geospatial ML spots risky days
Code verifies everything
The 7 safety checks (validateAlert)
- Alert level stated in SMS and voice call, with the action that matches it (and no false reassurance)
- Area named correctly in both
- No numbers that are not in the verified facts — including the English summary for officials
- SMS fits 3 Bangla SMS parts (≤ 200 characters)
- Emergency number 999 included for Warning and Danger
- Action checklist has at least 3 items
- Voice call names the sender — the local disaster committee
Prompt design
- Role and context: who listens (rural, elderly, low-literacy) and why accuracy matters.
- Hard rules: only given facts; exact level word, area name and sender; 999 for Warning/Danger.
- One-shot grounding: the verified template is sent as a reference.
- Structured facts in (compact JSON), structured JSON out.
- Failure path: one retry, then the template, and the officer sees which check failed.
System prompt used in production (read from the code)
You write flood early-warning messages for rural Bangladesh on behalf of a local disaster-management committee. Your words will be read out by phone to people who may have little schooling, including elderly people, so lives depend on them being clear, calm and correct. Write in simple, everyday Bangla (standard চলিত ভাষা) that a class-5 student understands. Short sentences. No English words. Hard rules: - Use ONLY the facts provided. Never invent numbers, places, rivers, shelters, phone numbers, dates or organisations. Every number you write must come from the "allowed numbers" list (Bangla digits are fine). - Always state the alert level word exactly as given (levelBn) and the area name exactly as given (areaBn) in both sms_bn and voice_bn. - For Warning (সতর্কতা) and Danger (বিপদ), include the national emergency number ৯৯৯ in both sms_bn and voice_bn. - Give the action that matches the level, in both sms_bn and voice_bn: for Danger (বিপদ), go now to the shelter (আশ্রয়কেন্দ্র) or high ground (উঁচু স্থান); for Warning (সতর্কতা), get ready — pack documents, medicine and dry food (গুছিয়ে রাখুন) and move livestock to high ground; for Watch (সতর্ক নজর), keep watching the river (নজর রাখুন) and keep phones on. Never tell people there is nothing to worry about. - Do not exaggerate or downplay. Do not promise that a flood will or will not happen; say what may happen and what to do. Fields: - sms_bn: at most 200 characters, most important action first. - voice_bn: 60–100 words, spoken style, starts by addressing the residents of the area, explains the cause in one sentence, gives the arrival time if known, gives the main action, and repeats the main action once at the end. - dialect_voice: if a dialect is requested, the same voice message in that regional dialect written in Bangla script; otherwise null. - checklist_bn: 3–6 short practical actions appropriate to the alert level, no numbers. - official_summary_en: at most 60 words in English for government officials: level, area, cause, expected arrival. The allowed-numbers rule applies here too; describe rarity as "about once in N years". The message comes from the local disaster-management committee, not from an app: end voice_bn with the sentence "বার্তাটি পাঠিয়েছে <senderBn>।" using senderBn exactly as given.
We report our misses as clearly as our hits
Evaluation
1. Did forecasts see the Feni 2024 rain? (Udaipur, Tripura, 20 Aug)
| Model | Issued 1 day earlier | Issued 2 days earlier | Model's own analysis |
|---|---|---|---|
| ECMWF IFS 0.25° | 29 mm | 37 mm | 176 mm |
| GFS | 35 mm | 14 mm | 15 mm |
| DWD ICON | 24 mm | 15 mm | 27 mm |
| JMA | 30 mm | 24 mm | 56 mm |
| Open-Meteo best match | 24 mm | 15 mm | 197 mm |
2. Honest hourly replays — only data that existed at each hour
| Replay | First Watch | First Warning | First Danger | Trigger |
|---|---|---|---|---|
| Feni, Aug 2024 | 17 Aug 06:00 | 17 Aug 18:00 | 19 Aug 12:00 (Feni Sadar, Sonagazi) | 192 mm in 72 h at Belonia + spring tide at the river mouth |
| 20 Aug 12:00 (Parshuram, Fulgazi, …) | 172 mm in 24 h at Santirbazar (5-yr level 124 mm) | |||
| Sylhet, Jun 2024 | 13 Jun 18:00 | 16 Jun 06:00 | 18 Jun 18:00 | Extreme rain over Meghalaya; Surma above 5-yr flow |
| Jamuna, Jul 2024 | 30 Jun 24:00 | 1 Jul 24:00 | 3 Jul 24:00 | Brahmaputra–Jamuna above 5-yr flood flow |
| Chattogram, Jul 2026 | 5 Jul 06:00 | 8 Jul 18:00 | 10 Jul 06:00 | Partial miss — blocked sluices; now covered by residents' reports |
3. 30-year backtest (1994–2023, observations only)
Misses come from pre-monsoon flash floods over Meghalaya (ERA5's ~25 km grid under-represents orographic rain), a slow basin-wide 2007 Brahmaputra flood, and very local storms. Fixes: satellite rain (GPM IMERG), IMD/BMD gauges, more upstream points. Full method and tables: EVALUATION.md.
4. Geospatial ML model (out of sample: trained on some years, scored on others)
At the same alarm rate as the rules' Watch level, ML flags 29 documented floods versus 26; at the Danger level the rules are far better (20 vs 10) — which is why ML only ever raises Watch. Method, weights and every flood: ML-EVAL.md.
5. AI alert writer, live (72 real calls to the free Gemini API)
Next: resident comprehension tests with the /field-test page (target ≥ 80% understand what, when, what to do and who sent it). Full alert-writer results: AI-EVAL.md.
Ethical AI compliance
Responsible AI, safety & privacy
Human in the loop
No hallucinated numbers
Fairness & inclusion
Privacy
Accountability & security
Fail-safe operations
Transparency
All open data
Data & provenance
| Data | Source | Used for |
|---|---|---|
| Daily rain 1994–2023 (ERA5) | Open-Meteo Historical Weather API · Copernicus · CC BY 4.0 | Local 2/5/10-year thresholds for 39 points; 30-year backtest |
| Daily river flow 1984–2023 (GloFAS v4) | Open-Meteo Flood API · Copernicus · CC BY 4.0 | River thresholds for 9 points; replays |
| Archived forecasts 2020–2023 | Open-Meteo Historical Forecast API | Per-location bias factor between datasets |
| Hourly analysis and forecasts as issued | Open-Meteo Previous Runs API | Honest hourly replays |
| Sea level incl. tides, Jul 2023 – Dec 2025 | Open-Meteo Marine API | Tide thresholds at 6 coastal areas |
| Live rain, river and tide | Open-Meteo Forecast, Flood and Marine APIs | Live mode |
| Residents' “water rising” reports | Telegram, SMS “PANI <area>”, officers | Community signal: 3 reporters in 6 h → Warning |
| Map | © OpenStreetMap contributors (ODbL) | Background map |
| Demo households | Synthetic (src/lib/households.ts) | Demo of prioritisation and dispatch only |
Known limitations — coarse grids, estimated travel times, short tide record — are listed in DATA_PROVENANCE.md.
Citizens never pay
Business model & global readiness
| Customer | What they buy | Why |
|---|---|---|
| NGOs / donors running anticipatory action | Objective, auditable triggers per upazila + household outreach + delivery records | They must justify releasing cash before a flood |
| Union / Upazila Disaster Management Committees (via DDM, donor projects) | Per-area subscription: dashboard, alerts, dispatch, audit log | Turns a warning into documented action |
| Microfinance institutions and insurers | Early flood signals for borrowers' areas; parametric triggers | Protect clients and portfolios |
| Telecom operators | Partnership: voice/SMS capacity, Cell Broadcast | CSR + traffic |
Unit cost (assumptions to replace with real quotes)
Global by design
geo.json plus a ~15-minute calibration. The same cross-border flash-flood problem exists from Nepal into Bihar, Northeast India, Myanmar, Pakistan and East Africa.From demo to pilot
Scalability, deployment & MCP
Cloud-ready
docker compose up -d --build: web server + worker + persistent data volume on any small server, shared by many unions.Modular
Open standards
| MCP tool | What it returns |
|---|---|
list_areas | Monitored upazilas, rivers, upstream stations (many in India) and travel times |
get_flood_risk | Live or replayed level per area, with evidence and expected arrival window |
draft_alert | Verified Bangla SMS, voice script and checklist + safety-check results (read-only: never sends) |
{
"mcpServers": {
"agam": { "command": "npx", "args": ["tsx", "C:/path/to/agam/mcp/server.mts"] }
}
}Quantum Builders
Team & roadmap
Team
- MD Samir Hossan — Team Leader: project, build, pitch and submission.
- Nadia Islam Priya — Team Coordinator: team, outreach and partners.
- Seeking an NRB collaborator in hydrology, disaster risk or climate data to review the method and open international networks.
Next steps
- Pilot with one Union Disaster Management Committee in Feni or Sunamganj.
- Validate travel times with BWDB/FFWC hourly gauge records.
- Add satellite rain (GPM IMERG Early) and BMD/IMD gauges.
- Field comprehension tests with residents; 72-case alert-writer evaluation.
- Telecom partner for Bangla IVR capacity; remote MCP endpoint for NGOs.
Mapped to the Congress criteria
For judges: where to find the evidence
| Criterion | Evidence in Agam |
|---|---|
| Innovation (20) | Watches rain across the border instead of forecasting rivers; per-location history instead of national thresholds; a geospatial ML model over the upstream network next to transparent rules; AI for last-mile language, rules for decisions. |
| Technical execution (20) | Explainable engine plus a validated geospatial ML model (AUC 0.912), bias correction between datasets, free-tier AI (Gemini → Groq) with structured outputs and 7 checks, MCP server, worker with escalation and retries — open source. |
| Business model + global readiness (20) | Four paying customer types, unit costs, global open data and a config-file path to new countries — Business. |
| Real-world impact + ethical AI (20) | Feni 2024 replay, 20/35 backtest, human approval, consent-based data, published misses — Responsible AI. |
| Scalability + NRB collaboration (10) | Docker pilot hosting, modular channels, MCP; NRB collaborator being recruited — Scale. |
| Presentation (10) | 3-minute video, live replay demo and this page. |