OutRider
Inspiration
As a team we looked at what navigation apps are actually for. Google Maps, Apple Maps, and the rest give you the fastest line, with only a light mention of what you might hit on the way. Time is the whole product.
That is a weak fit for Miami especially. The city sits at sea level, floods on king tides and summer downpours, sits in a hurricane path, and still has people driving I-95 and the causeways like it is a normal Tuesday. The fastest line often runs through floodplain, a crash-heavy stretch, or an open lot you would not leave overnight.
We wanted a layer on top of those services that is about risk analysis and preparation, not a replacement map. Why should time be the only factor in a trip, and not the conditions of the route?
What it does
You enter your current location and a destination, pick a vehicle, and use live weather or simulate rain, night, a flood watch, and so on. You can also type what you want to avoid or prioritize on this trip. Then you hit find routes.
OutRider pulls public data: crashes, floods, weather, incidents, crime and theft and builds a few real alternatives. One is recommended from a risk index plus a time penalty and a detour cap, so you still have a say in the tradeoff instead of only getting the fastest line.
Turn on parking and nearby lots by the destination get scored too: flood, theft where the city has data, and how exposed they are. The situation box can change the route or the lot by reweighting those scores as decided by AI. You can overlay flood, crashes, and crime on the map, then start navigation or a demo drive with spoken alerts when crossing high crime areas.
How we built it
The map is React and Leaflet. Scoring runs in a Python FastAPI service. Public APIs give us routes (Google), weather (NWS), flood zones (FEMA), elevation, crashes (FDOT), incidents, parking (OSM), and theft and crime reports (Miami PD).
We use geometry to see how close a road is to a flood zone or a crash cluster, then a fixed formula for the risk score and the recommendation. Azure turns the result into short reasons and reads the situation box so the engine can reweight a specific hazard(s).
Challenges we ran into
Live data was all over the place. Timeouts, caps, and failed feeds made it hard to get a clean picture of current conditions, so we cache Miami-Dade and fall back per source instead of letting one outage kill the search.
The ranking fought us too. Longer routes took such a big point hit that the app would recommend a riskier, faster option and leave the safer one out. We had to ease the time penalty and add a detour cap so a calmer route can still win.
Accomplishments that we're proud of
We got public API data into the risk calculation so the routes are based on real layers, not a fake score. The map shows the start and destination with pins, and the same trip can recommend a different route when you switch from a sedan to a truck in the rain, or a different lot when you ask for a covered garage.
The calculation logic holds up for comparing options, the map is usable before you even search. As a team we are proud of the project. it gives people more control over how they plan their trips especially areas with flood risks like Miami.
What we learned
We learned how to take public feeds and put them together into something you can actually use to plan a trip. A lot of that was filtering and scaling the data so one noisy source (like raw crash density) does not eat the whole score.
We also learned that more signals is not a better recommendation unless the weather and the vehicle change what matters, and that the stack a React map plus a Python scoring API is a solid way to build this kind of navigation layer. Keep AI off the geometry so you can still explain the number.
What's next for OutRider
With more time to refine it, we want this in people’s hands as a real app, not only a demo. That means another county with the same depth of data, a better incident feed during a drive, parking that does not depend only on what OSM mapped, and planning for scale so it stays maintainable if usage grows.
Built With
- fastapi
- microsoftfoundry
- numpy
- openstreetmap
- pydantic
- pyproj
- python
- react
- react-leaflet
- shapely
- typescript
- uvicorn


Log in or sign up for Devpost to join the conversation.