advanced
bounty
pricing
predictive

Predictive Bounty Pricing

How Levy Swap predicts which vehicles will fall below 20% during peak demand and auto-tunes the bounty multiplier to keep your fleet topped up

Levy Fleets TeamMay 18, 20266 min read

Predictive Bounty Pricing

The bounty engine doesn't price every vehicle the same. It predicts which vehicles will be out of charge during the next peak-demand window and bumps the payout on those — so the highest-value swaps clear first.

This is the Phase 4 layer of Levy Swap. It hooks directly into the Levy AI Ops demand-forecast model.

The Core Idea

Without predictive pricing, every low-battery vehicle gets the same bounty. That under-prices vehicles in zones about to spike and over-pays for vehicles in zones that won't be ridden until tomorrow. The result is Juicers grabbing the easiest pickups instead of the most impactful ones.

With predictive pricing:

  1. Every five minutes, the bounty engine walks every candidate vehicle.
  2. For each one, it computes a predicted peak shortfall — will this vehicle be below 20% SoC during the next peak-demand window?
  3. If yes, the surge multiplier increases — up to a cap of 2.5x.
  4. If the multiplier hit pushes the bounty above the floor, the vehicle becomes more attractive to Juicers.

The model is in src/lib/swap/peak-shortfall.ts and is wired into the bounty-engine cron.

The Inputs

The predictive function takes:

InputSource
Current SoCLatest telemetry on the vehicle
Discharge rate per hourComputed from the last 6 hours of telemetry samples
Minutes to peakDifference between now and the next peak-demand window start (from AI Ops)
Zone demand indexPredicted demand multiplier for the vehicle's current zone (from AI Ops forecast)

The zone demand index is the connection point with Levy AI Ops. Until AI Ops is fully wired, the engine falls back to a naive heuristic — discharge rate × time-to-peak — which still beats flat pricing.

The Output

The function returns:

  • Projected SoC at end-of-peak — what the model thinks the vehicle's SoC will be when peak ends
  • shortfall_at timestamp — when the model expects the vehicle to cross 20%, if at all
  • Confidence — high / medium / low based on how much telemetry data was available

The bounty engine reads the projected SoC. If it's below 20%, the bounty gets a surge bump. The bigger the predicted shortfall, the bigger the bump (capped at 2.5x).

Surge Cap

Predicted ShortfallMultiplier
No predicted shortfall1.0x
Mild (SoC ends 15–20% at peak end)1.3x
Moderate (SoC ends 5–15% at peak end)1.7x
Severe (SoC crosses 20% mid-peak)2.2x
Critical (SoC crosses 20% before peak)2.5x (cap)

The 2.5x cap is hard. We picked it after looking at Lime's published Juicer data — past 2.5x, you start attracting fraud (gaming low-SoC reports) without proportionally more genuine completions.

Distance Bonus

On top of the surge, the operator can enable a distance bonus — $0.50 per mile beyond the first 2 miles from the Juicer's home. This rewards Juicers who pick up vehicles that are slightly less convenient to grab, which spreads claims across the geography instead of clustering near home base.

The distance bonus is a flat add-on, not a multiplier. It applies after the surge is calculated.

Bundle Bonuses (Multi-Vehicle Routes)

A Juicer who claims two or more vehicles within a tight radius gets a route-bundle bonus:

Vehicles in BundleBundle Uplift
2+5%
3+12%
4 or more+18%

Bundles must be within a 1 km radius and claimed within 15 minutes of each other. The bonus is computed at payout time — Juicers don't have to commit to a bundle upfront; the system retroactively recognizes a multi-vehicle route.

This is the Phase 4 add-on that nudges Juicers toward route efficiency. A Juicer hitting four vehicles in one trip nets meaningfully more than four single-vehicle trips with the same gross.

How Operators Tune It

From the Dashboard → Swap → Settings page (operator-only), you control:

  • Base bounty — per-vehicle floor, default $5
  • Surge cap — default 2.5x; some markets cap lower to keep marketing-message simple ("up to 2x")
  • Distance bonus — on/off
  • Bundle bonus — on/off; uplift percentages adjustable
  • Platform fee — default 15%, Levy's cut

Changes apply on the next bounty-engine run (≤5 minutes).

What Without-AI-Ops Looks Like

If your subaccount doesn't have Levy AI Ops enabled, the predictive layer falls back to the naive discharge model:

  • Discharge rate based on the vehicle's own last 6 hours of telemetry
  • Time-to-peak based on a static "peak window" you can configure per subaccount (default: 16:00–20:00 local)
  • No zone demand index — assumes uniform demand across the service area

This still produces better-than-flat pricing, but doesn't hit the same accuracy on vehicles that sit unused for a day and then get hammered at peak.

For the full predictive value, enable AI Ops — see AI Ops overview.

What the Juicer Sees

Juicers see the final payout amount with no breakdown. The map color codes pins by payout tier:

TierColor
Base ($5 or below)gray
Surge 1.3x – 1.7xblue
Surge 1.7x – 2.2xyellow
Surge 2.2x – 2.5xred (hottest)

This keeps the Juicer interface simple while giving them strong signal on which pickups will move the dial for the operator.

What's Coming Next

  • Photo-CV classifier — a lightweight model that confirms a pickup photo actually depicts a scooter, not a stock image (Phase 4.5, in design).
  • Multi-operator route bundles — Juicers in cities where Levy serves multiple operators can chain claims across operators with cross-platform fee accounting (Phase 5).
  • SoH-aware bounties — a vehicle whose pack SoH is below 60 gets a higher bounty floor because the operator wants it back in the warehouse, not back on the street (under evaluation).