Phase
DoingThe driver’s steps
Log in; set “Available for Trips?”8 AM meeting; accept the tripRead the Trip Overview & notes
Drive to origin; “I have arrived”Find the lead driverLocate the vehicle in the yard
Open the release form; get keysCapture VIN; take 5 photosConfirm fuel; flag any damage
Navigate; leave the vehicleRecord where keys were leftSet the delivery outcome
Return, or request a rideshareSubmit trip summary & earnings
FeelingRead from context
Set, but half-guessing the day from one Notes blob
Hunting, no photo of the car or the lead to go on
Heads-down and exposed, VIN by hand, no undo
Relief, unless no one’s there to take the keys
Waiting on a ride the app won’t show a face for
▲ line of interaction ▲
SeeingThe app · frontstage

Trip Overview
Itinerary + the one free-text NOTES field holding shuttle instructions, timing, and the full driver roster.

Locate Vehicle
VIN · “No Vehicle Image Available” · I CAN’T FIND IT / FOUND IT.

Inspection, Photos
Five fixed slots · SKIP / SUBMIT, easy to mis-tap, and a saved step can’t be undone.
Lead-specificA lead drives an assigned van daily yet still photographs it at every stop, a redundancy leads find hard to justify.
.avif)
Delivery Outcome
Delivered / Mechanical / Damage · Breakdown / Accident. The dry-run vs delivered split, with no in-app helper.

Rideshare Status
Manual REFRESH cycles “Confirming” → “Found Driver”, no name, plate, car, or ETA.
▼ line of visibility, below here the driver sees nothing ▼
BackstageDispatcher only
Builds the trip to ETA deadlines, 3–4 km clustering, and a 5-drivers-per-lead ratio. The crammed Notes are dispatch’s own instructions, pasted into one field.
When the BOL address is stale, cross-references the internal repository, shuttle trips are assembled by hand, so the app only shows what was typed.
Dispatch decides dry run vs early leave (a billing / accountability split), and a logged dry run can set off a 5–10-day revalidation loop.
Owns the wait ≈1 hr, then skip call. The moment the driver submits, the report is stamped as an unalterable compliance record.
Guides the driver by phone, but can’t tell who’s calling across ~120 drivers. Issues wait for the bi-weekly escalation.
line of internal interaction
SupportSystems & tools
Load boardRiver · OpenlaneOrder entry
Internal repositoryMapboxYard finder
BOL · KAR ArriveFuel cardCondition report
Salesforce · casesStamped record
Uber lineSMS + web trackerSupport form
Pain points
Pain
One Notes blob holds instructions, timing, and the roster, nothing is scannable at a glance.
Pain
No vehicle photo, no lead photo, a manual “I have arrived”, finding things runs on guesswork.
Pain
VIN scan dies in cold & glare; the photo step hard-blocks; a saved step can’t be undone.
Pain
Arrive to a wrong or closed site with no one to take the keys, the fallout of upstream data.
Pain
Only “Found Driver”, no plate, car, or ETA; status moves only on a manual refresh.
Design hookWhere a fix lands
Opportunity
Break Notes into scannable fields; surface dealership hours + wait/skip status.
APP FIX
Opportunity
Add a vehicle photo + a lead photo; identity-aware login so arrival isn’t a guess.
APP FIX
Opportunity
Photo/voice VIN; a review-before-submit step and an obvious “add a note after.”
DESIGN AROUND CONSTRAINT
Opportunity
Guide the delivery-outcome screen so the right option is picked; fix stale addresses at the source.
APP · UPSTREAM DATA
Opportunity
Show the Uber driver / plate / car / ETA in-app; in-app calling that carries identity.
APP FIX