Inspiration
Everyone has experienced the same frustrating moment: you are driving somewhere, taking an important call, streaming music, navigating, or using your phone as a hotspot and suddenly your service drops.
Navigation apps like Waze and Google Maps can predict traffic, accidents, road closures, and travel time, but they do not answer another important question:
*Will I actually have reliable cell service along this route? *
That inspired us to build Roam.
Roam is essentially Waze for cellular connectivity. It predicts where cellular service will become weak or unavailable along a trip and helps users choose routes based not only on ETA, but also on connectivity.
Our goal was simple:
*Turn cellular coverage from a static map into a forecast. *
What Roam Does
A user enters a destination just like they would in a normal navigation app.
Roam generates possible routes and analyzes the expected cellular quality along each one.
Instead of only showing:
- ETA
- distance
- traffic
Roam also shows:
- predicted signal quality
- weak-service zones
- dead zones
- expected duration of poor connectivity
- overall connectivity score
- more reliable alternate routes
For example, one route might take 31 minutes with a connectivity score of 74/100, while another takes 34 minutes with a score of 96/100.
For someone taking an important call, working from a hotspot, driving for a delivery service, or traveling somewhere unfamiliar, that difference matters.
Connectivity as Terrain
One of the core ideas behind Roam is that cellular connectivity should be visible.
We designed the map as a kind of signal topography map.
Instead of elevation, the map represents cellular quality.
Strong-service regions appear differently from weak-service regions, creating a continuous connectivity landscape.
The route itself uses the exact same color scale:
Excellent → Good → Fair → Poor → Very Poor → Dead Zone
This lets users visually see when their route is about to enter a "valley" of poor connectivity.
Connectivity-Aware Routing
Roam supports multiple routing strategies.
Fastest
Prioritizes travel time.
Best Connectivity
Prioritizes cellular reliability and minimizes exposure to dead zones.
Balanced
Trades off travel time and connectivity.
Conceptually, we score routes using:
[ C(r) = \alpha T(r)
- \beta P(r)
- \gamma D(r)
- \delta V(r) ]
where:
- (T(r)) = travel time
- (P(r)) = exposure to poor service
- (D(r)) = dead-zone exposure
- (V(r)) = signal instability
This allows Roam to answer more than:
"Which route is fastest?"
It can answer:
"Which route should I take if I need reliable service?"
How We Built It
Roam combines navigation, geospatial processing, real-time shared state, cellular data, and AI.
flowchart LR
U[User] --> UI [Roam Web / Mobile UI]
UI --> MAP [Map + Navigation Layer]
UI --> VOICE [Grok Voice]
MAP --> ROUTE [Routing Engine]
ROUTE --> RP [Candidate Routes]
FCC [FCC / Coverage Data] --> GEO [Geospatial Processing]
HIST [Historical Signal Data] --> GEO
GEO --> MODEL [Connectivity Prediction Engine]
RP --> SCORE [Route Scoring Engine]
MODEL --> SCORE
STDB[SpacetimeDB] --> LIVE [Live Signal Reports]
LIVE --> MODEL
LIVE --> SCORE
SCORE --> FAST [Fastest Route]
SCORE --> CONN [Best Connectivity Route]
SCORE --> BAL [Balanced Route]
FAST --> UI
CONN --> UI
BAL --> UI
VOICE --> AI [Grok Decision Layer]
AI --> ROUTE
AI --> SCORE
AI --> UI
USERS [Other Roam Users] --> STDB
Log in or sign up for Devpost to join the conversation.