SaafSaans
“Is it safe for me to go outside right now — and if not, when?”
Every question passes a trilingual injection guard before anything else reads it — English, Devanagari Hindi and Hinglish patterns, matched only after Unicode normalisation strips invisible characters, with negation checks so “do not ignore your doctor’s instructions” is never flagged as an attack. It was tuned on the sentences a health app must never refuse — each narrowing records the sentence that forced it.
Entered at Build with AI (Elastic × GDG Cloud New Delhi, 18 July 2026) as a four-tab Streamlit app that already existed, then rebuilt over the next three days into what runs today. It lives on one small machine that suspends when idle and wakes on request, so the first visit after a quiet spell takes a moment. It went down on 21 July and was redeployed on 9 August; while it was down, this page said so rather than leaving you to find out by clicking.
RuleEvery reading labelled live, cached, or no reading

Captured live 11 Aug 2026, 5:00 PM. Cropped above a time-window strip showing a defect under repair.
- Not claimed
- Medical advice · uptime
What it does, and what it refuses
Works now
- Every reading is labelled with where it came from: LIVE, CACHED, or NO READING
- Picks one whole reading and never blends two feeds, so a figure never wears one station’s name and another’s timestamp
- An AQI ladder and a persona ladder both run, and the stricter verdict wins
Known gaps
- Two stations map to no feed at all — Ashok Vihar and Nehru Nagar. 19 are live
- The Hindi draft ships behind a bilingual banner: no Hindi speaker has reviewed it
- The prompt guard names the bypass it does not stop — one Cyrillic letter passes every pattern
- The time-window strip recommends late morning at 5:00 PM. A defect, under repair, and stated
- No serialised evaluation artefact exists — there is no stored run to quote
Not claimed
- Medical advice
- uptime
The breathing rates behind the exertion term are EPA’s published figures. Which activity counts as which intensity is not: that mapping is a judgement, and the code says so in as many words. Every weight ships carrying either its source or its disclaimer, and a test fails the build if one carries neither.
Discussion
Comments need JavaScript and a GitHub account — the same account system the site's own code already lives in. Without either, read or start the thread directly on GitHub.

