Codex Build House · Pune · Briefing
Maharashtra Civic Alerts
महाराष्ट्र नागरी सतर्कता
A bilingual public-information hub that shows official warnings by district, says how fresh each source is, and refuses to treat silence as safety.
36Districts indexed
5Official sources tracked
12Citizen-service directories
EN + MROriginal text, no AI rewrite
- 01 Problem vs today’s tools
- 02 What the hub returns
- 03 Source coverage matrix
- 04 Operating model
- 05 Place-resolution table
- 06 Resident information model
- 07 Public limits
- 08 Review path
Problem
Residents should not have to guess which feed is live
| Resident question | Typical today | Failure mode | What this hub answers |
|---|---|---|---|
| Is this source live? | Empty map or last screenshot | Stale data looks like all-clear | Per-source freshness and status |
| Where does it apply? | City or village name on a poster | Wrong district, false precision | District alias, dual-candidate when needed |
| What should I do? | Scattered agency pages | Instructions rewritten or dropped | Original CAP text, EN/MR labelled |
| Who issued it? | Reposted WhatsApp card | Lost attribution | Source identity + official directory |
| Is the warning still on? | Old graphic stays in chat | Cancelled alert still believed | Actual / Update / Cancel / expiry |
Solution
One session returns status, place, bulletin and services
| Step | Input | Output | Honesty rule |
|---|---|---|---|
| 1. Identify the site | — | Independent banner + NDMA SACHET link | Not a government website |
| 2. Read latest status | — | healthy / degraded / stale + source ages | Partial coverage is expected |
| 3. Find a place | Pune, Sawantwadi, Navi Mumbai, Marunji | District ID(s), precision = district-alias | No invented village polygons |
| 4. Read the bulletin | District filter | Active Actual records only | 0 alerts ≠ all-clear |
| 5. Open services | Power, water, health, transport… | Official portal + live vs directory label | Directory is not a live incident feed |
Coverage matrix
Five official sources, two intentionally disconnected
| Source | Kind | Runtime | What is stored | Resident meaning |
|---|---|---|---|---|
| SACHET / NDMA CAP | Public warnings | Connected | CAP lifecycle + retained cancels | Primary official bulletin |
| IMD | Weather notices | Connected | Official text only | No invented severity |
| INCOIS | Ocean / quake | Connected | Arabian Sea relevant events | Pacific quakes excluded |
| CWC FloodWatch | Flood | Disabled | No adapter | Use official directory |
| CPCB AQI | Air quality | Disabled | No key / not enabled | Concentration ≠ AQI warning |
Operating model
Read-only relay: collect, retain, expire, never invent
- 01
Cron every minute + heal-on-read if stale
- 02
Bounded collectors, byte/time limits, lease
- 03
CAP Actual / Update / Cancel / expiry
- 04
D1 snapshot, token-owned write
- 05
Public GET APIs + bilingual UI
| Control | Rule |
|---|---|
| Host | Cloudflare Workers + D1. No Vercel. No public refresh POST. |
| Recovery | Background ingest when enabled sources are older than 5 minutes, 60s cooldown. |
| Fixtures | npm run demo only. Production rejects demo mutation routes. |
| Empty bulletin | UI states it is not an all-clear. Call 112 in danger. |
Place resolution
Typed names resolve to districts, not village polygons
| Query | Result | Precision | Why it matters |
|---|---|---|---|
| Pune | Pune | district | Direct district match |
| Navi Mumbai | Raigad and Thane | district-alias | Resident must pick one |
| Sawantwadi | Sindhudurg | district-alias | Town ≠ verified ward |
| Marunji | Pune | district-alias | Place maps to district only |
| Panaji | No Maharashtra match | — | Goa is excluded on purpose |
Information model
What the resident can actually know
| Surface | Fields shown | Not shown |
|---|---|---|
| Latest status | Overall mode, generation time, polling interval | Guarantee that the area is safe |
| Source health | ok/stale/disabled, last success, error class, record count | Raw upstream bodies or keys |
| Bulletin | Issuer, area, class, original instructions, expiry | AI paraphrase, village polygons |
| Citizen services | 12 categories, official URL, live vs directory | Statewide live power/water/AQI feeds |
| Phone guide | How to check device government-alert settings | A button that sends a cell broadcast |
Limits
Public “does / does not” so the demo cannot overclaim
| Does | Does not |
|---|---|
| Relay official public feeds with attribution | Speak as government or dispatch 112 |
| Keep cancel/expiry so old warnings die | Send carrier cell broadcast / WEA |
| Map places to 36 Maharashtra districts | Claim complete village or ward coverage |
| Label CWC/CPCB as disconnected | Invent flood or AQI alerts |
| Offer a labelled local fixture demo | Seed production with test alerts |
| Preserve original EN/MR wording | Rewrite emergency instructions with a model |
Review path
Open these in the review
Live demo — Cloudflare WorkersStatus → place search → source matrix → services
GitHub repositoryCollectors, CAP lifecycle, tests, operations
PowerPoint downloadSame tables in 16:9 PPTX
Back to the hubIndependent banner first
Judge sequence: identity banner → latest status → Navi Mumbai dual
district → Marathi → source health → npm run demo only if
live feeds are empty.