Inspiration

One official alert reaches everyone the same way. It can't know that Maria reads Spanish and needs oxygen, that only Daniel has a car, or that Leo is at school.

Language is the plainest part of that gap. In FEMA's public IPAWS archive, 383 of 687 "Evacuation Immediate" messages from 2024 and 2025 went out in English only. When Spanish was sent, it could say less: in one, the English gives an address, and the Spanish says to evacuate to "TBD". The FCC says over 26 million people in the U.S. do not speak English very well or at all. And even a perfect translation doesn't say who picks up whom.

What it does

Family Alert Plan turns one official alert into one clear task for each family member, in their language.

  • A task for each person. From one English alert, Maria's phone shows her task in Spanish with the official English beside it, Daniel is asked to pick her up with her oxygen, Ana keeps calling Maria, and Leo gets short, calm sentences.
  • A family board shows who has answered and who is safe.
  • A backup before it's needed. Code sees that only Daniel can drive Maria. The AI finds another way in the family's own notes ("Ana has borrowed our neighbor's van"), code re-runs the plan with 8 checks, and nothing changes until Ana says yes on her own phone.
  • Works offline. The plan is saved on each device and packed into plain-text QR codes.
  • More than 100 languages. Five languages (English, Spanish, Chinese, Korean, Japanese) have prepared wording and full checks. 110 more are translated by AI and shown only after code checks them.

The AI does seven jobs, and code checks every one: it reads alerts of any hazard, explains them to each person, translates them, prepares backups, runs readiness checks, explains message (scam) checks, and sorts shelter details by each person's needs.

AI reads and proposes. Code checks. People decide.

How we built it

  • Next.js 16, React 19 and TypeScript, as a Progressive Web App, built with Claude Code.
  • Every AI step calls Anthropic Claude (claude-opus-5-5) from the server with structured outputs (zod schemas). The backup and readiness agents use the SDK's tool runner, and their tools are code: the AI proposes, the tool validates.
  • The planner is a plain function with no model in it, so the same facts always give the same plan.
  • A fact checker (about 1,200 lines) compares times, dates, numbers, zones and the order to leave in five languages, and blocks added safety claims, routes, links and "don't call 911".
  • For other languages: digits in any script are normalized, the script and the language are checked with the open-source library franc (deterministic, offline, not another AI), and a second AI call translates the text back to English, where the same English rules check it.
  • Data: National Weather Service API and FEMA's OpenFEMA IPAWS archive. Deployed on Vercel with live AI and rate limits.
  • 4,825 unit tests and 861 browser tests, including accessibility checks.

Challenges we ran into

  • Never trusting the model to grade itself. Every AI answer is treated as a claim that code must check. Making those checks strict enough to stop a wrong time or "you are safe", but loose enough not to hide correct translations, took many rounds.
  • Checking languages we don't read. For 110 languages, we had no word lists of our own, so we combined digit normalization, script and language identification, and back-translation, and we label exactly what was checked.
  • Failing safely. A failed or hidden AI step is never an all-clear. The person always gets the official words and a 911 link instead.

Accomplishments that we're proud of

  • On 29 real NWS alerts, the check caught 733 of 733 changed numbers and 86 of 86 swapped AM/PM, with 0 false alarms.
  • Real AI translations of real alerts kept every fact the check compares (17 of 17).
  • The plan still opens from a QR code with the network off.
  • A live demo where every AI step really runs and every card says "Live".

What we learned

The hard part isn't getting AI to translate. It's deciding what code can prove before a scared person reads it. A task for each person matters more than a translation for everyone. And being honest about limits, such as what was not checked, makes the product more trustworthy, not less.

What's next for Family Alert Plan

  • Fluent readers for each language, starting with Vietnamese and Tagalog, which are on the FCC's list.
  • Word lists in more languages, so the most common ones get the same checks as the five.
  • Testing with real families and real phones, then connecting the planner to live alerts for a family's own zone.
  • It's already a Progressive Web App: a phone can add it to the home screen and open it with no network. Next, wrap the same code in a WebView app for the App Store and Google Play, and add push notifications so a real alert reaches each person's phone.

Built With

  • axe-core
  • claude
  • franc
  • national-weather-service-api
  • next.js
  • openfema
  • playwright
  • pwa
  • react
  • service-worker
  • typescript
  • vercel
  • vitest
  • zod
Share this project:

Updates

Submission history