I know what waterlogging feels like. If you travel through New Town and Kaikhali in the monsoon you probably do too.
I have reached college late more times than I want to count. I have walked into exams soaked through. Once my bus broke down in the middle of a flooded road and there was no way forward except on foot. I walked in water up to my knees and spent the whole time thinking about what was under it. I got to college. I did not feel okay for the rest of the day.
What stayed with me was not the rain. It was that I could not know. The forecast said rain. It always says rain. It never told me that leaving at eight and leaving at eleven were two very different trips.
Then I read about Cyclone Dana. In October 2024 the mayor of Kolkata said that high tide and continuing rain could slow drainage. The city's drains empty into the Hooghly river. When the river is high the water stays on the road. I had never once checked a tide table before leaving home. That is where Jowar started.
What it does
You pick one of 8 areas, a day and an hour. Jowar adds up the forecast rain in a four hour window around your departure and checks whether a Garden Reach high tide falls near it. Then it gives one answer: Lower risk, Caution or High risk. It shows the reasons and a better time to leave if there is one. A bar for every hour of the day shows the whole picture.
The rule is simple on purpose. Rain gives zero to three points at 5, 15 and 30 millimetres. A nearby high tide adds one point when it is raining. Three points is High risk. It is a rules based risk window. It is not AI and it is not a flood prediction.
How it runs on AWS
One Lambda function written in Python does the work. API Gateway exposes it as an HTTP API. DynamoDB keeps a copy of the forecast for each area so the weather service is not called for every visitor. EventBridge Scheduler refreshes that copy every 30 minutes and CloudWatch keeps the logs. The page itself is static and sits on Vercel. Everything else runs in the Mumbai region.
I am a student and I did not want a public API to turn into a bill. So I set API Gateway to 5 requests a second with a burst of 10 and added a budget alert. The function can read and write one table and nothing else. When someone taps whether an area flooded I store the area, the hour, the level shown and a yes or no. No names. No locations.
What went wrong
My first test showed the message "The service did not respond". The page was still pointing at a placeholder instead of my real API address. It took a minute to fix. It also taught me to make errors say what is actually wrong.
The bigger problem was accuracy. I built a Replay tab that runs real past floods through the same scoring. For Cyclone Dana the weather model shows about 40 millimetres where the Met office recorded over 100. For the record rain of 23 September 2025 it shows under 1 millimetre in each hour where IMD reported a 98 millimetre hour. Jowar says Lower risk for that hour. I left that on the page and in the README. A tool that hides its worst day is not worth trusting.
The tide table is also typed by hand from a public prediction site and covers 11 to 20 October only. That is a real limit and I say so.
I took help of Claude as a coding assistant. The problem and the choices are mine.
What I would do next
Check the thresholds against IMD and KMC guidance. Add a second rain source. Use real gauge readings where they are public. Ask commuters to confirm floods so the feedback means something.
I also want to add heatwave warnings. Kolkata does not only struggle in the rain. Some summer afternoons are not safe to be outside. The same idea would work there: pick an area and an hour and see when it is better to go out, using temperature and humidity forecasts.
Next monsoon I want to open Jowar before I leave for college. Right now I would still be guessing.
Loading article