Skip to content
All work
03Logistics · Real-time operations · Multi-product

Four products, one delivery

Designing the Driver, Dispatcher, Business and Super Admin products for a New York last-mile platform that runs pedal-assist cargo trikes alongside cars, out of neighbourhood micro-hubs.

Real-time logisticsFour connected productsField conditionsCompliance as data
metrospeedy.com(opens in a new tab)

Product context

MetroSpeedy

MetroSpeedy is a New York last-mile delivery company. Rather than running everything out of one depot, it operates micro-hubs across its coverage area so that most drops are a mile or less — short enough to be served by pedal-assist cargo trikes as well as cars and vans, across the five boroughs and into Westchester, Long Island, New Jersey and Connecticut. Four products sit on top of a single delivery: the driver’s phone, the dispatcher’s console, the business customer’s dashboard, and internal administration.

My role
Senior Product Designer
Users
Drivers — cyclists and motorists · Dispatchers · Business customers · Internal administrators
What I did
  • End-to-end design across four connected role-based products
  • Driver onboarding, vehicle verification and compliance
  • Real-time task, route and exception handling
  • Proof of delivery under field conditions
  • Specifications, engineering collaboration and QA

Product ecosystem

A delivery changes hands four times before it is done

  1. Order
  2. Micro-hub
  3. Route
  4. Task
  5. Proof of delivery
  6. Settlement
The dispatcher console: three scrolling columns — fifty drivers, fifty tasks, fifty routes — beside a live map of the delivery area. Tasks are grouped into pending and unassigned; routes expand to show the driver, the vehicle and each stop; a driver row offers call, SMS and notify without leaving the queue.
The same delivery, seen a second way — dispatcher: a queue to keep moving.

Core complexity

Four products, one object

A delivery is a task to the driver, a queue position to the dispatcher, a promise to the business customer and a line to settle for admin. Change its state in one product and three others must already agree — there is no version of this where the driver and the dispatcher disagree about what happened.

Two vehicle classes, two legal realities

A cargo trike and a car are not variations on a theme. They carry different licensing, insurance and inspection obligations, and a rider has no policy number to give you. Compliance is not paperwork attached to a driver — it is a property of the vehicle class, and the product has to know that.

The field is hostile

One hand on the phone, the other on a load. Daylight on a screen. A basement with no signal, a lobby with no answer, and a delivery window that is already closing. Every interface decision is made against those conditions or it is made wrong.

Being offline is normal

A driver who is off shift is not a broken session. Treating disconnection as an error state punishes people for finishing work, and it teaches them to distrust the one screen they need when something is actually wrong.

Selected journeys

Onboarding a driver who might be on a bike

The same step of the same flow, under two different legal realities. A car driver is asked for make, model, year, plate, insurer, policy number, policyholder and expiry — nine required fields, because a vehicle on the road with a commercial load needs all of it. An e-bike rider is asked one question: what kind of bike.

The same verification step on two phones, side by side. On the left, a car: vehicle type, make, model, year, licence plate and insurance fields continue past the bottom of the screen. On the right, an e-bike: one field asking what kind of bike, and the continue button directly beneath it.
Left, a car. Right, an e-bike. The rejected alternative was one form for everyone, with the irrelevant fields disabled. It is cheaper to build and it reads as a form that does not know who you are — and it asks a cyclist for an insurance policy number they will never have. The cost we accepted: three branches to maintain instead of one, and a rule that has to be updated whenever a vehicle class changes.

When the plan breaks

Most of this product is the exception. A lobby with no answer, a package that will not scan, an address that turns out to be a loading bay round the back. The escalation path to a dispatcher is not a support link buried in settings — it is designed as a first-class route out of every task, because the alternative is a driver standing in the street improvising.

One screen, in depth

Offline is a state, not a failure

A driver home screen showing an offline card with a toggle reading "You’re Offline — go online to receive tasks", a link to driver preferences, a scheduled route with its value, stops, time window and task count, and an in-progress tutorial.
The shipped screen, and the same screen as a system map. Reading order is the argument: the shape of the day resolves before any single record does.
  1. 01

    The driver owns the switch

    Going online is a deliberate act, not a side effect of opening the app. Nobody is assigned work by accident.

  2. 02

    Offline still shows tomorrow

    Scheduled routes, their value and their time windows remain readable off shift. Planning your week should not require being on the clock.

  3. 03

    A route carries its terms

    Value, stops, window and task count sit together on the card, so accepting work is an informed decision rather than a hopeful one.

  4. 04

    Training lives on the home screen

    Not in a help centre. Safety guidance for a job done in traffic belongs where the shift starts.


Beyond the happy path

Beyond the happy path

Connection drops in basements and lifts, servers fail, and a build eventually stops being safe to run. Each of those is a designed screen with a way forward, because the person reading it is standing outside in the weather with a load and a deadline.

Design-system contribution

One task card, one status vocabulary and one escalation pattern repeat across the driver app, the dispatcher console and the business dashboard, so a delivery looks like the same object wherever you meet it. The mobile patterns were built for one-handed use in daylight before they were built for anything else.

Reflection

What I would do differently: the vehicle-class rule lives in the form, and it should have lived in a shared definition the four products read from. It worked, but every time a class changed we changed it in more than one place — which is exactly the coupling the rest of this system was designed to avoid.