Portfolio/StockFlow
📦 Logistics · B2B · Product Design

StockFlow

A European freight operation was running thousands of daily shipments on spreadsheets, Outlook threads and tribal knowledge. I led the design of the platform that replaced all of it. Three weeks on the warehouse floor at Roissy became a shipped product that took on-time delivery from 78% to 94% and cut a “where is my order” call from 20 minutes to under one.

Role
Product Designer
Timeline
May 2017 – Dec 2020
Company
Global Logistics Network
Platform
Web · B2B SaaS
app.stockflow.internal/orders
📊Dashboard
📦Orders
🚚Shipments
↩️Returns
🏭Inventory
📈Analytics
Order Management
Export
Filter
+ New Order
Total Orders
4,821
↑ 12.4% this month
In Transit
284
↑ 8.1%
On-time Rate
94.2%
↑ 2.3%
Returns
1.8%
↑ 0.2%
Order IDCustomerRouteStatusDate
#SF-4821Nord Fret SAParis → LyonDeliveredMar 4
#SF-4820Atlas DistributionNantes → BordeauxIn TransitMar 4
#SF-4819Meridian Retail GroupLyon → MarseilleIn TransitMar 3
#SF-4818Auvergne ComponentsClermont-Fd → ParisPendingMar 3
#SF-4817RailCargo EstLille → StrasbourgReturnedMar 2

The brief was a dashboard.
The problem was the truth.

Global Logistics Network moves freight across France and continental Europe. By 2017 the operation had outgrown its tools: order status lived in Outlook, inventory in a shared Excel file, returns in a paper tray. Every handoff was a phone call, every mistyped quantity sent a pallet to the wrong depot, and clients were leaving because nobody could tell them where their freight was.

I joined as the only designer alongside four engineers and a PM, with a brief to “build a dashboard.” I reframed it. The gap wasn’t a missing screen; it was that no single system knew the truth about a shipment. That became the north star: one source of truth, readable under pressure, usable by a warehouse operator mid-shift with zero training.

We had budget for one module at a time, so sequencing was a design decision, not a backlog detail. I argued for Order Management first, ahead of the live map that demoed well, because it was the workflow every other role depended on and the biggest single source of manual error. Shipping it early bought us a real operator feedback loop for everything that came after.

Over three and a half years I owned the problem definition, the research, the information architecture, the full UI and the design system behind it. I set the success metrics with the PM and the operations director, ran the usability sessions, wrote the component specs, sat in sprint planning, and signed off every build against the designs before it shipped.

IndustryLogistics & Supply Chain
UsersOperators, Managers, Executives
My roleLead Product Designer, research through design system
Team1 Designer (me), 4 Engineers, 1 PM
ToolsFigma, Jira, Storybook, Zeroheight
Impact3.5 years, 40+ screens, 5 modules, 4 roles

Where I chose
to point the work.

A platform this size fails by trying to do everything at once. Most of my first two months went into deciding what the product was, in what order it would arrive, and what it would deliberately not do.

01
The reframe
The brief was a dashboard. I reset it to one sentence the whole team could hold: a single system that owns the truth about every shipment. Any screen that did not make the truth faster to find or harder to get wrong was out of scope for v1.
02
The sequence
Five modules, one budget line at a time. I ordered them by dependency and by how much manual error each removed, not by how well they demoed: Orders, then Inventory, then Shipments, then Returns, then Analytics. The live tracking map that leadership wanted for sales was phase two on purpose.
03
The non-goals
No native mobile app in v1 (operators work at fixed terminals), no client-facing portal (account management owned that relationship), no predictive routing (the underlying data was not trustworthy yet). Naming these kept the team on the workflows that were losing money.

Success was defined before design started. With the PM and the operations director I set three numbers the product had to move: on-time delivery rate, average order handling time, and the time it took to answer a client status request. Those three framed every review. If a screen did not move one of them, it waited.

Three weeks on the floor,
then a model everyone could argue with.

I shadowed two full shifts of warehouse operators at Roissy, rode along on three delivery routes, and ran a workshop with dispatch and account management. Then I put every existing tool and every handoff on one wall.

The insight that changed the design: operators did not want a nicer tool, they wanted fewer places to look. The prototype that tested best was the one that put order, shipment and inventory state on a single row. That killed the tabbed, one-module-per-screen structure we had assumed and set the information architecture for everything after.

A second finding: the people under the most time pressure never used search. They scanned and filtered. So filter and sort became the primary interface and search dropped to secondary.

The artefact that outlived discovery was a service blueprint from order intake to delivery confirmation, with every failure point marked in red. It became the roadmap and the shared language for the next three years.

Field time2 operator shifts, 3 ride-alongs
WorkshopDispatch + account management
OutputService blueprint, IA, journey maps
TestedLow-fi prototypes, every sprint
Key pivotTabs to a single unified row
Re-runMonthly on-site after launch

Three problems.
One platform to fix them.

Discovery surfaced the same three failures across every role, and each one had a price attached.

01
Zero visibility
Shipment status lived in email threads and phone calls. A single client asking “where is my order” took around 20 minutes and three calls to answer, and accounts were churning over exactly that.
02
Manual everything
Order creation, inventory checks and returns all ran in Excel. A mistyped quantity meant the wrong pallet on the wrong truck; corrections cost hours and sometimes a re-delivery. Error was a line item, not an exception.
03
No single truth
Managers, warehouse staff and clients each worked from a different copy of the same data. Every reroute, reorder and escalation was decided on numbers that were already stale.

From the blueprint
to shipped screens.

01
Rebuilt the data model with engineering
Before any UI, I sat with the engineers and turned the service blueprint into entities and states: orders, shipments, inventory, returns, and how each one moves. Doing this together meant the interface and the schema were never negotiated twice, and role-based access fell out of the same map.
Domain modellingEntity & state designRole mapping
02
Prototyped against real operators, every sprint
Low-fi Figma prototypes tested on the floor at Roissy on a two-week cycle. The unified-row layout, the density, and filter-first navigation all came out of those sessions rather than a reference deck. Findings went into a running decision log so nobody re-litigated a settled call.
Usability testingContextual inquiryDecision log
03
A component library, not a pile of screens
I built the system in Figma, documented it in Zeroheight, and kept it in one-to-one parity with the engineers' Storybook. Every component was specified for data density, keyboard use and the states operators actually hit (loading, stale, conflict, empty).
Design systemStorybook paritySpecs & statesAccessibility
04
Shipped in sprints, signed off screen by screen
Two-week sprints alongside four engineers, weekly design reviews, and a standing rule that I reviewed every build against the spec before it went out. I wrote the QA acceptance notes for design, so 'done' meant the same thing to everyone.
AgileDesign QAAcceptance criteria
05
Kept learning after launch
A monthly on-site with operators after each release. Roughly a third of the post-v1 backlog came straight out of those sessions, prioritised against the same three success metrics we set at the start.
Post-launch researchPrioritisationIteration

Four decisions
the platform turned on.

Each of these was a real fork, with a cost on the other side. These are the ones I’d defend in a review.

01
Order Management before the live map
The tension: leadership wanted the real-time tracking map for sales demos; operators needed the order table to work. My call: ship the table first, treat the map as phase two. The cost was three months without the demo asset and an uncomfortable conversation with the commercial team. The payoff: when the map did ship, it plugged into a data model operators already trusted.
PrioritisationStakeholder pushbackSequencing
02
Density over whitespace
Every dashboard reference we pulled was airy and card-based. Testing killed that: operators read a tight table faster and wanted more rows per screen. I built the system around 12px type, compact rows and inline actions, then defended “it looks cramped” in every design review for a year. It was the right call; handling time dropped because people stopped scrolling.
Design systemData densityUsability testing
03
Status as a state machine, not a text field
The fast fix was a free-text status. I specified a fixed set of states with defined transitions instead, so “Returned” can’t jump to “Delivered” and every change is auditable. It cost engineering about a week of extra modelling and boxed in a few edge-case workflows. That was the price of numbers you can actually trust.
Data modellingAuditabilityConstraints
04
A documented design system from month two
As the only designer I could have shipped screens faster by drawing each one bespoke. I front-loaded a Figma library mirrored in Storybook and Zeroheight instead. The first two modules were slower; every module after was assembled, not drawn, and engineering stopped asking me for redlines.
Design systemScaleHandoff

Four modules.
One unified platform.

StockFlow was designed around the four core workflows that mattered most to operators, built for speed, precision, and real-world conditions.

📦
Order Management
A fully searchable, filterable order table with inline editing, bulk actions, and status transitions. Operators see everything they need without drilling down.
🚚
Live Shipment Tracking
Real-time map view of all active shipments with live status, ETA, driver contact, and audit trail. Dispatchers can reroute directly from the map.
↩️
Returns Processing
Structured returns workflow with reason codes, photographic evidence upload, automatic restocking triggers, and client notification, all from one screen.
🏭
Inventory Intelligence
Real-time stock levels per SKU per warehouse. Low-stock alerts, reorder triggers, and movement history. Managers can forecast stock needs 30 days out.

The screens that shipped.

Measured impact
across the supply chain.

Baselines were taken in the month before Order Management shipped; the figures below are six months post-launch, rounded and shared with the client’s permission. Interface mockups on this page are illustrative reconstructions.

The three numbers we set at the start, and where they landed. On-time delivery: target 90%, reached 94%. Average order handling time: target under 4 minutes, reached 2.6. Time to answer a client status request: target under 5 minutes, reached under 1. Holding the team to a metric we agreed before any UI existed is the reason the scope never sprawled.

94%
On-time delivery rate
Up from 78% in the pre-platform baseline month
3×
Faster order processing
Average handling time: 8 min → 2.6 min
20→1
Minutes to answer a client
“Where is my order” went from 3 calls to one lookup
70%
Fewer manual errors
Fixed-state transitions removed the spreadsheet mistakes
1.8%
Return rate achieved
Down from 3.1%; best-in-class for the sector
1day
Operator onboarding
New hires productive same-shift, no training deck

What I’d do differently. We built for operators and under-served the executives. They inherited a dense operational tool and needed guided summary views we didn’t ship until v2. And I briefed engineering on the field research second-hand instead of bringing them to Roissy; the missing context cost us two rebuilds that a shared afternoon on the floor would have prevented.

Next Project
AlphaSquadComing soon
A design system built with MUI: the single source of truth for a product suite.
Project coming soon