This is a submission for the MLH x DEV Writing Challenge
What I Built
A wildfire warning only helps if you can act on it. Households with no car, or with someone in a wheelchair or on oxygen, can't just "evacuate now." Last Mile is a wildfire and flood evacuation dispatch simulation built at HackUMass XIV for exactly those households.
A wind-driven fire model gives every household a risk clock.
A dispatch engine matches the most urgent household that can't leave on its own with the nearest helper who can carry them (a neighbor, a volunteer, or a wheelchair-capable van), and re-plans as the fire moves.
A Gemini voice agent triages households by voice and turns what they say into structured needs on the map.
A paired-seed Monte Carlo harness runs the same fire twice, once with alerts only and once with Last Mile, so the comparison is fair.
All people in the demo are synthetic.
Demo
Live site: https://last-mile-iamvk.vercel.app
Video: https://youtu.be/RBNtiI7aiSU
Code: https://github.com/VK2756/Last-Mile
How I Built It
The project is a TypeScript monorepo. A Fastify engine streams live simulation state over SSE to a Next.js front end on Vercel. MongoDB Atlas does helper-to-household matching with $geoNear, and Tiger Data stores risk and dispatch time series. Gemini handles voice triage, and Gemini Live powers the in-browser voice agent. A Twilio bridge is wired up for phone calls, but it is still a prototype.
The part I'm proudest of is the evaluation. Each seed builds one town, one fire and one set of synthetic residents, then runs it under both policies. Only the policy changes. Across 200 paired seeds, Last Mile evacuated 29.4 percentage points more vulnerable households before the fire arrived (95% CI 26.6 to 30.2). The results page lists the assumptions behind that number and shows what happens under harsher baselines.
Partner Technologies
Gemini: triage and live voice. Moving to a newer model after our first model name was rejected, and parsing Blob frames from Gemini Live, were our two biggest surprises.
MongoDB Atlas: geospatial matching in one query. Our only snag was the IP access list.
Tiger Data: a clean fit for time series.
Hackathon Experience
The hardest part was not the fire model, it was staying honest. One good-looking run proves nothing, so we spent real time on paired seeds, confidence intervals and a deliberately generous baseline. The hosting was scrappy too: our engine runs from a laptop over a Tailscale Funnel, and a free-plan deploy limit stopped some late fixes. Next we want real road and fire data, real helper registries and a pilot with an emergency-management office.
