Two hundred parcels. One photo each.
One solved route — straight into Google Maps.
130–250 parcels a day. Route numbers assigned at random. Addresses scattered across three cities. Every wrong turn is unpaid time — and the clock starts at the warehouse door.
Photograph labels straight from the phone — camera or gallery, dozens at a time. RapidOCR lifts the postal code off every label in under a second, and a position-aware corrector repairs what the lens gets wrong: V3H IR5 → V3H 1R5.
Every parcel lands in a manifest built for one thumb: collapsible so it never blocks the road view, route numbers pre-filled in scan order — write that same number on the box and you never edit at all. Real inputs, real keyboard, quick-fill for a whole day's numbers in one line.
Geocoding runs against a local BC postal database — 200 parcels in a third of a second, offline. Then the solver: same-street chaining, nearest-neighbour seed, 2-opt refinement, right-turn bias, and an exact DP for which end of each street to enter. A real progress bar, because waiting blind is a UX crime.
Every stop pinned with its marker number, the route flowing along real streets — depot to last door.
live capture · the direction flow animates along every street
Distances aren't crow-flight guesses — OSRM drives the sequence over the real road network, one-ways included, and prices every leg in minutes. The manifest becomes a schedule: per-stop drive time, total distance, honest ETA with 30 seconds per door.
One tap hands the next ten stops to Google Maps, in order, ready to drive. Deliver, check off, and the list refills itself — you always face the next twenty, never the pile. The day's state lives on your phone: switch apps, lock the screen, it's still there.
Done stops fold away into a single undo-friendly bar. The window slides forward on its own. Watch it work — this is the live behaviour, not a mock.
Built with open components — RapidOCR, GeoNames, OSRM, FastAPI — assembled and stress-tested the same way we build trading systems.