AlertBridge: AI-Powered Emergency Translation System

Tagline: When disaster strikes, language shouldn't decide who survives.


Inspiration

In January 2025, thousands of residents inside the LA wildfire evacuation zones had no warning — not because the alerts failed, but because they only went out in English and Spanish. Over 12,000 limited-English speakers lived in those four evacuation zones. The FCC voted to fix this in 2023. That rule is still frozen. 68 million Americans speak a language other than English at home, and the system designed to save their lives structurally excludes them. AlertBridge is the fix that shouldn't have to exist.


What it does

AlertBridge monitors live government emergency feeds (NWS/IPAWS) and delivers plain-language, actionable SMS alerts to registered users in their native language within 60 seconds of a warning firing. A user texts the AlertBridge number once, replies with their zip code and language preference, and they're enrolled. When a wildfire, flood, tornado, or heat emergency fires for their area, they receive a clear human instruction — not bureaucratic government text — in their own language, directly to their phone. No app. No account. No internet required after signup. Currently supports English, Spanish, Chinese, Vietnamese, Tagalog, and Korean.


How we built it

AlertBridge is a multi-agent AI pipeline where six specialized agents run in parallel, coordinated by an orchestrator:

  • alert-poller — monitors the NWS CAP/Atom feed every 60 seconds, deduplicates alerts, and normalizes them into structured objects
  • geo-matcher — maps alert geography to affected zip codes using a Census FIPS crosswalk, then queries the user database to find who needs to be reached
  • ai-rewriter (Lingo-Centric Dispatcher) — rewrites raw government alert text into a plain-language SMS under 160 characters, then translates it into each required language using a local LLaMA model via Ollama — one API call per language, not per user
  • sms-dispatcher — fans out translated messages to every affected user, deduplicates against a sent-alerts log, and records every delivery
  • registration-handler — owns the inbound SMS webhook, running a three-step state machine that enrolls new users in under 60 seconds
  • dashboard — real-time operations view with live stats, language breakdown, SMS delivery log, and a simulate button for demos

The orchestrator decomposes the build into a phased task graph, assigns parallel work batches, monitors agent status via shared memory, and synthesizes final output. The entire system runs locally with no paid API keys — translation via Ollama (llama3.2), alerts via the free NWS public API, and SQLite for persistence.

The agent architecture was built using Claude Code's experimental Agent Teams feature with .claude/agents/ definition files, giving each agent a distinct identity, tool access, and operational scope.


Challenges we ran into

  • LLM translation quality — smaller local models (llama3.2) reliably handle Latin-script languages but struggle with CJK characters and Vietnamese diacritics. We implemented a retry layer with simplified prompts and deterministic fallbacks for zh, vi, and ko to ensure all six languages always fire in the demo.
  • No paid APIs — we deliberately avoided all paid services to keep the system fully free and self-hostable. This meant replacing Twilio with a mock dispatcher, Anthropic API with Ollama, and working around LibreTranslate SSL issues on macOS.
  • Multi-agent coordination — Claude Code's Agent Teams feature is experimental and hit write/bash permission walls during Phase 1. The orchestrator adapted by implementing all files directly from agent plans, which turned out to be faster anyway.
  • FIPS-to-ZIP geography — the Census crosswalk covers 22 counties in the demo dataset. Real deployment needs a full national crosswalk with versioning and refresh scripts as boundaries change.

Accomplishments that we're proud of

  • Full end-to-end pipeline working in under 36 hours — from NWS feed ingestion to translated mock SMS delivery
  • Six languages firing in parallel from a single simulate button press, all with correct translations and masked phone numbers in the live dashboard
  • Clean multi-agent architecture where each agent has a distinct identity, scope, and memory contract — no agent touches another's files
  • Zero paid API dependencies — the entire system runs on a laptop with no credit card
  • A real-time operations dashboard that makes the invisible pipeline visible for judges and users alike

What we learned

  • Multi-agent orchestration is most effective when agents have narrow, well-defined scopes with explicit memory contracts — the hardest bugs came from agents that tried to do too much
  • Local LLMs are surprisingly capable for English rewriting and Latin-script translation but need structured fallbacks for CJK and diacritic-heavy languages at small model sizes
  • The "simulate" button is the most important feature of any hackathon demo — without it you're at the mercy of real NWS alerts firing during judging
  • The problem space matters as much as the technical execution — every judge immediately understood why this needed to exist when we mentioned the LA wildfires

What's next for AlertBridge

  • Real SMS delivery via Twilio or MessageBird behind the same dispatcher interface, with environment-based toggling between mock and live
  • Larger language model for translation — switching to Mistral or a dedicated translation model would eliminate the CJK fallback issue entirely
  • Full national FIPS-to-ZIP crosswalk covering all US counties, not just the 22-county demo dataset
  • Production hardening — Twilio signature validation, rate limiting, auth on the dashboard's destructive endpoints, structured JSON logging, and health endpoints
  • Automated test suite — unit tests for the geo-matcher, rewriter prompts, and registration state machine; integration test for the full simulate pipeline
  • Community deployment toolkit — a one-command Docker setup so a community organization or city government could run AlertBridge themselves without any technical setup

Built With

Share this project:

Updates