Inspiration

We were inspired by the endless possibilities of satellite data and how AI could help us make sense of it.

While interning at Tesla in Nevada, we experienced many random fires, often caused by environmental factors or simple accidents like someone carelessly discarding a cigarette. Coming from Canada and the East Coast, most of us had never experienced anything like this before. We panicked, unsure whether we were actually in danger, and struggled to find reliable information online about where the fires were spreading or whether we needed to take action.

What made the experience so stressful was how little information we had. We didn't know how serious the fires were, whether they were getting closer, or if we should be worried.

That's what inspired us to build a tool that turns satellite and environmental data into information people can actually understand, with real-time updates and alerts through text messages and phone calls. We wanted to give people the peace of mind we wished we'd had in those moments, because we knew we couldn't be the only ones who had felt this way.

What it does

Trace is an AI disaster agent that warns people before a wildfire or storm surge reaches their home, then alerts them via text or phone call with precautions and the nearest way to safety. It covers wildfires in the LA and Ventura counties in California and hurricanes on the US East Coast. While official evacuation orders often come late and cover whole zones, Trace is fine-grained: it applies to an individual's address.

  • Every 15 minutes it pulls NASA satellite fire detections, national fire perimeters and incidents, National Weather Service warnings, NOAA hurricane advisories and tide gauges, and hourly wind, humidity and fuel dryness.
  • For a given home, it calculates how many hours until a disaster could come by measuring how far the danger is, if the location is downwind, and how disaster-sensitive the area is. These factors determine the severity of the notification, divided into three categories: watch, warn, evacuate.
  • When an initial threat arrives, it texts the person over iMessage or emails them through Photon. For more severe cases, an AI agent will call the individual, stating next steps and the nearest direction to safety.
  • A time-aware router plans the fastest route to safety, with turn-by-turn directions, a map, and the latest time you can still leave. If no safe route exists, it says so instead of guessing.
  • It's a conversation. Text NOW for your route and a map, WINDOW for when to leave, STATUS for the latest, LEFT once you're out. Or call the line: an ElevenLabs voice agent on a Photon phone number knows your situation (how far the fire is, which way it's moving, why to leave, and which way to head) and answers your questions.

The web app replays five real fires (Eaton 2025, Palisades 2025, Franklin 2024, Mountain 2024, Woolsey 2018) and four hurricanes (Sandy 2012, Matthew 2016, Irma 2017, Isabel 2003):

  • Replays: hour by hour at adjustable speed, with shader-rendered fire spread, 3D buildings that burn on the fire's clock, a thermal-camera view, and animated storm-surge flooding.
  • Alert demo replays a real fire toward your own address. Your phone gets a real text at the first warning and a real call at evacuate, and the map shows each alert, the text, and the call log (every question you asked and every answer).
  • Live map: today's hot spots, perimeters, Red Flag zones, Santa Ana forecasts and power lines.
  • Under the replay timeline: fire area, growth rate, wind and fuel moisture.
  • Route card: click a point to get an escape route, or two points for a safe A → B trip.

How we built it

Prediction models (Python)

  • a 10-year burn-probability model over 806,000 grid cells, built from 75 combined CAL FIRE perimeters, USGS terrain and LANDFIRE fuels. After it was tested on 2015–2025 fires it never saw: AUC 0.74, against 0.71 for fire history alone.
  • Santa Ana days are 4% of days (about 16 a year) but drive 31% of large-fire acreage, a 6.3× lift.
  • a Rothermel spread simulation on a 30 m grid with hourly wind and fuel moisture, scored against the real perimeter. On Palisades it overlaps the real burn area by 85% and reaches 99% of the homes that were destroyed.
  • a parametric model (pressure, wind setup, storm motion) fitted on Sandy and Matthew and checked on Irma and Isabel against NOAA tide gauges, with "bathtub" flooding on USGS terrain.

The agent

  • the agent sees each event exactly as it was known at that hour (only the satellite passes and NHC advisories issued so far), so replays don't cheat with hindsight.
  • a simple distance baseline, wind-aware rules, and an LLM policy (gpt-6.1-sol through Chalk's Model Gateway) that can call tools (fire activity, nearest fire points, fire arrival time) before deciding.
  • the LLM replays training storms, distills its own mistakes into short "lessons" added to its instructions, and is then re-scored on storms it never saw.

Routing

  • a time-aware shortest-path search on OpenStreetMap road graphs (LA + Ventura, and each storm area with residential streets). A road counts as closed if the fire or water is projected to reach it within a safety margin of when you'd drive it.
  • for fire, roads near perimeters and fresh hot spots also close, as do Caltrans closures. For surge, flooded roads, bridges in tropical-storm winds (from NHC 34-knot wind radii) and flooded tunnels close.
  • modelled evacuation traffic, highway numbers in directions, explanations of every road avoided, and a Google Maps link that follows the safe route.
  • the agent gives the compass heading with the most time to spare against the wind-driven spread, e.g. "head west".

Chalk

  • Model Gateway: every LLM call (alert decisions, the AI judge for message quality, the surge learning loop).
  • Evaluations: fire alerts (600 households) and surge alerts run as Chalk Evaluations. The escape-route suite is built for Chalk too; so far we've run it locally.
  • Sandboxes:
    • one runs the 15-minute alert loop and the MCP server 24/7, with subscribers on a Chalk Volume;
    • one hosts the web app and the alert demo, which texts and calls a real phone;
    • one runs the surge learning loop.

Photon + ElevenLabs

  • Texts: Photon's REST API carries iMessage. Locally, a small Node bridge polls Photon every 2 s for replies, forwards them to our server signed with an HMAC, and sends answers back into the same conversation. The hosted demo calls Photon's REST API directly.
  • Calls: the phone number lives in Photon. ElevenLabs runs the voice agent over a TLS SIP trunk, both ways: people can call in, and the alert loop calls them at evacuate.
    • Each call carries a briefing (level, distance, direction, arrival estimate, wind, why, when to leave, which way to go).
    • A fire_status tool fetches live updates mid-call.
    • Every redeploy re-points that tool at the new sandbox URL automatically.
  • Photon also includes native iMessage, so warnings arrive as blue-bubble messages with a map preview, and one number handles both texts and calls.
  • facts about routes and timing come from code, never invented by the LLM. The voice agent is told to use only the briefing and the tool.

Web: React, Vite and Mapbox GL. Fire spread and flooding are drawn by WebGL fragment shaders, and flames, embers, smoke and buildings by three.js.

Data: NASA FIRMS (VIIRS on Suomi NPP, NOAA-20 and NOAA-21; MODIS), NIFC WFIGS, CAL FIRE FRAP and DINS, LANDFIRE, USGS 3DEP, NWS alerts, NOAA NHC and CO-OPS, Open-Meteo, Caltrans and OpenStreetMap.

Challenges we ran into

  • Satellites only see a fire every few hours. The first satellite confirmation of Eaton and Palisades came 2–3 hours after ignition, and the agent can't know where the front is between passes.

    • How we handled it: we don't wait for the next pass. A wind-driven spread model projects where each detected fire point will be hours later, so alerts and routes use the projected front, not the last photo. Routes also keep a safety margin (2 h, or 30 min when escaping). This narrows the blind spot but can't remove it: replays still show the limit of satellite timing.
  • Wind and water models that over-reach.

    • The wind formula used for surge physics put 39 mph winds over Miami while Irma was still near Cuba.
    • How we handled it: bridges and the "leave by" deadline now use NHC's published 34-knot wind radii (from the latest observed fix before each advisory, so still no hindsight). Projected tropical-storm winds now reach Miami around hour 55 and New York around hours 59–62, close to when they actually arrived.
  • Speed. Routing over 297,000 road segments in New York first took 90–106 s per request.

    • How we handled it: profiling showed two slow spots, the storm wind model (run point by point) and a spatial query producing millions of pairs. We vectorized the wind calculation and replaced the query with a grid lookup. Requests now take 1–3 s. Residential streets near a start point load in the background so a request never waits on a download.
  • Merging three people's work overnight into one engine shared by the map, the texts, the calls and the MCP tools.

    • How we handled it: we saved the work aside, took the teammates' latest code as the base, and re-applied the routing work on top. Two separate routers became one shared package that both hazards plug into, and the teammates' routing tests were rewritten against it. The final branch merge is still to come.

Accomplishments that we're proud of

  • Every destroyed home warned in time. Replaying Eaton and Palisades (600 households), the agent warned 100% of homes CAL FIRE recorded as destroyed before satellites saw fire there, a median of 8.7 hours ahead.

  • Escape routes checked against what really happened. For people who left before the hazard reached them:

Disaster Our routes clear in reality Fastest route ignoring the hazard
Storm surge (4 storms, 80 people) 86% 79%
Sandy 92% 60%
Irma 92% 65%
Wildfire (5 fires, 100 people) 85% 83%
- Every case and its scores are in `agent/evals/data/route_eval.json`, reproducible with `python -m evals.route_eval --n 20`.
  • Surge alerts: the rules evacuated 100% of flooded homes in time, a median of 30.6 h ahead on storms they were never tuned on.

  • A real phone rings. In the hosted demo, a replay of the Eaton fire texts your phone at the first warning and calls you at evacuate. You can ask the agent why and which way to go, and its answers follow the replay as it runs.

  • Honest evaluation: time-cut replays, ground truth independent of our models, simple baselines to beat, separate training and held-out events. We report where simple rules still beat our models.

  • One assistant, every channel: a map, iMessage texts, real phone calls, email, and MCP for personal AI agents, all giving the same answer.

What we learned

  • Back up every claim you make by data to support it; making claims especially in life-or-death situations can be very very risky. Our wind-aware fire model barely beats plain distance rings on these two fires, and the rings still evacuate more people in time (92.5% vs 82.5%). Without the evaluation we'd have claimed otherwise.
  • The hardest part is finding adequate, reliable data. Our system's current state had to account for satellite revisit times, missing wind radii, and flaky public APIs.
  • Prioritizing what someone who's evacuating needs in the moment was super important: support, directions, and how close they were to the disaster. We also realized that we can't take iMessage and voice calls for granted. The notification timing they can bring definitely beats out the notifications the weather service provides and has the potential to reach so much more people.
  • Safety-critical facts should be deterministic. The LLM decides and explains; the route, timing and steps come from code, and the voice agent is grounded in a briefing.

What's next for Trace

  • A fair LLM-versus-rules comparison on more households in Chalk Evals, with the message-quality judge, to show where the AI adds value.
  • Teach the LLM which unconfirmed fire reports to trust, to win back the 10-point evacuation gap without spamming the city.
  • Full turn-by-turn directions on the call, from the same road router the texts and the map use, instead of a compass heading.
  • Real-time inputs: live traffic speeds instead of modelled congestion, live road closures beyond Caltrans, and NHC forecast wind radii and surge products for live storms.
  • Shelters as destinations: routes that end at open shelters, not just safe ground.
  • More places and hazards: more fires and storms for evaluation, all of California, the Gulf Coast, and floods and earthquakes on the same agent-and-router platform.
  • Partnerships with counties so Trace's per-address warnings complement official orders, never replace them.

Built With

Share this project:

Updates

Submission history