Inspiration
During natural disasters, emergency response teams operate under extreme pressure to distribute aid with limited capacity and rapidly changing conditions. Decisions about where to send medics, search-and-rescue teams, or backup generators are often made using fragmented data, leading to unequal or inefficient aid distribution. We were inspired to replace this logistical guesswork with data-driven intelligence that clearly visualizes constraints. We set out to build a decision-support system that dynamically allocates scarce resources while respecting operational realities like travel time, road closures, and community vulnerability.
What it does
ARIA, or the Adaptive Resource Intelligence & Allocation, is a high-contrast, interactive operational dashboard and resource routing optimizer designed for emergency command centers. It provides comprehensive situational awareness by synthesizing massive datasets, such as NOAA storm events, the FEMA National Risk Index, EMPG funding, and live NWS alerts, into an interactive geospatial map. Beyond visualization, it features a powerful dispatch engine that matches available resources, such as mobile clinics, to surging-demand sites. It then outputs a clear routing plan, providing human-readable rationales for why specific allocations were made to prioritize equity and efficiency.
How we built it
We developed a high-performance REST API backend using Python, FastAPI, and Pandas to parse, clean, and cache over 400,000 historical storm records and FEMA datasets. The backend also integrates asynchronous httpx calls to fetch live feeds from OpenFEMA, the CDC Social Vulnerability Index (SVI), and the National Weather Service. We then implemented a greedy capacitated assignment algorithm that calculates effective travel times and assigns resources using a specific marginal scoring function. Finally, we designed a custom, dark-themed frontend using React, TypeScript, Tailwind CSS, and react-leaflet to mimic a realistic, professional operational tool.
Challenges we ran into
Synthesizing six years of NOAA storm datasets was incredibly challenging, requiring custom Pandas vectorization logic to parse non-standard damage strings and handle missing geographic coordinates. We also faced massive DOM overload issues when attempting to render hundreds of thousands of historical storm markers on a Leaflet map, which initially crashed the browser. To solve this, we implemented strict data pagination, completely separating the dataset used for the side-panel analytics from the geospatial data rendered on the map. In the final hours, automatic dependency updates clashed with our React 18 environment and our map tile provider started requiring an API key, forcing an emergency downgrade and migration to CartoDB to save the build.
Accomplishments that we're proud of
Optimization tools can often feel like opaque "black boxes," so we are incredibly proud that our allocation engine generates a human-readable rationale string explaining exactly why a truck was routed to a specific shelter. We also successfully avoided the generic template look, delivering an interface that looks and feels exactly like a legitimate, professional tool you would see on a monitor in a FEMA logistics headquarters. Furthermore, we managed to successfully marry historical risk profiles with live-action data feeds to give dispatchers crucial context on a state's baseline readiness before deploying resources. Ultimately, we built a fully functioning prototype that handles massive amounts of data without sacrificing performance or visual clarity.
What we learned
We gained deep, practical insights into operations research, specifically learning how to build and implement greedy heuristics for capacitated supply-chain routing problems during emergencies. We learned how the government structures its disaster data, discovering the intricacies of the CDC's Social Vulnerability Index and FEMA's Expected Annual Loss (EAL) metrics. Technically, we leveled up our ability to handle complex serialization issues, such as safely converting Pandas NaN values for JSON APIs. Finally, we learned valuable lessons about frontend performance, specifically how to optimize React map rendering for extremely high-volume geospatial data density.
Log in or sign up for Devpost to join the conversation.