Levy Cover Overview
Levy Cover is embedded per-ride micro-insurance. At unlock, the rider sees a small card offering coverage for the trip - typically $0.50 to $2.00 - underwritten by a licensed carrier (Cover Genius primary, Slice fallback) and distributed by Levy as an authorized partner.
Coverage protects the rider against theft of personal items, rider-caused vehicle damage, and (in the Premium tier) rider personal injury. Claims are filed in-app from the ride history, photo evidence is uploaded to a private Supabase Storage bucket, and the carrier adjudicates and pays out.
Navigation
Operators manage Levy Cover at Dashboard > Insurance. Settings, claims queue, and the loss-ratio report all live under that page.
What it solves
The big shared-mobility incumbents (Lime, Bird, Uber, Lyft Bikes) already offer per-ride opt-in insurance at unlock. SMB-focused fleet platforms (Joyride, Wunder, Movmi, Atom Mobility) do not. Levy Cover closes that gap and gives operators three things:
- Reduced damage exposure. Insured rides shift rider-caused damage off the operator's pocket and onto the carrier.
- A new revenue line. Operators share in Levy's distribution commission on every premium sold.
- A real answer to "can you add me to your policy?" Levy's own commercial policy still does not permit additional-insured operators (see Insurance & Liability for Fleet Operators). Levy Cover is the rider-side answer that actually scales.
What it does not do
- It does not insure the operator. Operator-level umbrella coverage is a separate v3 product and is not part of Levy Cover.
- It does not auto-include coverage on every ride. Opt-in is explicit by design - forcing premium onto every ride risks DOI scrutiny in several US states.
- Levy does not underwrite the risk. Levy is a distributor, not an MGA, not a carrier. The carrier owns reserves and adjudicates claims.
- Levy does not adjudicate claims. Claims are submitted to the carrier; operators can view status and add internal notes, but they cannot approve, deny, or pay out.
Carrier architecture
Levy Cover is built on a carrier-agnostic abstraction. Every quote, bind, claim, and webhook flows through a CarrierClient interface. We ship three implementations:
| Client | Use |
|---|---|
CoverGeniusClient | Primary carrier in production. Gates on COVER_GENIUS_API_KEY and COVER_GENIUS_PARTNER_ID. |
SliceClient | Fallback carrier for jurisdictions Cover Genius cannot cover, or for outages. |
MockCarrierClient | Used in dev and tests. Never reaches a real carrier. |
The jurisdiction matrix (see Jurisdiction Matrix) decides which carrier handles a given ride based on the unlock location. Adding a third carrier is a single registry entry plus a new client file - no route or schema changes.
Where things live in the platform
| Path | What it does |
|---|---|
/api/mobile/insurance/cover/quote | Returns available tiers and prices at unlock. |
/api/mobile/insurance/cover/bind | Binds the policy when the rider accepts. |
/api/mobile/insurance/cover/claim | Files a new claim with photos and incident details. |
/api/dashboard/insurance/* | Operator-facing claims queue, offerings, loss-ratio report. |
/api/webhooks/insurance/cover-genius | Signed carrier webhooks - booking, claim, payout events. |
/api/cron/insurance-carrier-reconciliation | Nightly reconciliation of bound policies against the carrier. |
/dashboard/insurance | Operator UI - claims, settings, reports. |
A separate /api/mobile/insurance/* namespace exists for car-share personal auto coverage (Axle integration). Per-ride micro-insurance lives under /api/mobile/insurance/cover/* to avoid collision.
How a ride flows
- Rider taps Unlock.
- Levy fetches a quote from the carrier (Cover Genius by default) for that ride, vehicle type, location, and rider profile.
- The Levy Cover card appears between waiver acceptance and the unlock CTA.
- If the rider accepts, the policy is bound immediately - the policy ID is stored on
ride_insurance_policiesbefore the wheels move. - The ride happens.
- At ride end, the premium is added to the ride total and charged through the existing Stripe Connect flow. It appears as a separate line item: "Levy Cover - Standard - $1.00".
- The premium splits into carrier net, Levy commission, and operator commission. None of this is disclosed to the rider in the receipt; all of it is recorded against the ride for partner-payout math.
How a claim flows
- Rider opens ride history, taps the ride, taps File a claim (only visible if a policy is bound).
- Multi-step intake: incident type, photos (>= 1, <= 10), description (>= 40 chars), location confirmation, optional police report.
- Photos upload to the private
insurance-claimsSupabase Storage bucket. - Levy submits the claim to the carrier; carrier returns a claim ID and
status = submitted. - Webhooks update the claim through
under_review->approved/denied->paid. - Payout is decided and remitted by the carrier (card, bank, PayPal, or Levy wallet). See Carrier Payouts and the Wallet.
Commission economics
Pricing and commission percentages are term-sheet-dependent and tuned by environment variables (INSURANCE_LEVY_GROSS_PCT, INSURANCE_OPERATOR_SHARE_PCT), but the illustrative model is:
| Party | Share of rider premium |
|---|---|
| Carrier (net) | 70-80% |
| Levy gross commission | 20-30% |
| Levy kept commission | ~10-15% |
| Operator commission | ~10-15% (configurable per subaccount) |
Per-subaccount operator_commission_pct in insurance_offerings overrides the global default. Operators cannot set their own premium prices - those are carrier-determined - but they can set their commission share within ranges Levy approves.
CLAUDE.md guardrails Levy Cover follows
Two rules from the platform's core accounting discipline apply to Levy Cover and are non-negotiable:
- Premium refunds always go through the ride. A premium refund is not a wallet credit. It is a ride adjustment that happens to reduce the ride total by the premium amount. See Premium Refunds via the Ride.
- Carrier payouts to the wallet are not ride refunds. When a carrier elects to pay a claim into the Levy wallet, that credit is downstream of a ride that was already accounted correctly.
rides.net_depositedis not touched. The wallet credit references theinsurance_claimsrow, not aride_refundsrow. See Carrier Payouts and the Wallet.
Pricing transparency at the rider
The opt-in card is plain language: tier name, three-bullet summary, price, "Decline" link, "Add coverage" primary button. There are no dark patterns. Declines are fully tappable. The full policy wording is linked, available in the rider's locale where the carrier supports it, and the exact wording version shown is recorded with the binding.
The premium appears as a separate line item on the ride receipt. Levy's commission split is not disclosed to the rider; this is industry standard for embedded insurance distribution.
Phased capabilities
| Phase | What ships |
|---|---|
| v1 | Single "Standard" tier, Cover Genius primary carrier, mobile opt-in card, claim flow, operator claims queue |
| v2 | Three tiers, Slice fallback carrier, Rider Score discounts, multi-jurisdiction expansion |
| v3 | Operator-level umbrella policy (separate spec; not part of Levy Cover) |
Where to go next
Operators: start with Getting Started and Enabling Cover Genius. For the rider-side flow, see Per-Ride Opt-In.
Need help?
Questions on Levy Cover, contact support@levyelectric.com.