Skip to the content
02Client projectAutomationDigital twins

Automating how requests are assigned to drivers

The dispatcher was sorting 200 requests a day by hand in a spreadsheet. We replaced route building with a script that checks the constraints.

Client
Logistics company, St Petersburg
Industry
Logistics
Year
2026
Duration
3 weeks
The problem

Requests arrived by email, by messenger and over the phone. The dispatcher collected them into a spreadsheet and assigned them from memory: who was in which zone, who had which body type. When he took leave, the process stopped.

Solution

What we did
and why we did it that way.

01

One point of intake

Every channel feeds a single queue, with the address normalised and duplicates checked.

02

Rules instead of memory

Zones, body types and driving-hours limits are expressed as rules the dispatcher edits himself.

03

A bot for drivers

The assignment arrives in Telegram; the driver accepts or declines in one tap.

04

Dashboard and alerts

Grafana shows unassigned requests and overdue jobs. Previously this came to light from the client.

Result

What changed
and what we measured it with.

6hours
a day freed up for the dispatcher
18%
empty running
200+
requests a day with no manual sorting
4min
from request to driver assignment
Stack
PythonPostgreSQLRedisn8nTelegram Bot APIGrafana
Timeline

How it went
day by day and week by week.

  1. Week 1

    Time and motion

    We recorded the real process and costed an hour of the dispatcher’s time.

  2. Week 2

    Rules and queue

    We built the intake and the assignment engine.

  3. Week 3

    Bot and dashboard

    Drivers connected, run in parallel with the manual process.

Screens

How it looks
in schematics.

These are screen schematics. We do not publish client interfaces without permission

Next

A similar problem
on your side?

Describe it in the brief. In working hours we come back with an estimate of time and cost within two hours.