Inspiration
It all started on July 4th.
We went to San Francisco expecting fireworks. We left wondering why getting home had become the hardest part of the night.
More than 100,000 people had gathered to celebrate, and when the night ended, everyone tried to leave at once. Streets gridlocked. Public transit was overwhelmed. Sidewalks filled up. Even autonomous vehicles struggled in the chaos.
And somewhere in the middle of it were four international students from Vietnam, stuck for hours trying to get home.
The situation felt strangely familiar. We all grew up in large, densely populated Vietnamese cities, where congestion, crowded streets, and transportation infrastructure struggling to keep pace with rapid urban growth were part of everyday life.
Yet here we were, halfway across the world, in one of the world's most technologically advanced regions, facing the same fundamental problem.
The fireworks weren't a surprise. So why was the traffic?
We knew where the event was. We knew when it would end. We knew thousands of people would move at roughly the same time.
Most navigation systems tell us where traffic is.
We wanted to know where traffic will be next.
That's how transPEAKtation began.
What it does
transPEAKtation is an event-aware routing system that anticipates congestion before it happens.
Instead of treating traffic as something to react to, transPEAKtation combines live traffic, upcoming events, road closures, incidents, historical patterns, and predicted traffic conditions to understand how a city is likely to move next.
Users can plan a trip for a future departure or arrival time and see routes in the context of what will be happening around them — from concerts and sporting events to street closures and other disruptions.
But avoiding one traffic jam isn't enough.
If every navigation system sends thousands of travelers toward the same "fastest" alternative, it can simply create another bottleneck. That's why transPEAKtation also explores coordinated routing, using optimization, traffic simulation, and reinforcement learning to distribute travelers across routes and departure times rather than optimizing every trip independently.
The result is a navigation system designed not just to answer:
"What's the fastest route right now?"
but:
"What's the best way to move through the city when everyone else is moving too?"
How we built it
transPEAKtation combines a real-time data pipeline, predictive modeling, traffic simulation, route optimization, and a user-facing navigation experience.
Our Python ingestion pipeline aggregates transportation and event data from sources including PredictHQ, DataSF, Caltrans, 511.org, and OpenStreetMap. Incoming records are normalized, deduplicated, geocoded, and stored across MongoDB Atlas and Tiger Data/TimescaleDB.
A FastAPI backend combines this context with routing and traffic information from Mapbox, TomTom, OSRM, Nominatim, and OSMnx, exposing it to our web and mobile experiences.
For forecasting and coordination, we built an ML and simulation pipeline using PyTorch, scikit-learn, Stable-Baselines3, Gymnasium, OR-Tools, and Eclipse SUMO. This allows us to model future traffic conditions and experiment with coordinated routing policies using reinforcement learning rather than simply reacting to current congestion. We used AWS services to generate data and train all of our model before deploying them onto DigitalOcean
Our web experience is built with Next.js, React, TypeScript, and Leaflet, while our iOS experience uses SwiftUI. The interface visualizes routes alongside events, incidents, road conditions, and predicted congestion so users can understand why a route is being recommended.
We also integrated Google Gemini for intelligent event and transportation context, ElevenLabs for voice experiences, and Solana for transaction-based features.
The system is deployed using DigitalOcean, with automated testing and deployment through GitHub Actions.
Challenges we ran into
Turning different data sources into one picture of the city
Traffic, events, road closures, and incidents all come from different providers with different schemas, geographic formats, timestamps, and levels of reliability.
A major challenge was building a pipeline that could normalize and deduplicate those sources into a consistent representation that the rest of the system could actually use.
Predicting traffic instead of just displaying it
Showing current congestion is relatively straightforward. Understanding what traffic may look like after thousands of people leave an event at the same time is much harder.
We had to connect event context, transportation data, simulation, and machine learning so routing decisions could account for conditions that haven't happened yet.
Routing for everyone instead of one person
Traditional routing optimizes an individual trip. But individually optimal routes aren't necessarily optimal when thousands of people receive the same recommendation.
Using SUMO, reinforcement learning, and optimization, we explored how travelers could instead be distributed across routes and departure times to reduce system-wide congestion.
Building everything as one system
Our project spans data ingestion, databases, APIs, ML, simulation, optimization, web, and iOS. Keeping shared schemas and assumptions consistent across those components — while four people were developing them simultaneously during a hackathon — became one of our biggest engineering challenges.
What we learned
The biggest thing we learned is that traffic is not purely a routing problem — it's a coordination problem.
An event can be scheduled months ahead, yet its transportation impact is often treated as unexpected once congestion appears.
We also learned how difficult it is to turn fragmented city data into something actionable. Knowing that an event exists isn't enough; its time, location, expected attendance, surrounding road network, closures, and other nearby activity all affect what happens next.
Most importantly, we learned that optimizing one traveler at a time can miss the bigger picture.
Sometimes the best route for a city isn't the route every individual would choose independently.
What's next
Community-powered events
We want to let event organizers add and manage their own events directly on the map, especially smaller community and campus events that may never appear in major event feeds.
Organizer-submitted information such as expected attendance, timing, entrances, parking, and transportation details could become additional signals for predicting congestion.
Event discovery
We plan to expand transPEAKtation beyond navigation into event discovery, allowing users to find nearby events, understand their expected transportation impact, purchase tickets, and plan their trip in one place.
Monetization
Potential revenue streams include:
- Ticket affiliate commissions from purchases initiated through transPEAKtation
- Promoted events and boosted map visibility for organizers
- Clearly labeled sponsored placements and advertising
- Organizer analytics based on aggregated transportation demand and arrival patterns
Smarter coordination
Longer term, we want to train and validate our forecasting models on more real-world observations, improve our simulation environment, and expand coordinated routing across more travelers, transportation providers, and autonomous vehicles.
The vision goes beyond finding a faster way home after a concert.
Instead of reacting to congestion after it happens, prepare the city before the peak arrives.
Built With
- claude
- digitalocean
- elevenlabs
- fastapi
- google-gemini
- leaflet.js
- mapbox
- mongodb-atlas
- next.js
- openstreetmap
- or-tools
- osmnx
- postgresql
- predicthq
- python
- pytorch
- react
- reinforcement-learning
- scikit-learn
- solana
- stable-baselines3
- sumo
- swiftui
- tiger-data
- typescript

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