One platform for a fragmented fleet
LogisticsMobilePlatformDrivers had one app, dispatch had another, ops had a spreadsheet. We replaced the patchwork with a single real-time platform — mobile, web dashboard, and the data backbone underneath.
The challenge
The client operated a fleet of roughly 200 vehicles across three regions. Over six years, they had accumulated a four-system patchwork: a legacy driver app that predated smartphones (running on ruggedised handsets the manufacturer no longer supported), a web dispatch tool built on a vendor platform they'd outgrown, a separate mobile app for the compliance team, and — for actual operational decisions — a Google Sheets document that a senior dispatcher kept manually updated throughout the day.
The spreadsheet was the real system of record. Which was a problem.
When a vehicle broke down, the process was: driver calls dispatch, dispatch updates the spreadsheet, someone checks the spreadsheet to reallocate the run, someone calls the driver back. Fifteen to twenty minutes was considered fast. Meanwhile, drivers who hadn't heard anything were either sitting idle or making their own decisions about how to proceed.
System adoption was low for an obvious reason: none of the tools gave anyone the information they actually needed to do their job. Drivers ignored the app because it didn't reflect their real schedule. Dispatch didn't trust the platform because it was always a version behind the spreadsheet.
What we built
We replaced all four systems with a single platform — a React Native mobile app for drivers, a React web dashboard for dispatch and ops, and a shared Node.js backend with PostgreSQL and Redis — built around a real-time event model.
The core design decision was that every significant fleet event — job acceptance, departure, arrival, delay, exception — would propagate to all users within two seconds. Not batched, not polled: WebSocket-pushed. Dispatch and drivers would see the same state simultaneously, and the spreadsheet would become unnecessary because the platform would contain more current information than any human could maintain manually.
We spent the first three weeks in the field. Engineers and designers rode with drivers, sat beside dispatchers, and watched how the compliance team actually used their tools. The legacy app had thirteen screens to complete a single handoff; we designed the driver flow to complete the same handoff in three taps. The dispatch dashboard reorganised around the decisions dispatchers actually made under pressure — which jobs were at risk, which drivers were available, which exceptions needed immediate action — rather than around the data model of the legacy vendor platform.
Job assignment and reassignment were designed to be completable in under thirty seconds from the dispatch dashboard, including driver notification and acknowledgement. Exception handling — vehicle faults, delays, missed stops — surfaced proactively as alerts rather than requiring a dispatcher to find them.
The data backbone was designed for the messy reality of fleet operations: intermittent connectivity on mobile, late events arriving out of order, the need to reconcile device-local state with server state when a driver came back online after a tunnel.
The outcome
Platform adoption rose 41% within eight weeks of rollout — which, in context, meant the team went from four partially-used systems to one system that people actually relied on. The spreadsheet was retired in week three.
The mean time from exception event to dispatch action — the metric the operations head cared most about — dropped from 16 minutes to under 4. That improvement was architectural: the platform surfaced exceptions as alerts the moment they occurred rather than waiting for a driver call.
The client is now running all three regions on the platform and has since expanded the driver-side app to cover compliance workflows, eliminating the separate compliance app entirely. One system became the answer to a problem four systems hadn't solved.
“For the first time, dispatch and drivers are looking at the same information at the same time. That sounds basic, but it took us three years to get there. Ryens got us there in four months.”
Got an idea? Let's ship it.
Tell us what you're building. We'll come back with a clear scope, a real timeline, and the senior team who'll actually build it.