Commercial Fleet · Roadside Service Dispatch

A Truck Breaks Down and the System Starts Calling Dealers Until One Says Yes

When a commercial truck loses a tire on the highway, someone has to find a service dealer who will actually go. We built the platform that turns that breakdown into a ticket, dials eligible dealers in rotation until one accepts, tracks the ETA, and keeps the fleet and the driver informed until the job is closed.

Industry

Commercial Fleet / Roadside Service

Solution

Multi-Tenant White-Label Dispatch

Engagement

Dedicated Team, Ongoing

Services

Product Engineering & AI

Talk to Us
Roadside Truck Service Dispatch Platform — OpenMalo case study
Client Context

The Clock Starts When the Truck Stops

A commercial truck stopped on the shoulder is a load not moving, a driver stranded, and a delivery window closing. Getting it rolling again means finding a tire or mechanical shop that covers that stretch of road, is open at that hour, and will actually take the job — then confirming they are on the way.

That work was done on the phone. A call-center agent opened a ticket, then started dialling shops one at a time: no answer, declined, closed for the night, wrong service. Meanwhile the fleet was calling to ask where their truck was, and the answer lived in whichever agent happened to be handling it.

Multi-Tenant White-LabelAutomated Dealer RotationAI Voice Intake
The Challenge

What Was in the Way

The hard part was never storing the ticket. It was reaching a dealer who would go, and doing it without a person working down a list.

Finding an eligible dealer meant manual calls — distance, service type, coverage and opening hours all checked by hand

Dealer availability changes by day, by hour and after hours, and a call placed into a closed window is a call wasted

Several customer brands each needed their own portal, phone numbers and business rules, without forking the platform

Fleets and drivers had no reliable ETA once a job was accepted, so they phoned the call centre to ask

On-site service reports and their photos arrived separately from the ticket they belonged to

Our Solution

Let the Platform Make the Calls

Each problem maps to a part of the system. The automated dealer rotation is the one that changes the working day; the rest is what makes its result usable.

Automated Dealer Rotation

The platform dials and texts eligible dealers one after another until a job is accepted. Declines advance the rotation automatically, and no-answers, phone extensions and after-hours numbers are each handled as their own case rather than dropping the ticket.

Schedule-Aware Eligibility

A dealer is only called if it offers the service needed, covers the region, sits inside the radius and is inside its own coverage window. Out-of-window attempts route to after-hours or backup numbers instead of ringing an empty shop.

One Engine, Many Brands

A multi-tenant white-label core serves around fifteen branded portals, each with its own identity, phone numbers and business rules — including bilingual English and French routing that follows the portal for customer messages and the dealer for dealer messages.

AI at the Two Manual Ends

An AI voice agent can take the breakdown call from the driver and open a real ticket from it, and an image model reads and classifies the photos attached to service and warranty reports — the two places where a person was previously transcribing.

Key Features

What the Platform Does

Ticket Intake, Three Ways

A ticket can be opened by call-centre staff, by a fleet or dealer in the web portal, or automatically from an AI voice call with the stranded driver.

Dealer Rotation Engine

Sequential outbound calls and texts to eligible dealers, advancing on decline, with no-answer, extension and after-hours handling built in.

Eligibility & Radius Matching

Matches the needed service type against dealer capability, region coverage and distance before a single call is placed.

Coverage Schedules

Per-dealer weekly coverage blocks with day, after-hours and backup phone windows, and logging for attempts that fall outside them.

Priority Rules

A fleet can have a preferred dealer forced to the front of the rotation, specific areas can hold short-term first-call priority, and some dealers are restricted to named fleets only.

ETA & Roll-Time

The accepted dealer reports arrival and completion times, and the fleet and driver are notified as those change.

Road Service Reports

The on-site technician files a service report with photos, which can also run standalone when no ticket exists yet.

Photo Gallery with AI Analysis

Ticket images are indexed automatically and analysed by an image model for damage tagging and classification, surfaced as captions and badges on the gallery.

Warranty Claims

Capture, optical extraction from tyre identification photos, an AI determination across all damage images, and a generated report a reviewer can edit before submission.

Reviewer Workflow

A dedicated reviewer role with an editable report, approval step and full audit log — duplicates are flagged for a human rather than silently blocked.

White-Label Portals

Per-brand logo, colours, sending addresses and ETA options, so each customer company gets its own front door onto the same engine.

Bilingual Communications

English and French messaging, routed by the portal for fleet and customer communications and by the dealer for dealer-facing calls and messages.

Ticket Status Tracking

Open, review, attention-needed, scheduled and closed states, so a stalled job is visible rather than forgotten.

Escalation Jobs

Scheduled background jobs chase tickets that stop progressing after hours, retry failed lookups and keep the image pipeline moving.

Notifications

SMS and email to fleets, drivers and dealers at the points in the job where silence causes a phone call.

Technology Stack

The Stack

Application

PHPJavaScriptjQueryBootstrap

Data & Platform

MySQLMulti-Tenant CoreScheduled JobsSession Auth

Voice & Messaging

Twilio VoiceTwilio SMSSendGridAI Voice Agent

AI & Imaging

OpenAI VisionImage OCRDamage ClassificationReport Generation
How We Delivered

How We Built It

  1. 1

    One Core, Many Front Doors

    A single dispatch engine with per-brand configuration, so a new customer portal is a configuration and a deployment target rather than a copy of the codebase.

  2. 2

    The Dispatch Engine First

    Eligibility, radius, coverage schedules and priority rules were built before anything cosmetic, because a dispatch platform that calls the wrong dealer is worse than a phone.

  3. 3

    Rotation as a State Machine

    Every way a call can fail — declined, unanswered, an extension, out of hours — became an explicit transition, rather than an error that stalls the ticket.

  4. 4

    AI Where a Person Was Transcribing

    Voice intake opens a ticket from a driver call, and the image pipeline reads and classifies report photos. Both were added at the points where a human was retyping what a machine could read.

  5. 5

    Warranty as a Skin, Not a Fork

    The warranty claim workflow was built on the existing core and gated behind a feature switch that stays off until launch, so it could ship incrementally without disturbing live dispatch.

  6. 6

    Bilingual by Rule, Not by Copy

    Language is resolved from the portal for customer-facing messages and from the dealer for dealer-facing ones, so a French dealer is addressed in French even on an English-branded portal.

The Result

The Shape of What We Built

~15

White-Label Portals

3

Ticket Intake Channels

5

Core Integrations

2

Languages Supported

  • Reaching a dealer is a rotation the platform runs, not a list an agent works down by hand.

  • A dealer is only called when it can actually take the job — right service, right region, inside its own opening hours.

  • Around fifteen customer brands run on one engine, each with its own portal, numbers and rules, without forking the codebase.

  • The two most manual steps — taking the breakdown call and reading report photos — are handled by AI, with a person reviewing rather than transcribing.

FAQ

Frequently Asked Questions

Yes — that is the core of this build. The platform dials and texts eligible dealers in rotation until one accepts, advancing automatically on a decline. No-answers, phone extensions and after-hours numbers are each handled as their own case, so a ticket keeps moving instead of stalling on a failed call.

Still dialling suppliers one at a time?

If your operation depends on reaching the right partner fast, and someone is doing that by phone, we will show you what an automated rotation and a single live view do to the day.

Talk to a Delivery Expert