What Inspired Me
A few months ago I was watching news coverage of a flash flood. People were stranded on rooftops. The thing that stuck with me wasn't the flood itself — it was an interview with a woman who said she had no idea it was going to be that bad. She had her phone. She had signal. She just didn't know what to do with the information she had.
That's the problem I wanted to solve. Not "more weather data" — there's plenty of that. The gap is between knowing something is coming and knowing what to do about it.
What I Built
Vayu is a real-time disaster intelligence app that turns raw weather and disaster data into personalized action plans.
It pulls from 7 live data sources — Open-Meteo, USGS earthquakes, NASA EONET satellite events, UN GDACS disaster alerts, OpenStreetMap, air quality feeds, and Google Gemini AI — and combines them into a single risk score (0–100) for your exact GPS location.
But the number isn't the point. The point is what happens next:
- 24-hour risk prediction — shows you hour-by-hour when risk peaks so you act before it hits, not during
- AI survival plan — Gemini reads your location, conditions, and nearby disasters and writes specific steps for your situation
- AI chatbot — you can ask it anything ("my basement is flooding, what do I do") and it answers with your context
- Evacuation routing — one tap draws a driving route from your location to the nearest shelter or hospital
- Family Safety Network — share a code with family, everyone marks themselves Safe / Need Help / Evacuating in real time, no account needed
- Offline support — it's a PWA with a service worker, so it keeps working when the network goes down during an actual disaster
How I Built It
Frontend: React 18 + Vite. Framer Motion for animations, Leaflet for the map, vite-plugin-pwa + Workbox for offline/PWA.
Backend: Python Flask deployed on Render. Google Gemini 1.5 Flash for the AI plans and chatbot. Has a full rule-based fallback so it never crashes even without the AI key.
Routing: OSRM public API for evacuation routes. Open-Elevation for elevation-based flood risk. jsonblob.com for the family network real-time sync.
Risk algorithm: A weighted composite score built from scratch — temperature extremes, heat index, wind speed, precipitation, weather codes, nearby earthquake magnitude, active disaster events within 800km, and AQI. Every factor has tuned weights based on actual disaster impact research.
The whole thing runs at zero cost. Every API used has a free tier that covers real usage.
Challenges I Faced
The hardest part was the risk algorithm. Getting a single number that actually means something is harder than it sounds. Too sensitive and it cries wolf on every rainy day. Too conservative and it misses real danger. I went through a lot of tuning to get thresholds that feel meaningful — where a score of 70 actually feels urgent and a score of 20 actually feels calm.
Offline + live data is a contradiction. A disaster app that doesn't work when the internet is down is almost useless. But all the useful data is live. I solved this with Workbox stale-while-revalidate caching — the app serves cached data immediately, then updates in the background when a connection exists.
Getting Gemini to return clean JSON every time was trickier than I expected. The model sometimes wraps responses in markdown code fences or adds commentary. I had to build a parser that strips all of that and validates every required field before serving it to the frontend — with a complete rule-based fallback if anything goes wrong.
The family network without a backend — I didn't want to spin up a database just for this feature. Using jsonblob.com as a free key-value store was the right call. It's not perfect but it's instant, free, and requires zero setup from users.
What I Learned
I went into this knowing React and some Python. I came out understanding:
- How to design a multi-source data pipeline where every fetch can fail independently without breaking the whole app
- How to prompt an LLM for structured output reliably (and handle it when it's not)
- How PWA service workers actually work — not just the concept but the real caching strategy decisions
- That the hardest part of a disaster tool isn't getting the data — it's making it actually useful to someone who is scared and needs to act fast
What's Next
- Real-time WebSocket updates instead of polling
- SMS alerts for people without smartphones
- More languages (the people who need this most often aren't English speakers)
- Crowdsourced risk validation — let community reports influence the risk score
Built solo in under a week for WeatherWise Hack 2026.
Built With
- flask
- framer-motion
- gdacs-api
- google-gemini-ai
- leaflet.js
- nasa-eonet-api
- nominatim
- open-elevation-api
- open-meteo-api
- osrm
- overpass-api
- progressive
- python
- react
- render
- usgs-earthquake-api
- vercel
- vite
- web
- workbox
Log in or sign up for Devpost to join the conversation.