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

Built With

Share this project:

Updates