Inspiration
On the night of 30 June 2025, cloudbursts hit Mandi district in Himachal Pradesh. In Syathi village, no report says any warning arrived. A family's dog woke them around midnight, and more than 60 people got out before the slope came down (The Tribune).
More than 500 people died in Himachal's 2023 monsoon (HP Govt PDNA), yet the state had just 1 of India's 338 CWC flood-forecasting stations (CWC 2023). And sending is not the same as being heard: in Nepal's September 2024 floods, over 4 million alert SMS went out and 250 people still died. We wanted AI that serves the last mile, from a forecast to a family that heard the warning and knows where to go.
What it does
Pukaar (पुकार, "the call") turns a flood forecast into a spoken Hindi warning on every phone in a village, and shows who actually heard it.
- Watch: every 15 minutes it reads rain and river forecasts for five villages in Mandi district. Transparent rules set the level, never a model.
- Approve: a district officer approves in one tap. If they don't answer, the next officer is asked.
- Call: Amazon Polly speaks the alert in Hindi to every registered phone on Telegram.
- Confirm: each person taps "मिल गया" (got it). Silent phones get the alert again.
- Act: the alert names the nearest open safe place and a walking route. Villagers report back by voice, photo or text, even offline, and are asked "Are you safe?" afterwards.
Five AI agents, each with a hard "never" list
| Agent | What it does | Never |
|---|---|---|
| Drafting agent (Bedrock Nova, Strands) | Writes the Hindi alert into a fixed template; a checker rejects any number or place not in the decision trace | Set a level, pick recipients, send |
| Ask Pukaar analyst | Answers officers with a chart and a map from read-only tools | Set a level, pick recipients, send |
| Report agent | Turns villagers' Hindi voice or text into a type, a severity and a place | Mark a report verified |
| Guardrail screen (Bedrock Guardrails) | Blocks prompt injection and masks phone numbers; caught a live attack on 11 Oct 2026 | Delete a report |
| Watch agent | Finds faulty gauges: stale, flat-lined, impossible jumps, drift | Send anything |
Every tool call passes a Cedar policy and is logged. If a model fails, a fixed Hindi template goes out, so the warning never depends on AI.
Try it
- Live: https://main.d15r7ktz99l46x.amplifyapp.com
- Officer console: /login as
judge, passwordJudge-E5FCkUl3uY-2026. Press Start replay, open the alert, press Listen, then Approve. - Telegram: @PukaarRescuebot, send
/start gohar
How we built it
Python and FastAPI on AWS, one SAM stack: EventBridge Scheduler (sweep), Lambda, Step Functions (one approval workflow per alert), DynamoDB, Bedrock Nova with Strands Agents, Bedrock Guardrails, Polly and Transcribe (hi-IN), AWS IoT Core (ESP32 river gauges), AppSync Events and Cognito. The frontend is a React and TypeScript offline PWA with a MapLibre/three.js 3D map on real Himalayan terrain.
The level, in two lines. Rain is checked against IMD's bands, and the river against each village's own 1984-2024 discharge percentiles:
$$ L = \max\left(L^{\text{rain}},\ L^{\text{river}},\ L^{\text{gauge}},\ L^{\text{reports}}\right) $$
If two sources agree, the level goes up by one. It rises at once, and drops only after 45 calm minutes. 561 automated tests, 77/77 live smoke checks, and zero accessibility violations.
Challenges we ran into
- Testing a flood system without a flood: we replay real archived forecasts from 2023 and 2025 through the same live code, labelled REPLAY and never sent to real phones.
- Global models miss cloudbursts: they missed the 2025 Mandi event. Instead of faking a hit, we let verified villager reports and gauges raise a level on their own.
- Cheap phones and weak networks: offline queueing, small pages, and voice instead of text.
Accomplishments that we're proud of
- Live on AWS, not a mockup: a drill alert went from approval to a real phone.
- Up to 72 hours of warning before the July 2023 Beas flood peak in our back-test (Gohar), and at least 48 hours at Pandoh.
- An honest comparison: none of the public sources for SACHET, IMD, CWC or Google Flood Hub mention spoken alerts, per-person confirmation, officer approval of each alert, or villager reports. Pukaar does all four, and plugs in beside them through CAP 1.2.
What we learned
The hard part of early warning isn't prediction. It's the last mile: a warning has to be heard, understood and confirmed. Voice beats text in low-literacy communities, and AI is most useful when code decides and AI only helps people act.
What's next for Pukaar (पुकार)
Our 24-hour finale plan:
- Hours 0–8: a voice call with "press 1 to confirm" (Amazon Connect) for basic phones and people who can't read
- Hours 8–16: AI vision that reads villagers' photos of a marked rock by the stream and turns them into a water level
- Hours 16–24: SMS fallback, then a live drill on stage: forecast → approval → a judge's phone rings in Hindi
Built With
- amazon-api-gateway
- amazon-bedrock
- amazon-cognito
- amazon-dynamodb
- amazon-polly
- amazon-transcribe
- amazon-web-services
- aws-amplify
- aws-appsync
- aws-iot-core
- aws-lambda
- aws-sam
- aws-step-functions
- cedar
- fastapi
- maplibre
- open-meteo
- python
- react
- strands-agents
- telegram-bot-api
- three.js
- typescript
- vite
Log in or sign up for Devpost to join the conversation.