Micromobility

Bike-Share Parking Policy

Dock-optional bike-share end-of-ride checks that confirm a tidy lock-to and a clear right-of-way.

A bike-share variant of the parking policy for dockless and hybrid fleets. It confirms a bicycle is present and properly locked or stood, then enforces the same right-of-way rules — sidewalk clearance, entrances, and roadways — while rewarding riders who lock to an approved rack. Tuned to be lenient on framing so legitimate close-up lock-to photos still pass.

Where this policy fits

  • Dockless and hybrid bike-share end-of-ride photos
  • Encouraging lock-to-rack behavior
  • Keeping bikes out of travel lanes and doorways
  • City permit reporting for tidy parking rates

Compliance categories

Every verification resolves to exactly one category. Compliant categories pass the ride or hand-off; the rest route to retry or manual review.

Good Parking

Compliant

Bike is parked tidily, clear of obstructions, and ideally locked to a rack.

good_parking

Bad Parking

Non-compliant

A clear parking violation — blocking a path, doorway, or roadway.

bad_parking

Poor Photo

Non-compliant

Image quality prevents assessment and no violation is detectable.

poor_photo

No Bike

Non-compliant

No bicycle visible in the photo.

no_vehicle

Criteria

Each criterion is evaluated independently. Required criteria gate the outcome; severity tunes how strictly the model interprets edge cases.

CriterionSeverityRequiredID
Bicycle clearly visible
A bicycle (two wheels, frame, handlebars, seat) must be clearly identifiable. Only FAIL if no bicycle is visible — just sidewalks, buildings, cars, or unrelated scenes.
critical
Yesbike_visible
Locked or stood securely
PASS if the bike is on its kickstand, leaning stably against a fixed object, or locked to a rack. Only FAIL if the bike is lying flat on the ground on its side. Bikes photographed upright at any angle PASS.
warning
Nolocked_or_stood
Locked to an approved rack (bonus)
PASS if a bike rack, post, or approved fixture is visible near the bike, indicating a lock-to. Do NOT FAIL when no rack is visible — many zones are rack-optional. This criterion rewards good behavior; it is informational only.
info
Nolocked_to_rack
Not blocking sidewalk
Only FAIL if the bike is in the MIDDLE of a sidewalk or pedestrian path, blocking through-traffic. Bikes pushed to the edge, against a wall, rack, or curb are fine.
warning
Nonot_blocking_sidewalk
Not blocking entrance
Only FAIL if the bike physically obstructs a doorway, ramp, or emergency exit opening. Being parked near a building entrance is NOT a violation.
critical
Yesnot_blocking_entrance
Not in roadway
Only FAIL if the bike is in an active traffic lane, bike lane, or bus lane where vehicles travel. Parking lots, plazas, and curbside corrals are fine.
critical
Yesnot_in_roadway
Image is clear enough
Only FAIL if the photo is completely black, so blurry no shapes are identifiable, or a non-photo. Low-light and minor blur should PASS as long as a bicycle is identifiable.
warning
Yesimage_clear

Copy the policy JSON

Use this as the config for a named policy in your dashboard or send it to us to attach to your account. Once it has a stable policy ID, pass that ID to /api/v1/verify.

bike-share-parking-policy.json
{
  "id": "bike-share-parking-policy",
  "name": "Bike-Share Parking Policy",
  "config": {
    "mode": "structured",
    "categories": [
      {
        "id": "good_parking",
        "label": "Good Parking",
        "color": "#22c55e",
        "isCompliant": true,
        "description": "Bike is parked tidily, clear of obstructions, and ideally locked to a rack."
      },
      {
        "id": "bad_parking",
        "label": "Bad Parking",
        "color": "#ef4444",
        "isCompliant": false,
        "description": "A clear parking violation — blocking a path, doorway, or roadway."
      },
      {
        "id": "poor_photo",
        "label": "Poor Photo",
        "color": "#f97316",
        "isCompliant": false,
        "description": "Image quality prevents assessment and no violation is detectable."
      },
      {
        "id": "no_vehicle",
        "label": "No Bike",
        "color": "#6b7280",
        "isCompliant": false,
        "description": "No bicycle visible in the photo."
      }
    ],
    "criteria": [
      {
        "id": "bike_visible",
        "label": "Bicycle clearly visible",
        "description": "A bicycle (two wheels, frame, handlebars, seat) must be clearly identifiable. Only FAIL if no bicycle is visible — just sidewalks, buildings, cars, or unrelated scenes.",
        "severity": "critical",
        "required": true
      },
      {
        "id": "locked_or_stood",
        "label": "Locked or stood securely",
        "description": "PASS if the bike is on its kickstand, leaning stably against a fixed object, or locked to a rack. Only FAIL if the bike is lying flat on the ground on its side. Bikes photographed upright at any angle PASS.",
        "severity": "warning",
        "required": false
      },
      {
        "id": "locked_to_rack",
        "label": "Locked to an approved rack (bonus)",
        "description": "PASS if a bike rack, post, or approved fixture is visible near the bike, indicating a lock-to. Do NOT FAIL when no rack is visible — many zones are rack-optional. This criterion rewards good behavior; it is informational only.",
        "severity": "info",
        "required": false
      },
      {
        "id": "not_blocking_sidewalk",
        "label": "Not blocking sidewalk",
        "description": "Only FAIL if the bike is in the MIDDLE of a sidewalk or pedestrian path, blocking through-traffic. Bikes pushed to the edge, against a wall, rack, or curb are fine.",
        "severity": "warning",
        "required": false
      },
      {
        "id": "not_blocking_entrance",
        "label": "Not blocking entrance",
        "description": "Only FAIL if the bike physically obstructs a doorway, ramp, or emergency exit opening. Being parked near a building entrance is NOT a violation.",
        "severity": "critical",
        "required": true
      },
      {
        "id": "not_in_roadway",
        "label": "Not in roadway",
        "description": "Only FAIL if the bike is in an active traffic lane, bike lane, or bus lane where vehicles travel. Parking lots, plazas, and curbside corrals are fine.",
        "severity": "critical",
        "required": true
      },
      {
        "id": "image_clear",
        "label": "Image is clear enough",
        "description": "Only FAIL if the photo is completely black, so blurry no shapes are identifiable, or a non-photo. Low-light and minor blur should PASS as long as a bicycle is identifiable.",
        "severity": "warning",
        "required": true
      }
    ],
    "maxAttempts": 3,
    "autoApproveOnExhaust": true,
    "uiCopy": {
      "scannerTitle": "End Ride Photo",
      "scannerInstructions": "Take a photo showing your whole bike and where you parked or locked it",
      "processingMessage": "Checking parking compliance...",
      "successMessage": "Parking verified — thanks for parking tidy!",
      "failureMessage": "Parking issue detected",
      "retryMessage": "Please reposition your bike or retake the photo. {remaining} attempts remaining.",
      "exhaustedMessage": "Photo submitted for manual review. Your ride has ended."
    }
  }
}

Frequently asked questions

Related policies

Get in Touch

Questions about pricing, integrations, or custom deployments? We'd love to hear from you.