iOS app · Denver, Colorado
Two report tools in one app. Photograph a car parked in a Denver bike lane and file it to 311 — or report an improperly parked Veo scooter or bike straight to Veo. In under a minute, either way.
Free. MIT-licensed. Not affiliated with the City of Denver or Veo.
01
Snap the car from the sidewalk. The plate needs to be legible.
02
The app reads the plate, car, and address on-device. You review before submitting.
03
One tap submits to Denver 311 under your PocketGov account. Track the case in your History tab.
Cars → Denver 311
A car stopped in a bike lane. The app reads the plate, vehicle, and address, and files a real 311 case under your PocketGov account so you can track it.
Scooters & bikes → Veo
A Veo scooter or bike blocking a sidewalk, ramp, or bike lane, or tipped over. Snap it, optionally scan the vehicle's QR, and the report goes straight to Veo — no Denver account needed.
Reports go directly to the city or the company. There's no server in the middle, no account with me, no analytics, and no tracking — photo analysis happens on your phone, and only the finished report ever leaves it. And a scooter on the sidewalk is only worth reporting if it blocks the path, a ramp, or isn't upright; the app helps you tell the difference so properly parked ones are left alone.



Denver has bike lanes. Drivers park in them, and shared scooters get left across sidewalks and ramps. Both Denver 311 and Veo accept reports, but the flows are cumbersome — enough friction that most obstructions never get reported. This app makes the whole thing quick and easy: a fast way to improve the city around you, one thirty-second report at a time.
Not affiliated with, endorsed by, or operated by the City and County of Denver, or by Veo. Car reports use Denver's public PocketGov 311 API; scooter reports use Veo's public support-request form.
You take a photo. On-device machine learning reads the license plate and identifies the vehicle, while the device's location is reverse-geocoded to a street address. You confirm the details, then the app posts a parking report to Denver 311 through the PocketGov API.
Detection is fully on-device, so the camera and recognition steps work without service. Submitting the report to 311 requires a network connection — if you're offline, the draft is held locally and you can file it once you have signal.
Pick "Improperly parked Veo" on the home screen. Take a photo, and the report — with the location and, if you scan or type it, the vehicle number — goes straight to Veo's support system. No Denver or PocketGov account is required for Veo reports. A Veo on the sidewalk is only improper if it blocks the path for a wheelchair or stroller, blocks a ramp, or isn't upright, and the app guides you so properly parked ones aren't reported.
Straight to the source: car reports go to Denver 311 through PocketGov under your own account; Veo reports go to Veo's support system. Nothing is routed through a server I run. There is no analytics SDK, no third-party tracking, and no account on my end — the photo analysis happens on your phone, and only the finished report leaves it.
Only for car reports: Denver 311 requires a PocketGov account to accept one, so the app signs you in to PocketGov directly and stores your credentials in the iOS Keychain on your device. Veo reports are anonymous and need no sign-in at all.
Sam Schooler, a Denver resident who rides a bike. The source is on GitHub under an MIT license — you can read it, fork it, or contribute. It is not affiliated with the City and County of Denver, or with Veo, in any way.