FloodFlow : Turning One Photo of a Flooded Road into Vehicle-Aware Guidance on AWS
Every monsoon, Indian drivers reach waterlogged roads with no way to know if their vehicle can make it through. FloodFlow turns a single road photo into vehicle-aware guidance: it compares the photo with a dry reference, estimates water depth, asks follow-up questions in English or Hindi, and suggests a safer route. Built and deployed on AWS with ECS on Fargate, CloudFront, DynamoDB, S3, Bedrock and Polly by Team 3PLUS1.
TL;DR β Every monsoon, Indian roads turn into rivers, and drivers are left guessing whether their vehicle can make it through. FloodFlow turns one photo from the road into vehicle-aware guidance and a safer route. It is built and deployed on AWS: Amazon ECS on Fargate behind Amazon CloudFront, Amazon DynamoDB and Amazon S3 for data, Amazon Bedrock for reasoning, and Amazon Polly for bilingual voice.
π₯ Demo video: https://youtu.be/zk7y6xwv5GMBuilt by Team 3PLUS1 for the WeMakeDevs Γ AWS Environmental Hacks (Bharat Builds Tour) Β· Track: Heat & Water
The moment that started it
It's raining hard in Delhi. You're driving home on a road you take every day, and suddenly it's gone, replaced by brown water stretching from kerb to kerb.
The car ahead pushes through. A scooter stalls halfway. You stop at the edge.
Go through, or turn back?
You have a few seconds to decide, and almost nothing to go on. In that moment, every driver is silently asking four questions:
- How deep is it?
- Can my vehicle make it?
- What's hiding under the water?
- Is there a safer way?
Today's maps answer, at best, none of them. They might show a pin that says flooded. That pin doesn't know whether you're in an SUV, a hatchback or on a scooter, and that is the part that decides everything.
The real problem isn't the water. It's missing context.
The same 30 cm of water means very different things depending on what you drive. An SUV may get through. A hatchback risks pulling water into its engine. A scooter will likely stall and leave its rider standing in the flood.
And a wrong guess is expensive:
| Fact | Why it matters |
|---|---|
| 410+ known waterlogging points in Delhi aloneΒΉ | This is not an edge case. It happens on everyday roads, every monsoon. |
| βΉ1.5 lakh+ to repair a water-damaged engineΒ² | One bad decision can cost a family months of savings. |
| Engine damage from water is often not covered without an engine-protection add-onΒ³ | Many drivers find this out after the fact. |
If FloodFlow helps just 100 drivers a season avoid one engine repair, that's roughly βΉ1.5 crore in avoided damage. That estimate is illustrative and deliberately conservative, before counting tow calls, lost hours and people stranded in water.
What we built
FloodFlow connects three things that are never in the same place today: what you can see, where you are, and what you drive.

1. Report from the road, bound to a real place
A citizen opens FloodFlow and takes a photo of the waterlogged road. The app binds a fresh GPS fix to that photo, so every report belongs to a real location and can't be dragged around the map.
2. A photo becomes evidence
FloodFlow's analysis engine compares the uploaded photo with a dry reference image of the same scene. It segments the water, finds usable visual references such as kerbs, wheels and road edges, and produces an estimated depth range. The user can open the details and see both photos side by side, along with the measurements behind the result.

3. Your vehicle, your answer
Next, the driver picks a vehicle: any of hundreds of cars, scooters and motorcycles common in India, plus its age. FloodFlow pulls up the vehicle's reference specifications and relates them to the evidence.
4. It asks back, in English or Hindi
A photo can't capture everything. So Amazon Bedrock asks a few short follow-up questions to fill the gaps: Where does the water reach? Is it moving? Any open drains or stalled vehicles? Questions can be shown in English or Hindi, and Amazon Polly reads them aloud. Each answer gives the analysis engine more to work with, and confidence in the assessment grows.
5. Guidance written for your vehicle
The result isn't a generic warning. It's clear guidance for this exact vehicle: how risky the crossing is, why, and what to do instead. Switch from a Hyundai Creta to a Honda Activa and the guidance changes with it.
6. One report helps everyone behind you
With one tap, the report is saved to a shared community map. Nearby observations are grouped into a single hotspot, so the map stays readable. Each hotspot has its own page with every report, photo and finding at that spot.
7. A safer way around
Finally, drivers can plan a journey. FloodFlow fetches real road routes, checks each one against nearby reports, and with one tap on Start Navigating hands the chosen route to Google Maps.
Under the hood: built entirely on AWS
FloodFlow is a production deployment on AWS, not a local prototype calling a few APIs. Here's how a request flows:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
User (phone / web)
β HTTPS
βΌ
Amazon CloudFront βββΊ Application Load Balancer
β
βΌ
Amazon ECS on AWS Fargate
βββ Web app container (Next.js)
βββ Computer-vision container (Python Β· OpenCV Β· PyTorch)
β
βββββββββββββββββ¬βββββββββ΄ββββββββ¬βββββββββββββββββ
βΌ βΌ βΌ βΌ
Amazon DynamoDB Amazon S3 Amazon Bedrock Amazon Polly
(reports, archive, (evidence (scene context, (English & Hindi
accounts, garage) photos) questions, voice)
guidance)| AWS service | What it does in FloodFlow |
|---|---|
| Amazon CloudFront | HTTPS entry point for every user; fronts the whole application. |
| Elastic Load Balancing (ALB) | Routes traffic to the right container: web app or vision engine. |
| Amazon ECS on AWS Fargate | Runs both containers serverlessly. No servers to patch, scales with the season. |
| Amazon ECR | Stores the web and computer-vision container images. |
| Amazon EFS | Persistent shared storage for the running service. |
| Amazon DynamoDB | Source of truth for reports, the long-term report archive, accounts, sessions, saved vehicles and analyses. Active reports expire automatically with DynamoDB TTL, so the live map reflects current conditions while the archive keeps the history. |
| Amazon S3 | Private bucket for evidence photos. |
| Amazon Bedrock | Scene understanding from the photo, the follow-up conversation, and vehicle-aware guidance. |
| Amazon Polly | Neural, bilingual (English/Hindi) voice for the follow-up questions. |
| AWS Secrets Manager | Keeps runtime secrets out of images and code. |
| Amazon CloudWatch | Centralised container logs. |
| AWS CloudFormation Β· Terraform | The whole stack is infrastructure as code: reproducible and reviewable. |
Design decisions we're proud of
Geometry and language have different jobs. The computer-vision engine measures. Bedrock describes, asks and explains. We never let a language model invent a physical measurement. It works with the evidence, not instead of it.
Honest uncertainty beats false confidence. FloodFlow never says "safe to cross." It shows an estimated range, the evidence behind it, and what to do. A wrong "yes" in a flood is worse than an honest "be careful".
Bedrock with guardrails. Bedrock receives the structured evidence and the vehicle context, and its output is validated before it reaches the user. If a response doesn't fit the expected shape, FloodFlow falls back to safe, server-owned guidance instead of showing something half-formed.
Language is accessibility. Many of the people most affected by waterlogging are more comfortable in Hindi than English. Bilingual questions and Polly's voice make the app usable by more people, at the moment they need it most.
Serverless by default. Waterlogging is seasonal and spiky. Fargate, DynamoDB on-demand and CloudFront let FloodFlow sit quietly most of the year and absorb the load when the rain arrives, without anyone managing servers.
Here's a simplified example of how a Bedrock call with an image looks using the AWS SDK for JavaScript (Converse API):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import { BedrockRuntimeClient, ConverseCommand } from "@aws-sdk/client-bedrock-runtime";
const client = new BedrockRuntimeClient({ region: process.env.AWS_REGION });
const response = await client.send(new ConverseCommand({
modelId: process.env.BEDROCK_VISION_MODEL_ID,
messages: [{
role: "user",
content: [
{ image: { format: "jpeg", source: { bytes: photoBytes } } },
{ text: "Describe the visible road, traffic and water conditions as structured JSON." },
],
}],
}));What we learned
- The hardest part wasn't the AI. It was trust. Every screen had to answer "why should I believe this?" Showing the dry reference next to the wet photo did more for trust than any accuracy number.
- Context is a conversation. A photo alone leaves gaps. Letting Bedrock ask two or three targeted questions turned a weak signal into a useful one.
- Infrastructure as code pays off under deadline pressure. Because the whole stack is defined in CloudFormation, a failed deployment can be torn down and recreated cleanly in minutes instead of debugging a half-built environment by hand.
- Design for the person standing at the water's edge. Big targets, few steps, plain language, and no login required to get an answer.
What's next
- Community verification: corroborate reports with more photos before they go public.
- Live route alerts: notify drivers when new waterlogging appears on their way.
- Hotspots for cities: share recurring flood points with municipal teams so the worst spots get fixed first.
- More cities, more vehicles: expand dry-reference coverage and vehicle data across India.
Try it
π₯ Demo video: https://youtu.be/zk7y6xwv5GM
Same water. A different risk for every vehicle.
FloodFlow, by Team 3PLUS1.
Sources
- Delhi Traffic Police data, as reported by The Week (June 2025): 410 waterlogging points identified in Delhi. https://www.theweek.in/wire-updates/national/2025/06/19/des66-dl-pwd-waterlogging.html
- Autocar India, "Hyderabad Rains: What you need to know about car repairs due to flood damage": engine repair costs can exceed βΉ1.5 lakh. https://www.autocarindia.com/auto-features-amp/branded-content-hyderabad-rains-what-you-need-to-know-about-car-repairs-due-to-flood-damage-418990
- ICICI Lombard, FAQs on hydrostatic lock insurance: standard policies exclude hydrostatic lock; engine-protection add-ons provide cover. https://www.icicilombard.com/motor-insurance/car-insurance/blogs/faqs-on-hydrostatic-lock-insurance
FloodFlow provides decision support from community reports and photo evidence. It does not certify that crossing any water is safe. When in doubt, turn around.
#aws #amazon-bedrock #serverless #ecs #fargate #dynamodb #climate #india #hackathonEnjoyed reading this content? Let the author know!
Your likes, comments, shares, and saves help creators reach more builders.
Loading recommendations
Loading article