Next Trucking · Operations Platform

Redesigning drayage operations around exceptions, not tasks

I led design for Nexts dispatching and operations system in the drayage business — moving containers between ports and warehouses on margins thin enough that a single idle day erases the profit. The counterintuitive part of the job: the company was automating, so my work wasnt making operators faster at using screens. It was removing the screens, and designing what remains when only the hard cases need a human.

Role
Lead Product Designer — core operations product
Team
Design · PM · platform engineering
Duration
Oct 2021 – 2023
Platform
Web · internal ops + carrier-facing
ImageHero — the exception queue
Hero — the exception queue

loss reduction per container from earlier exception catches*

dispatch throughput per operator after automation*

shared design system — new ops tooling shipped in weeks, not quarters*

* Loss reduction = avoided demurrage and detention fees per container, measured against the pre-exception-queue baseline. Throughput = shipments handled per operator per shift.

The problem: every container has a meter running

Drayage punishes slowness with fees. A container that sits at the port past its free days accrues demurrage; a chassis held too long accrues detention; a missed warehouse appointment cascades into both. Operators were managing this with spreadsheets, tribal knowledge, and a dispatch tool that treated every shipment as equally urgent — which in practice meant the expensive problems surfaced when the invoice arrived, weeks later.

Meanwhile the engineering org was automating matching and dispatch. That created a real design question with no precedent in the existing product: if the system assigns most loads itself, what is the operators screen even for? Making them faster at a job that was disappearing would have been wasted work.

The thesis: design for exceptions, automate the rest

The thesis I aligned the team around: in an automating operation, designs value moves from task efficiency to exception management. The product should do nothing visible when things go well, and become extremely good at three moments — detecting that a shipment is drifting toward a fee, explaining why, and making the human intervention fast and auditable. Fewer screens, but the remaining ones carry money.

ImageBefore/after — task flow vs. exception flow
Before/after — task flow vs. exception flow

Three design decisions that carried the numbers

1

A prioritized exception queue, ranked by cost at risk

We considered the classic ops dashboard — charts, statuses, a map. We killed it: dashboards make people feel informed while the demurrage clock runs. We shipped a queue instead, ranked by dollars at risk and time to fee, each row carrying its reason and one primary action. This is what the $5-per-container figure traces to — fees got caught while they were still avoidable, not reported after they landed.

ImageException queue, ranked by cost
Exception queue, ranked by cost
2

Automation got an audit trail instead of a control panel

Ops leads initially wanted approval steps on automated dispatch — understandable, and we said no. Approval queues would have rebuilt the bottleneck automation just removed. The compromise that settled the disagreement was data: we ran both paths and measured. Auto-dispatch with a full audit trail (what the system decided, when, on what basis) matched approval-flow quality while cutting handling steps — that’s the +25% throughput. Trust came from legibility, not from a human rubber stamp.

ImageAudit trail on an automated dispatch
Audit trail on an automated dispatch
3

Bulk actions replaced per-shipment ceremony

The remaining human work clustered — the same fix applied across twenty shipments hit by one vessel delay. We rebuilt the table layer around selection and bulk mutation with preview-before-apply, because confidence at the moment of a 20-row change is what makes operators actually use it instead of falling back to one-at-a-time.

Building the design system that made it shippable

None of this ships fast on a fractured UI foundation. I initiated and led the unified design system adopted across Nexts web and mobile products — tables, forms, status grammar, and the dense data components ops tools live on — built with engineering as a shared library rather than a Figma artifact. The payoff wasnt consistency for its own sake; its that the exception queue and bulk tooling above went from design to production in weeks, on components that already existed.

ImageDesign system — the ops table components
Design system — the ops table components

Outcomes: less interface, more margin

The exception queue turned fee avoidance from an invoice-time discovery into a daily operating practice — about $5 saved per container against the prior baseline*, which in container volume terms is real money on drayage margins. Throughput per operator rose roughly 25% as automated dispatch with audit trails replaced per-shipment handling.

The quieter outcome: the less UI thesis became how the product org evaluated new work. Feature proposals started getting asked does this need a screen, or a rule? — a question that didnt exist before. That reframing outlived any single release I shipped there.

“Does this need a screen, or a rule?”

What I took with me

  • Removing UI is a design deliverable

    The strongest work I did here doesn’t screenshot well — it’s the screens that no longer exist. I had to learn to document absence as rigorously as I’d document a redesign, or the work was invisible in reviews.

  • Operators don’t resist automation, they resist opacity

    Every fight about auto-dispatch was actually about legibility. Once the system showed its reasoning and offered an override, the approval-step debate evaporated. I now reach for audit trails before permission gates by default.

  • Win the argument with a measured pilot, not a deck

    The approval-flow disagreement with ops leadership could have burned a quarter in meetings. Running both paths and letting the numbers settle it was faster and left no resentment. I’ve reused that move on every contested decision since — including at OKX.