Inspiration

Every major disaster exposes the same bottleneck: it's rarely a shortage of supplies, it's a shortage of coordination. Vehicles sit underused at depots while sites with the greatest need wait longest, simply because no one has a real-time view of where everything is. We wanted to build something that treats relief logistics as an optimization problem, not a spreadsheet problem.

What it does

ReliefRoute is a logistics platform for coordinating disaster relief:

  • Responders register disaster sites with severity, resource needs, and affected population
  • The system matches sites against available fleet vehicles based on capacity and location
  • An optimization engine computes efficient delivery routes
  • An interactive map visualizes sites, depots, and routes together
  • A live fleet simulator shows vehicles moving along their assigned paths in real time
  • An integrated AI dispatch agent lets coordinators query the system in plain language

How we built it

The frontend is a Next.js (App Router) and TypeScript application, talking to a Django REST Framework backend over an API layer built with Axios. PostgreSQL, hosted via Supabase, stores site, fleet, and route data. We deployed the whole project as a Vercel monorepo — the frontend builds normally, and the Django backend runs as Python serverless functions, so there's no separate server to manage.

A simplified version of the priority score used to rank sites for dispatch:

$$ \text{priority} = \frac{\text{severity} \times \text{affected_population}}{\text{distance}} $$

Where higher severity and larger affected population raise a site's priority, and distance from the depot lowers it.

Challenges we ran into

Getting a Django backend to run cleanly as Vercel serverless functions took real trial and error, especially around database connections and cold starts. Keeping the fleet simulator's real-time movement in sync with backend route data without hammering the API was another hurdle. Balancing the optimization algorithm so it didn't just minimize total distance, but actually prioritized high-severity sites, required rethinking the scoring function more than once.

Accomplishments that we're proud of

Getting three moving parts — an optimization engine, a live map, and an AI chat agent — to work together as one coherent tool rather than three disconnected features. The live fleet simulator in particular made an otherwise abstract routing algorithm feel tangible.

What we learned

We learned a lot about the practical constraints of serverless Python (cold starts, connection pooling with a hosted Postgres instance), and about how much design work goes into making an optimization result legible to a human dispatcher, not just correct on paper.

What's next for ReliefRoute

Next steps include multi-depot optimization, support for dynamically re-routing vehicles mid-delivery as new sites are reported, and richer historical analytics so organizations can see which regions are chronically under-resourced.

Built With

Share this project:

Updates

Submission history