Micromobility parking verification that closes the loop at ride end.
VerifyAI scores every end-of-ride scooter and e-bike photo against your city parking rules — vehicle upright, off the sidewalk, out of the roadway — at $0.008 per verification. On-device and offline-capable, with policy-as-code you control. The Captur alternative with no platform fee and no minimums.
Free sandbox includes a $5 credit. No credit card required.
Bad parking is a compliance, cost, and reputation problem.
Every improperly parked scooter is a potential city complaint, a fine, or a manual review ticket. The tools built to catch it have historically been priced for enterprise budgets, not for the unit economics of a ride.
Improper parking creates city risk
Scooters in entrances, on ADA ramps, or toppled in the right-of-way generate complaints, impound fees, and the threat of losing a permit. One bad market can put an entire city contract at risk.
Manual photo review does not scale
Ops teams eyeballing end-of-ride photos cost real money per ride, react after the fact, and apply rules inconsistently across reviewers. Volume grows faster than the review queue can clear.
Incumbent vendors are expensive
Captur, Luna, and similar platforms bundle a large annual platform fee with usage minimums and per-event charges — committed spend you pay whether or not your volume justifies it. Competitor figures are estimates from public sources.
End-of-ride photo to a compliant ride in one loop.
The capture, scoring, and retry loop runs inside your existing end-ride flow. Riders get instant, specific feedback; your ops team only sees the genuine edge cases.
Rider captures the end-of-ride photo
At ride end the SDK opens the scanner and prompts the rider to photograph the parked scooter or e-bike and its surroundings.
Photo is scored against your policy
Each parking criterion — vehicle visible, upright, sidewalk-clear, entrance-clear, not in a roadway — is evaluated independently with a confidence score and a pass/fail reason.
Compliant closes the ride, or the rider retries
A compliant result ends the ride instantly. A violation returns a specific, actionable retry message in-app — “move off the sidewalk” — before the ride can close.
Edge cases route to review
After the retry budget is exhausted the photo is flagged for manual review with full criteria detail, so the rider is never stuck and your ops team only sees genuine edge cases.
Verifications queue on-device and sync when the network returns — garages and dead zones never block a ride.
Riders are not left waiting on a spinner at the end of a trip.
Run different strictness and parking rules per city from the same SDK.
Your parking rules, expressed as a policy you control.
Each criterion is independently scored with a severity and a required flag, so you can tune exactly what fails a ride versus what is just a warning. This is the same structured shape our production micromobility parking policy uses.
- Critical vs warning severity per criterion
- Required flags so warnings never hard-fail a ride
- Retry budget with auto-approve on exhaust
- Custom in-app scanner copy and retry hints
{
"id": "micromobility_parking",
"name": "Scooter & E-Bike Parking Compliance",
"mode": "structured",
"categories": [
{ "id": "good_parking", "label": "Good Parking",
"isCompliant": true,
"description": "All criteria pass. Vehicle correctly parked and fully visible." },
{ "id": "bad_parking", "label": "Bad Parking",
"isCompliant": false,
"description": "One or more clear parking violations detected." },
{ "id": "poor_photo", "label": "Poor Photo",
"isCompliant": false,
"description": "Image too dark/blurry/cropped to assess, no violation visible." },
{ "id": "no_vehicle", "label": "No Vehicle",
"isCompliant": false,
"description": "No scooter or e-bike visible in the photo." }
],
"criteria": [
{ "id": "vehicle_visible", "label": "Vehicle clearly visible",
"severity": "critical", "required": true,
"description": "A scooter or e-bike must be clearly identifiable in the frame." },
{ "id": "vehicle_stable", "label": "Vehicle stable and upright",
"severity": "warning", "required": false,
"description": "Vehicle is upright, not lying flat on the ground." },
{ "id": "not_blocking_sidewalk", "label": "Not blocking sidewalk",
"severity": "warning", "required": false,
"description": "Vehicle is at the edge, not the middle of the walkway." },
{ "id": "not_blocking_entrance", "label": "Not blocking entrance",
"severity": "critical", "required": true,
"description": "Vehicle does not obstruct a doorway, ramp, or exit." },
{ "id": "not_in_roadway", "label": "Not in roadway",
"severity": "critical", "required": true,
"description": "Vehicle is not in an active traffic lane or bike lane." }
],
"maxAttempts": 3,
"autoApproveOnExhaust": true,
"uiCopy": {
"scannerTitle": "End Ride Photo",
"successMessage": "Parking verified — ride complete!",
"retryMessage": "Reposition your scooter. {remaining} attempts remaining."
}
}Ship a first verification today.
Call the hosted API directly, or drop the mobile SDK into your end-ride screen. No SOW, no procurement gate, no annual contract before you can test it.
curl https://verify.switchlabs.dev/api/v1/verify \
-H "Authorization: Bearer $VERIFY_AI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"policy_id": "micromobility_parking",
"image_url": "https://cdn.yourapp.com/rides/9f31/end.jpg",
"metadata": { "ride_id": "9f31", "city": "austin" }
}'
# => {
# "compliant": true,
# "category": "good_parking",
# "confidence": 0.97,
# "criteria": [
# { "id": "vehicle_visible", "passed": true },
# { "id": "not_blocking_sidewalk","passed": true },
# { "id": "not_in_roadway", "passed": true }
# ],
# "latency_ms": 184
# }import { VerifyAIScanner } from '@switchlabs/verify-ai-react-native';
function EndRideScreen({ rideId }: { rideId: string }) {
return (
<VerifyAIScanner
policyId="micromobility_parking"
apiKey={process.env.EXPO_PUBLIC_VERIFY_AI_KEY}
metadata={{ ride_id: rideId }}
// On-device checks + offline queueing run automatically.
onCompliant={(result) => endRide(rideId, result)}
onRetry={(reason) => showParkingHint(reason)} // "Move off the sidewalk"
onExhausted={(result) => endRideForReview(rideId, result)}
/>
);
}Pay $0.008 per verification — not a $40k+ annual platform fee.
VerifyAI is usage-based from day one: no platform fee, no monthly minimum, no annual contract. Model your exact spend against your incumbent vendor and see the annual delta. Competitor figures are estimates from public sources.
Same on-device parking workflows. A lighter commercial model.
If you are comparing micromobility verification vendors, start with the side-by-side. The wedge is not less capable AI — it is comparable workflows without committed annual spend.
VerifyAI vs Captur
A fair, capability-by-capability comparison for buyers who care about cost, on-device support, and switching risk.
See the full comparisonCaptur alternative
Why micromobility operators choose VerifyAI as their Captur alternative — pricing, self-service access, and rollout speed.
Read the alternative breakdownAlready on Captur? Migrate without a rip-and-replace.
Replay your historical parking photos to compare decisions, then roll out behind a feature flag in one market while your incumbent stays live everywhere else. The guide walks through the full runbook.
Micromobility parking verification, answered.
Competitor pricing references (Captur, Luna) are estimates based on publicly available sources and may vary by contract.
Verify every scooter and e-bike parking photo for less than a penny.
Spin up a free sandbox with a $5 credit and run your first parking verification today. No credit card, no minimums, no annual contract.