-
-
Chhaon (چھاؤں — Shade) pitch deck title slide, Smart City Hackathon Lahore 2026
-
How it works: message on WhatsApp, pick what happened, it lands on the map
-
Web report form — the WhatsApp-independent way to report a heat incident anonymously
-
Gap Dashboard: 0 officially recorded heat deaths vs 20 community-reported incidents
-
Live community heat-risk map with real-time heat-index stats for Lahore
-
Neighbourhood report detail — WhatsApp and web-form report counts for a zone
Inspiration
In 2022, at 50°C across Punjab province — home to roughly 120 million people — zero heat-related deaths were officially recorded. Fewer than 5% of all deaths in Pakistan are registered in any way, and heat-related deaths are especially likely to be filed under an unrelated cause such as cardiac arrest (Amnesty International, "Uncounted," May 2025 — full citation list here).
Lahore-specific ground truth exists only as scattered news snapshots: 72 people were admitted for heatstroke across five named Lahore public hospitals in a single 24-hour window in late May 2024 — a real, sourced number that vanished from public view the next day. There is no continuous, neighbourhood-level, publicly visible signal.
Outdoor labourers, street vendors, elderly residents in poorly ventilated housing, and informal-settlement dwellers are the most exposed to heat — and also the least likely to appear in a hospital admission record, let alone a national mortality count. A zero-friction reporting channel matters specifically for the people official data already misses.
What it does
- WhatsApp incident reporting — no separate app to install, no login, works on any phone that already has WhatsApp: send a message, drop a location pin, done.
- Live community heat-risk map — reports aggregated by neighbourhood, overlaid on real current/forecast heat-index data.
- Official-vs-Reported Gap View — the signature feature: a running, honest comparison between ground-reported signal and whatever official figures exist for the same period.
- Preventive alerts — the same channel in reverse: plain-language WhatsApp warnings to registered at-risk households/workers when a zone's heat index crosses a threshold.
- Anonymous by design — no names, no exact addresses, ever.
How we built it
A Python FastAPI backend with server-rendered Jinja2 templates, Leaflet.js for the map, and Tailwind for styling — deliberately no frontend build step. Reports arrive through Meta's WhatsApp Cloud API webhook, get geo-tagged via a shared location pin (or a typed neighbourhood as fallback), and are deduplicated automatically when a matching report lands in the same zone within a short time window, before landing in Firebase Firestore. A GitHub Actions cron job checks live Open-Meteo heat-index data against registered zones and sends preventive warnings when a threshold is crossed. The whole stack runs on genuinely free tiers, deployed on Vercel. Full architecture breakdown here.
Challenges we ran into
Two real infrastructure pivots, both forced by regional/platform constraints rather than a design change: Twilio's WhatsApp Sandbox trial isn't offered for accounts signing up from Pakistan, so the entire messaging layer — webhook signature verification, message parsing, outbound sends — was rebuilt against Meta's WhatsApp Cloud API directly. Separately, Render's free tier turned out to require credit card verification for both its Blueprint and plain Web Service deploy flows despite advertising a card-free tier, so deployment moved to Vercel instead, which needed the app restructured for a serverless execution model rather than a long-running process.
A third, standing constraint: Meta's WhatsApp Cloud API restricts an app in Development mode to exchanging messages with only 5 manually-added, OTP-verified phone numbers — bidirectionally — until the business completes Meta Business Verification and App Review, neither achievable inside the hackathon window. Rather than let the whole project's intake depend on a verification queue outside our control, the same reporting and alerting logic was built a second, fully independent way in: a plain web form and Web Push, reachable by anyone with zero Meta gating.
Accomplishments that we're proud of
The Gap Dashboard leading with a direct, single-glance comparison: zero heat deaths officially recorded in Punjab during 2022's 50°C heatwave, next to Chhaon's own live count, sourced and cited rather than asserted. Also: real duplicate-detection working end-to-end (not just designed) — two reports from the same neighbourhood within a short window merge into one record instead of double-counting — and keeping every demo/seed data point honestly distinguishable from real WhatsApp reports everywhere it's shown, rather than quietly blending the two to make the map look busier.
Also catching a real reliability bug through actual live testing rather than a demo that only ever ran once: mid-conversation WhatsApp state was originally kept in server memory, so a serverless cold start between two messages could silently forget an in-progress report and restart it. Found this by testing the deployed app over a real phone, root-caused it correctly, and fixed it by moving conversation state into the same persisted store pattern every other piece of data in the app already used — verified with a regression test that simulates a cold start on every message of the flow.
What we learned
How much of "making a data gap visible" is a data-honesty problem before it's a data-visualization problem — the hardest design decisions here weren't chart choices, they were about what not to claim (never presenting the official-figures panel as a live feed, never blending seeded demo reports into the real WhatsApp count, being explicit that this is a community-reported signal and not a medical or legal record).
What's next for Chhaon
Completing Meta Business Verification and App Review to lift the 5-recipient development-mode cap and open WhatsApp intake to the general public — everything else in the WhatsApp flow already works end-to-end today; this is a verification-queue wait, not a build task. Also an SMS/voice alert channel for outdoor workers and households without smartphones or a data plan — the WhatsApp alert layer covers connected users today, but reaching the least-connected residents means a channel that doesn't require a smartphone app at all. Also: hospital-partner integration, and a verified official data feed if one becomes available. The same architecture needs no Lahore-specific assumption — it runs for any Pakistani city with basic hospital/community reporting, because the underlying data gap (Amnesty's report covers Sindh and Punjab both) is documented as national, not local.
Note for judges: if you'd like to test the WhatsApp flow directly, send your number and we'll add it to the verified test-recipient list so you can message the bot and see your report land on the live map in real time. The web form at /report works for anyone right now, no allowlisting needed.
Built with AI-assisted development tools as part of the solo build process. All product, design, and data decisions are the author's own.
Built With
- fastapi
- firebase
- firestore
- github-actions
- jinja
- leaflet.js
- open-meteo
- python
- tailwindcss
- vercel
- whatsapp-cloud-api

Log in or sign up for Devpost to join the conversation.