All work
07Web2024

A national logistics operator

Live stock reconciliation across 200+ depots, replacing a nightly batch that told operators where inventory was fourteen hours ago.

Engagement
18 weeks
Year
2024
Disciplines
Web Dev · Backend
Stock position latency
14 hours → Live

The problem

The client's depot managers worked from a report generated at 2am. By mid-afternoon it described a warehouse that no longer existed, so every urgent stock query became a phone call to another depot. The batch job itself had grown to five hours and was starting to overrun into business hours, which was the trigger for the project.

What we did

  1. 01

    Stream the deltas, not the state

    Rather than recomputing global stock, each depot's scanner events are published as a stream and the dashboard maintains a running position per SKU. The nightly batch survives as a reconciliation check that flags divergence, which is the job it should always have had.

  2. 02

    Design for the warehouse floor

    The primary users are on a tablet, standing, often in gloves and poor light. Minimum tap target is 56px, the palette is high-contrast, and the three most common actions are reachable without scrolling on the smallest supported device.

  3. 03

    Degrade honestly

    A depot with a dropped connection shows its last known position and the time it was accurate, rather than a stale number presented as live. Operators trust the screen because it tells them when not to.

What changed

Inter-depot stock calls dropped by roughly three quarters in the first month. The overrunning batch job was retired as a source of truth and now runs as a nightly audit that has not found a material discrepancy since week six.

Stock position latency
14 hours< 3s
Depots live
214
Inter-depot stock calls
-74%
Nightly batch runtime
5 hours11 min (audit only)

Built with

  • Next.js
  • TypeScript
  • Kafka
  • PostgreSQL
  • Redis
  • Google Cloud

The detail that won the floor over was the timestamp. When a depot goes offline the screen says so, and the managers stopped second-guessing it after about a week.

Operations DirectorLogistics operator

Have a problem shaped like this one?

Start a project