Fleet & delivery platform

Live fleet visibility and routing that holds delivery promises

Real-time fleet visibility, an optimizerthat sequences drops by timewindow, and a customer trackingportal for a last-mile operator.

innopalm software development services

The Challenge

Dozens of vehicles were coordinated entirely by phone, with dispatchers holding the plan in their heads and guessing at locations between check-in calls. Customers phoned in to ask where their delivery was, and the honest answer was that no one could see it; when a drop was disputed, there was no timestamp or photo to settle it. Fuel and overtime kept climbing, with no data to explain why.

(01)

Dispatch flew blind

Dozens of vehicles were coordinated by phone. Dispatchers guessed at locations between check-in calls, so one closed road could unravel an afternoon before anyone noticed.

(02)

No proof, only memory

When a customer disputed a delivery, there was no timestamp, photo, or signature to settle it. The record was a driver's word against a customer's recollection.

(03)

Costs drifting in the dark

Fuel and overtime climbed quarter over quarter, but with no trail of where vehicles actually went, there was no way to separate real demand from avoidable back-tracking.

Our approach

Every build follows the same software development life cycle, from requirements and design through build, testing, and support. Each phase is planned, demoed, and signed off before the next begins, so quality is engineered in rather than checked at the end.

Discovery & requirements

Planning
BRD & SDD
Fixed scope

We fixed scope across tracking, dispatch, routing, and proof of delivery in a written specification, mapping the telematics, mapping, and traffic data the build depended on before any code.

(Outcome):

A written BRD and SDD you approve
Agreed scope across tracking, dispatch, routing, and proof of delivery
Telematics, mapping, and traffic data sources mapped
No code written before sign-off

Architecture & design

Design
Architecture
Data model

We designed a real-time backbone and a routing core: a publish/subscribe streaming pipeline for live positions, a constraint-based optimizer, and a separate model for arrival times.

(Outcome):

A publish/subscribe streaming pipeline with an in-memory position cache
A routing optimizer modelled as a vehicle routing problem with time windows
A dedicated ETA model trained on trip history and live traffic
An offline-first driver app design for dead zones

Build

Engineering
By milestone
Demoed throughout

We built the live map, the driver app, the customer portal, and the routing engine in milestones, demoing the operation as each piece came online.

(Outcome):

Telematics and GPS on a live map within seconds
A driver app that queues jobs and proof of delivery offline
A customer portal with live tracking and milestone updates
Exception-first dispatcher dashboards

Testing & UAT

Quality
Measured
You sign off

We proved the optimizer on the operator's own history, backtesting against months of routes and replaying real delivery days in simulation, before it touched a live dispatch.

(Outcome):

Hard feasibility constraints enforced in the solver
Backtesting against historical routes and simulation replay
Gains measured against existing on-time and distance baselines
UAT signed off against the agreed criteria

Deployment & support

Release
Monitoring
Local team

We rolled out in stages across the fleet, with drift monitoring on the ETA model and a dispatcher override that keeps a human in charge of the road.

(Outcome):

A staged rollout across the fleet
ETA error tracked against actuals and watched for drift
A dispatcher override on every suggested route
Documentation and a supported handover

Outcomes

Around 40% fewer dispatch and 'where is my order' phone calls

On-time delivery up roughly 22% after routing went live

About 15% saved on routes and fuel in the first quarter

Timestamped photo or signature proof on every drop, so delivery disputes settle from the record

(Next step)

Want to see every vehicle in real time? Let's talk.