Reward Tiers
Rider Score sorts every active rider into one of six tiers. Each tier has its own perks and its own monthly wallet credit cap. Tier assignment is automatic and recomputes after every scored ride.
Navigation
Edit tiers at Dashboard > Rider Score > Settings > Tiers.
Default tiers
| Tier | Score | Default perks |
|---|---|---|
| Platinum | 90+ | 10% off all rides, 1 free unlock per week, priority vehicle reservation |
| Gold | 80-89 | 5% off all rides, 1 free unlock per month |
| Silver | 70-79 | Quarterly bonus wallet credit |
| Bronze | 50-69 | Standard pricing |
| At Risk | <50 | Price uplift plus intervention ladder steps |
| Beginner | <3 rides | Locked tier, no penalties, helmet selfie unlocks Silver perks |
All thresholds are per-subaccount editable. You can rename tiers and reshape the curve. You cannot delete the Beginner tier - it is required for the cold-start rule.
What a tier controls
Each rider_score_tiers row holds:
| Field | What it does |
|---|---|
min_score, max_score | The score range for this tier |
unlock_discount_pct | % off the unlock fee, applied at ride start |
ride_discount_pct | % off the ride total, applied at ride end |
free_unlock_count_per_month | How many free unlocks the rider gets per calendar month |
per_ride_credit_cents | Wallet credit issued automatically after qualifying rides |
monthly_credit_cap_cents_per_rider | Hard cap on total credits issued to one rider in a calendar month |
price_uplift_pct | Positive uplift (At Risk tier) - we never charge less than the standard price for other tiers |
badge_color | Tier badge color shown in the rider app |
perks | Free-form JSONB for marketing copy and badges |
interventions | Reference to which ladder steps fire at this tier |
How rewards reach the rider
This is the most important section of this article. Every wallet credit issued by Rider Score flows through the existing ride-refund pipeline. There are no direct wallet writes anywhere in the system.
The pipeline:
- The reward engine inserts a
rider_score_rewardsrow withstatus='pending'and a reward type (e.g.per_ride_credit,tier_promotion_bonus). - A
ride_refundsrow is created against the qualifying ride. creditWalletForRefund({ referenceType: 'ride_refund', rideRefundId })is called. This is the same function used by automatic and manual ride refunds.- The reward row is updated with the linked
ride_refunds.idandwallet_transactions.id, then markedstatus='issued'.
If the per-rider monthly cap is exceeded, the reward row is marked status='skipped_cap' and no credit is issued.
Why this matters
All wallet credits in Rider Score share the same accounting plumbing as a real refund - they show up in ride_refunds, net_deposited is updated, and the full audit trail is preserved. We never UPDATE wallet_balance directly. We never INSERT into wallet_transactions by hand.
When rewards fire
Three reward types are issued today:
| Reward type | Trigger |
|---|---|
per_ride_credit | Awarded on each qualifying scored ride for tiers that have a non-zero per_ride_credit_cents. |
free_unlock_grant | Awarded monthly to Gold and Platinum riders. Tracked separately from cents-based credit. |
tier_promotion_bonus | One-time when a rider crosses up into a higher tier. Optional, off by default. |
Per-rider monthly cap
The cap is enforced at the reward engine level. A typical default is $10 per rider per month for Silver and below, $25 per rider per month for Gold, and $50 per rider per month for Platinum. Adjust to your unit economics.
The cap is calendar-month based and resets at the first of each month in the subaccount's timezone.
Per-subaccount monthly cap
Set a fleet-wide ceiling at Settings > Reward budget. When the fleet-wide cap is hit, all subsequent reward rows for the month are marked status='skipped_budget'. This is your circuit breaker against viral abuse or a scoring bug spraying credits at riders.
Rider visibility
Riders see:
- Their current tier and badge on the Rider Score home tab.
- The exact threshold to reach the next tier (rolling score delta).
- A list of unlocked perks with plain-English descriptions you configure.
- A history of wallet credits issued by Rider Score, with the linked ride.
What riders do not see
- The internal weights snapshot.
- Other riders' scores (no public leaderboard in v1).
- The fleet-wide monthly cap.
- Reward rows in
status='skipped_*'.
Beginner cold-start perks
Brand-new riders in their first 3 rides get Silver-level perks if they complete the helmet selfie verification. This is intentional. New riders should feel rewarded for safe behavior immediately, not made to grind for a tier they can already prove they belong in.
Once the rider has 3 scored rides, the cold-start override drops and they are assigned a real tier from their rolling score.
Tier transitions and notifications
When a rider crosses a tier boundary:
- Up: push notification, in-app celebration, optional
tier_promotion_bonusreward. - Down: push notification with what changed. No reward. No automatic intervention - the ladder is evaluated separately.
Practical recommendations
- Keep your Platinum tier rare. 3-5% of active riders is healthy. 20% means your thresholds are too generous.
- Use the per-ride credit instead of large tier-promotion bonuses. The drip is stickier and harder to game.
- Run with conservative caps for the first month, then loosen. It is far easier to expand a budget than retract one once riders have come to expect it.
Next
See Intervention Ladder for the At Risk tier's automatic responses. See Helmet Selfie Discount for the most common rider-side reward path.