Reviewing Parking Appeals
When a rider disputes a parking-pose fee, their appeal lands in a queue in your dashboard. You have 48 hours to decide — after that, the system auto-refunds. This article covers the operator workflow for reviewing those appeals: what you'll see, how to decide, and how the refund routes through the system.
When an appeal is created
After a high-confidence parking-pose fail, the rider sees the fee result screen on their phone. If they tap Appeal, they take a second photo from a different angle. That photo is uploaded, and a row in your Safety > Parking reviews queue is created with status='appealed'.
The rider sees a confirmation message and an estimated resolution time. The 48-hour clock starts at upload.
The Parking reviews queue
Open Dashboard > Safety > Parking reviews. The page shows every appealed event in your subaccount that hasn't been resolved yet, sorted by oldest first.
Each row shows:
| Column | What it shows |
|---|---|
| Ride | Link to the ride detail page |
| Rider | Customer name + click-through to the customer profile |
| Original photo | Thumbnail; click to expand |
| Appeal photo(s) | Up to 3 additional photos |
| Verdict | The classifier's original judgement (e.g., "Tipped") |
| Fee applied | The dollar amount currently on the ride |
| Submitted | Timestamp; the 48-hour countdown is also shown |
| Action | Buttons to approve, reject, or open full detail |
Click any row to open the full event drawer with:
- All photos side by side
- The classifier's full payload, including issue codes ("model_confidence: 0.92, pose: tipped, blocking_sidewalk: false")
- The location of the parking event on a small map
- The rider's other recent appeals (if any) for pattern detection
Deciding an appeal
You have three options for each appealed event.
Approve appeal (refund the fee)
Use this when the rider was right — the appeal photos show the vehicle is upright, in zone, and not blocking. The classifier missed it.
- Click Approve appeal in the event drawer or row action menu.
- Confirm the dialog.
- The system sets the parking_validation row to
approved_after_appeal. - A refund is queued. Important: the refund flows through the ride's adjust-fare endpoint — the fee is reduced from the ride total, the wallet credit (if any) flows automatically, and net-deposited stays correct.
You don't have to touch the wallet or the rider's card. Just approve.
Don't credit the wallet manually
Never adjust the rider's wallet balance directly to "make this right." The ride is the source of truth for refunds. Use the Approve button — it routes through the correct adjust-fare path automatically.
Reject appeal (keep the fee)
Use this when the appeal photos confirm the original verdict, or the appeal looks abusive (same dispute, identical photo, second account, etc.).
- Click Reject appeal in the event drawer or row action menu.
- Pick a reason code — this isn't visible to the rider but helps tune the model
- Confirm.
- The parking_validation row is set to
rejected_after_appeal. The fee stays on the ride.
The rider sees an in-app notification that the appeal was denied with a generic message ("After review, the parking issue stands"). Be aware: aggressive rejections of borderline cases can drive support escalations, so when in doubt, refund.
Resolve as flag false positive
Use this when the appeal photos make it clear the classifier was wrong AND you want this image fed back into model improvement.
- Click Flag false positive in the event drawer.
- Pick a reason code (most common: "rider was actually upright", "rider was in zone", "model misread shadow as fall").
- The system approves the appeal AND tags the original event as a false positive for the next model evaluation cycle.
This is the highest-value path for fleets — it improves accuracy over time. Use it whenever you'd approve an appeal anyway.
The 48-hour SLA
If you don't decide within 48 hours of the appeal submission, the system auto-refunds:
- The parking_validation row flips to
approved_after_appealautomatically. - The refund is queued through adjust-fare just as if you'd clicked Approve.
- The rider gets the standard "Appeal approved" in-app notification.
This protects rider goodwill on busy operators who can't always staff the queue. If you regularly hit the 48-hour cap, contact support — we can configure auto-approve heuristics for borderline cases.
Bulk actions
For high-volume operators, the queue supports multi-select:
- Use the row checkboxes to select multiple appeals.
- The bulk action bar appears at the bottom.
- Click Approve selected or Reject selected.
- Confirm.
Bulk approve refunds each ride individually. The action shows up as a single batch in your activity log so you can track it.
Tracking your appeal performance
The Safety > Helmet compliance page (and a future Parking compliance page) show appeal metrics:
- Appeals per 1k rides (industry baseline: ~3)
- Approve / reject ratio (most operators land around 60% approve)
- Average resolution time (target: under 24 hours)
- False-positive flag rate (the higher, the more your classifier is learning)
If your approve rate climbs above 80%, your classifier may be too aggressive — talk to support about raising the high-confidence threshold for your fleet.
Common questions
What if I disagree with the auto-refund after 48 hours?
You can still reverse it within 7 days by opening the ride and adjusting the fare manually. But the rider has already received the refund notification, so expect support contact if you reverse.
Can riders see the operator decision text?
No. The rider only sees "Appeal approved — fee refunded" or "Appeal denied — fee upheld". Internal reason codes and operator notes stay in the dashboard.
Do appeals factor into the rider's account standing?
Not automatically. Habitual abusive appeals show up in the customer profile's safety tab so you can decide whether to escalate.