intermediate
juicer
marketplace
bounty

Juicer Marketplace Overview

What the Juicer / Charger gig marketplace is, how bounties work, the launch gates, and whether your operation should consider it

Levy Fleets TeamMay 18, 20268 min read

Juicer Marketplace Overview

The Juicer marketplace is the gig-charging layer of Levy Swap. Independent contractors (called Juicers, or Chargers depending on the city) pick up low-battery vehicles, charge them at home, and drop them back inside operator-defined zones for a per-vehicle bounty.

This is the Lime/Bird/Spin model — proven at scale, ~$3 to $7 per vehicle versus $8 to $15 per vehicle for full-time-tech swaps when fully loaded. No SMB shared-mobility SaaS has shipped a turnkey marketplace until now.

What Juicers Do

  1. Open the Juicer app and see a map of nearby bounties — vehicles with low battery, color-coded by payout tier.
  2. Tap Claim on one. A 60-minute countdown starts; the vehicle is hidden from every other Juicer.
  3. Drive to the vehicle, take a pickup photo (vehicle ID visible), tap I've got it. App validates GPS.
  4. Transport home. Plug into a standard wall charger.
  5. Periodically check in via the app ("still charging") — missed check-ins expire the claim.
  6. When the vehicle hits ≥95% SoC, the Drop button activates.
  7. Drop the vehicle inside one of the operator's drop zones. Take a drop photo.
  8. Payout queues; clears in 24–48 hours via Stripe Connect.

What Operators Get

  • Lower cost per swap — variable cost, per-task, no full-time-tech overhead
  • Better SoC at peak — bounty engine generates higher payouts for vehicles projected to fall below 20% during the next peak-demand window
  • A roster you control — suspend or ban Juicers from the dashboard; hold or claw back payouts; dispute drops
  • Fraud controls baked in — see Juicer Fraud Detection

How Bounties Are Priced

Each bounty has a base payout, a surge multiplier, and (in Phase 4) bundle bonuses for Juicers who grab multiple vehicles in a tight radius.

ComponentWhat It DoesDefault
Base payoutPer-vehicle, set by the operator$5
SoC tierLower SoC → higher payoutTiered up to 2x
Surge multiplierPeak-shortfall prediction pushes the price upCap 2.5x
Distance bonusAfter the first 2 miles, $0.50 per additional mileOperator-toggle
Bundle bonus5% / 12% / 18% for 2 / 3 / 4+ vehicle bundlesPhase 4
Platform feeLevy's cut15% of payout

The operator sets the base, the platform fee is configurable per subaccount, and the bounty engine recalculates every five minutes. See Predictive Bounty Pricing for the Phase 4 model.

Atomic Claim with Row Locking

Two Juicers can never grab the same vehicle. The claim API calls a database function (claim_bounty) that:

  1. Opens a transaction
  2. Takes a FOR UPDATE lock on both the bounty row and the Juicer row
  3. Verifies the Juicer is active + KYC verified + under the per-Juicer concurrent-claim cap
  4. Verifies the bounty is open, hasn't expired, has fresh telemetry, isn't in an active ride, isn't on a maintenance pack
  5. Verifies the Juicer is within their claim_radius_m
  6. Writes the claim, sets status = 'claimed', inserts a juicer_sessions row
  7. Commits

Either the whole thing succeeds or none of it does. The second Juicer to arrive at the same row finds it claimed and gets a clean "already claimed" error.

Throttle Disabled During Claim

When a Juicer claims a bounty, the platform fires a best-effort IoT command that disables the vehicle's throttle. The vehicle still rolls (you can wheel it into a car), but it won't motor under its own power until the drop completes.

This makes vehicle theft via the gig system uneconomical — the bike is no fun to ride, the Juicer is KYC-verified, the pickup photo + GPS make identity attributable, and the drop polygon check makes "drop wherever I want" impossible.

Launch Gates

The platform side is fully built. Operations cannot launch a Juicer pilot until all of these are signed off:

  • State allow-list — TX, FL, GA, NC, AZ first. California (AB5), Massachusetts, and NYC have gig-worker laws that materially constrain the model and require state-specific legal review.
  • Insurance endorsement — Levy's master policy (Christensen Group) does not cover Juicer activity by default. A new endorsement runs $30–60k/year and is required before Phase 3 launch in a market.
  • Operator addendum — the subaccount signs an addendum acknowledging the marketplace model and indemnifying Levy for state-specific misclassification claims.
  • Hazmat acknowledgement — every Juicer signs a one-page safe-charging acknowledgement at onboarding (don't charge damaged packs, don't open packs, use the provided charger, ventilation, fire extinguisher recommendation).
  • At least one swap station seeded in the pilot city — Juicers without a station fallback have to charge entirely at home, which works but adds friction for high-volume Juicers.

Don't Flip the Toggle Without Talking to Us

The subaccount_settings.juicer_marketplace_enabled flag is what turns bounties on. Until the launch gates above are met, leave it off. The platform will happily generate bounties — but you'll be operating without the right insurance and legal coverage.

What's In and Out of Scope

In scope:

  • KYC and onboarding via Stripe Identity
  • Bounty discovery, claim, pickup, charging check-in, drop, payout
  • Operator-side admin: roster, suspend / ban, payout ledger, disputes
  • Fraud detection across six independent vectors
  • Per-subaccount Stripe Connect routing (reuses existing payment infrastructure)

Not in scope (v1):

  • Levy is not a delivery platform — we're not building Uber for packs.
  • Juicers pick up the vehicle, not just the pack. The pack travels with the vehicle.
  • No public swap stations (Gogoro-style) — operator-only access.
  • No B2C — the Juicer agreement is with Levy and the subaccount, not consumer-facing.

Crons That Keep the Marketplace Running

Four wired crons keep the marketplace humming once it's enabled:

CronScheduleWhat It Does
bounty-engineevery 5 minutesGenerates and re-prices bounties for enabled subaccounts
bounty-expireevery minuteExpires open bounties past TTL; releases stale claims
juicer-payoutsevery 15 minutesDrains queued payouts → Stripe transfers
soh-nightly03:00 UTCRefreshes SoH for every deployed pack (shared with in-house side)

Where to Go Next