Demand Forecast Map
The demand forecast map lives at Dashboard > Analytics > Heat Maps. It replaces the old "rides last N days" heat-map skeleton with a real predicted-demand surface driven by the AI Ops model.
Page layout
The page has four control regions:
- Horizon picker — choose the forecast window: 1 hour, 4 hours, or 24 hours ahead.
- History window picker — when looking backward at actuals, choose 24h, 7d, or 30d.
- Layer toggles — independently turn on Predicted demand, Actual history, and Unmet demand.
- Time slider — a horizontal slider that spans -7 days to +24 hours. The map redraws as you drag.
Below the map are summary tiles: total predicted rides for the current horizon, the hex with the highest predicted demand, and a count of unmet-demand events in the visible window.
H3 hexes
The map is tiled with H3 hexagons. For dense markets we use resolution 9 (about 0.1 km² per hex, roughly 150-meter edges). For sparse markets we use resolution 8 (about 0.7 km² per hex). The resolution is chosen automatically based on subaccount density.
Each hex is colored by the active layer:
- Predicted demand — green (low) to red (high) by predicted rides for the selected horizon.
- Actual history — same gradient but based on observed rides in the history window.
- Unmet demand — red intensity by count of unmet-demand events. See Understanding unmet demand.
Hex tooltip
Click any hex to open its tooltip. You'll see:
| Field | Meaning |
|---|---|
| Predicted rides | Model output for the current horizon |
| Confidence interval | 90% CI — ci_low to ci_high |
| Current supply | Available vehicles inside the hex right now |
| Gap | Predicted demand minus current supply |
| Last forecast | When this hex's forecast was last refreshed |
If the gap is positive, this hex is under-supplied for the horizon — a candidate for incoming rebalancing. If the gap is negative, it's over-supplied.
Horizons explained
Three separate model heads are trained, one per horizon:
- 1 hour — best for "what's about to happen." Highest accuracy because lag features dominate.
- 4 hours — best for "where should I move vehicles before lunch / dinner / commute." Used by the recommender.
- 24 hours — best for "where should the fleet be tomorrow morning." Accuracy is lower but the signal is enough for overnight planning.
The recommender always uses the 4-hour horizon. The dashboard lets you flip between all three.
Reading the time slider
The slider's 0 position is now. To its left is observed history (up to 7 days back); to its right is forecast (up to 24 hours ahead).
- Left of 0 — the active layer is forced to Actual history. The map shows rides that actually started in each hex during the slider's hour.
- Right of 0 — the active layer is forced to Predicted demand. The map shows the model's forecast for that hour.
Dragging across the 0 boundary transitions cleanly between observation and prediction.
Stale forecast banner
Forecasts refresh hourly. If the most recent forecast is more than 90 minutes old, a yellow banner appears above the map: "Forecast may be stale — last refresh was X minutes ago." When the banner is showing:
- The map still renders the last good forecast.
- The recommender hides projected lift dollars (it doesn't trust stale numbers).
- Check the cron status (see Troubleshooting).
Confidence
The 90% confidence interval (ci_low and ci_high) tells you how certain the model is. Wide intervals mean the model has high uncertainty about that hex × hour — usually because of low historical ride volume in that hex, or because weather or events are pushing the inputs into a region the model hasn't seen much.
The rebalance recommender weights its confidence score by CI width, so the cards you see in /dashboard/operations/rebalance already account for forecast uncertainty.
What's not on the map
- Multi-modal demand. The forecast is rides total, not split by scooter vs. bike vs. moped.
- Real-time (sub-hour) predictions. The smallest bucket is one hour.
- Cross-subaccount roll-ups. Each subaccount has its own forecast surface; AI Ops respects RLS.
Related
- Understanding unmet demand — what the red unmet hexes mean.
- Rebalance recommendations — turning forecast into action.
- Data sources: weather and events — what feeds the model.
Running a fleet on this hardware?
Levy Fleets runs scooters, e-bikes, mopeds and golf carts on the IoT hardware you already have, with integration pages for 29 vendors including Segway, Okai, Omni, Queclink, Invers and Comodule. Keyless unlock, geofencing, rider payments and rider support are included, and the Managed plan is a share of revenue with no per-vehicle software fee.