Replacing a spreadsheet stack with a unified logistics platform
Lawson Logistics
- Duration
- 18 weeks
- Published
- February 24, 2026

Lawson Logistics had outgrown the way they ran the business. The ops team was coordinating dispatch across half a dozen shared spreadsheets, customer status updates lived in email threads, and the warehouse team kept their own offline records that drifted from everyone else's. The business was growing — the tooling was not. They needed a single platform that everyone could trust.
The Challenge
The hard part of a logistics platform is not the screens — it is the data model. Four roles (dispatch, drivers, warehouse, customer support) need overlapping but role-specific views of the same shipment, and status changes have to propagate without waiting for someone to refresh a tab. On top of that, the system has to accommodate the operational reality the team had built up over years: the exceptions, the customer-specific routing rules, and the small workarounds nobody had ever written down.
Layered on top of that, the platform had to ship without disrupting live operations. Drivers were on the road; customers were tracking shipments; the warehouse never closed. A big-bang switchover was not an option.
Our Approach
We started in the warehouse — the role where the spreadsheets had drifted furthest from reality. Mapping the actual workflow (rather than the documented one) revealed which fields the operations team genuinely used and which were vestigial. That became the canonical shipment model the rest of the system was built around.
The platform rolled out one role at a time. Warehouse first, then dispatch, then the driver-facing and customer-facing surfaces together. Each module ran in parallel with the legacy spreadsheets for one full week before cutover, so the team could compare and catch any model gaps before the spreadsheet went away.
Rollout
- Weeks 1–3 — Discovery and workflow mapping: shadowing each role, documenting exception cases, signing off a shared shipment model
- Weeks 4–8 — Foundation, auth and roles, warehouse module (one week of parallel running before cutover)
- Weeks 9–12 — Dispatch module, driver assignment, exception handling (one week of parallel running before cutover)
- Weeks 13–15 — Driver-facing and customer-facing surfaces, status propagation end-to-end
- Weeks 16–18 — Reporting, hardening, audit logs, on-call setup, retirement of the spreadsheet stack
What We Built
- Web app
- React, TypeScript, SCSS Modules
- Backend
- Node.js (Fastify), PostgreSQL, Prisma
- Realtime
- WebSocket-based status propagation
- Auth & Roles
- Auth0 with per-role permission sets
- Infrastructure
- AWS (ECS, RDS, S3), GitHub Actions
- Observability
- Datadog, Sentry, structured audit logs
Results
Lawson Logistics now runs from one platform. Dispatch sees the fleet in real time rather than reconciling spreadsheets at the end of each shift; the warehouse team and customer support work against the same shipment data; and a new hire learns one tool instead of six. Reporting that used to be a Friday-afternoon job is generated automatically.
The role-by-role rollout meant the legacy spreadsheets retired in stages — at no point did the team have to choose between running the business and migrating to the new platform. The two ran in parallel for one week at each cutover, then the spreadsheet went away. Eighteen weeks from kickoff to the last legacy export being archived, with no operational interruption along the way.
From kickoff to launch, the collaboration was professional, communicative, and technically sharp. A vague idea became a polished, scalable product. We'll definitely work together again.
— Johanthon Lawson, CEO, Lawson Logistics
The platform matched how the team already worked rather than asking the team to change — the win came from modelling the operation correctly, not from any single technical decision.
