Inspiration
Glendale's hazard maps are public. CAL FIRE, the California Geological Survey, FEMA and the state dam program have all mapped the city. But they live on different agency sites, use regulatory language, and are almost all in English.
Glendale is also one of the most Armenian-speaking cities in the country, has a large Spanish-speaking community, and a high share of older residents. The people most at risk in a wildfire or earthquake, like an older person living alone in the foothills with no car, are the least likely to ever see the map for their own street.
I wanted to close that gap: your address, your household, your plan, in your language.
What it does
ReadyHome Glendale walks a resident through five short screens:
- Language: English, Armenian (Հայերեն) or Spanish. Korean, Tagalog and Persian are next.
- Home: type a Glendale address and pick a housing type (upper-floor apartment, house, mobile home…).
- Household: six yes/no questions: someone 65+, uses a wheelchair or walker, needs power for medical equipment, no car, pets, lives alone. These answers never leave the device.
- Hazards at your home: live results for wildfire, fault rupture, liquefaction, landslide, flood, dam inundation and post-fire debris flow, explained in plain language with the source agency on every card.
- Your plan: a checklist built from your hazards and your household. A dam inundation zone adds "know your route to high ground." A Very High fire zone plus a house adds "clear 5 feet around your home." Medical equipment adds "register with Glendale Water & Power."
Every screen can be read aloud (ElevenLabs), text can be enlarged, and the app prints a fridge sheet in the chosen language for residents who don't use smartphones. The last screen links to the official channels people should sign up for: Alert LA County, Glendale's Everbridge, Genasys Protect, MyShake, Ready LA County, Listos California (Cal OES) and the Red Cross.
How I built it
- Data: the Glendale GIS MCP snapshot: 21 datasets covering hazard zones, city resources and the city boundary. I call its Python
corepackage directly from my server, so lookups are fast, need no API key, and work offline once the snapshot is downloaded. Only address geocoding goes to the City of Glendale's live geocoder. - Backend: Python with Starlette and Uvicorn.
/api/lookupgeocodes the address, runshazards_at_locationandnearest_resources(closest fire station, library, hospital), then passes the raw zones through my interpretation layer. - Interpretation layer: the GIS server deliberately doesn't interpret risk, so this is where ReadyHome's judgment lives. It's deterministic on purpose: every sentence the app can show is known in advance, so it can be translated and reviewed by native speakers.
- Frontend: a single accessible HTML page using the Atkinson Hyperlegible typeface (designed for low vision) with Noto Sans Armenian, large tap targets, a large-text mode, and print styles for the fridge sheet.
- Read-aloud: a server endpoint calls ElevenLabs (Eleven v3 for Armenian, Multilingual v2 for English and Spanish) and caches each sentence as an MP3, so each line is generated only once.
- Offline demo mode: four real sample homes with pre-computed results, so the demo still works if venue Wi-Fi or the city geocoder goes down.
Challenges
- "In a zone" doesn't always mean "at risk." FEMA's Zone X counts as a match in the raw data but means minimal or moderate flood hazard. Zone D means not studied. CAL FIRE's "NonWildland" means unzoned, not fireproof. I wrote explicit rules (with tests) so the app never shows a low-risk zone as dangerous, and never shows "not mapped" as "safe." A layer that fails to load shows "couldn't check" instead of a false all-clear.
- Missing data is also information. No current USGS post-fire debris-flow assessment covers Glendale. Instead of hiding that, the app says so and still explains post-fire mud risk.
- Armenian speech. Windows has no built-in Armenian voice, so the browser fallback went silent. I moved read-aloud to ElevenLabs' Eleven v3, which supports Armenian, and debugged API key permissions and voice IDs along the way.
- Making read-aloud feel instant. Sending a whole screen at once meant a long wait, and pressing Stop didn't cancel a request already in flight. I rebuilt the player to split each screen into short chunks, start the first one right away, load the next while one plays, and cancel everything the moment you press Stop or change screens.
What I learned
- Hazard data is the easy part. Interpretation and trust are the product. Saying "maps, not a guarantee" on every screen, and linking to official alerts instead of rebroadcasting them, matters as much as the lookup.
- Accessibility decisions compound: a readable typeface, large targets, plain sentences, audio and paper each reach a different resident.
- Keeping personal answers on the device made it easier to ask about disability and medical needs at all.
Accomplishments that we're proud of
- Real data, end to end, in one afternoon. Type a Glendale address and ReadyHome checks it against seven official hazard maps (CAL FIRE, California Geological Survey, FEMA, CA Dept. of Water Resources and USGS) and finds your nearest fire station, library and hospital. Nothing is mocked in live mode.
- A plan that changes with the people in the home. The same address produces a different checklist for a family in a house than for an older resident alone on the 5th floor with no car. Toggle "power for medical equipment" and the plan adds backup power and GWP registration on the spot.
- Armenian, not as an afterthought. Every hazard explanation, every screen and the printed fridge sheet work in Հայերեն, with Armenian read aloud through ElevenLabs Eleven v3. For many Glendale seniors, this is the first time their hazard map has been explained in their own language.
- Honest about uncertainty. "Not mapped" never becomes "safe," FEMA's unstudied Zone D is labeled "not studied," a failed lookup says "couldn't check," and the app points to official alerts instead of pretending to be one. Eight automated tests lock these rules in.
- Built for people who don't use apps. Large text, read-aloud, plain sentences and a printable fridge sheet mean a resident without a smartphone can still walk away with their zone, contacts and plan on paper.
- Private by design. Questions about age, disability and medical needs are answered on the device and never sent to the server. Only the address is used for the lookup.
- Demo-proof. An offline mode with four real Glendale homes means the demo works even if Wi-Fi or the city geocoder goes down.
What's next
- Native-speaker review of every Armenian and Spanish string, and full translation of plan details.
- Korean, Tagalog and Persian.
- A phone line that reads your plan aloud for landline-only households.
- Kiosk mode for libraries and senior centers.
Built With
- cal-fire
- california-geological-survey
- claude
- css3
- eleven-v3
- elevenlabs
- esri
- fema
- geojson
- glendale-gis-mcp
- google-fonts
- html5
- httpx
- javascript
- model-context-protocol
- pydantic
- python
- shapely
- starlette
- usgs
- uvicorn
- web-speech-api
Log in or sign up for Devpost to join the conversation.