Skip to content
ATLASBIP Business Intelligence Partners
ATLASBIP Business Intelligence Partners

Logistics · Fleet data platform

Sahil Transport Fleet monitoring platform with demurrage calculation for road freight

From a GPS ping to a line on the invoice

Sahil Transport is a Baku road-freight carrier with about 180 trucks. We built its fleet data platform: GPS, fuel and CAN weight sensor streams meet in one place, every stop gets a reason, waiting time at customer sites is priced from the contract, and driver invoice photos are read by AI and matched with trips and finance records.

Project facts

Project type
Client project
Platforms
Web dashboard · Telegram bot · Excel reports
Languages
Azerbaijani

Before The challenge

Every truck reports. Nobody connects the dots.

A carrier’s day throws off thousands of signals: positions every few minutes, tank levels, axle weights, paper invoices photographed in the cab. At Sahil Transport they lived in three places that never talked to each other, and money was slipping through the gaps between them.

≈180 trucks

with GPS trackers and tank fuel sensors, and CAN weight sensors on part of the fleet, each reporting every few minutes.

Where the data lived

  • Telematics portal

    Positions, speed, fuel, axle weight

  • Chat groups

    Invoice photos from drivers

  • Finance records

    Customers, contracts, payments

No shared trip. No shared truth.

  1. Waiting time went unbilled

    Trucks queued at loading sites beyond the free time in the contract, and nobody could show for how long.

  2. Every stop looked the same

    In raw GPS data a customer queue, a fuel stop and a traffic jam are one and the same thing: speed zero.

  3. Invoices were retyped by hand

    Drivers photographed paper invoices, and the office copied them into spreadsheets, late and with typos.

  4. Three records, three truths

    Trips, invoices and finance records rarely agreed, and finding the right one meant checking line by line.

06:00 The fleet in real time

The whole fleet on one screen

The platform pulls position, speed, fuel and weight for every truck from Wialon and turns them into a dispatcher’s view: who is moving, who is waiting at a customer, who has stopped for its own reasons and who has gone quiet.

  • Four states that mean something

    Moving, customer waiting, operational stop and offline, in the same colours on the map, the cards, the alerts and the reports.

  • Net cargo, not raw sensor readings

    For a truck with a CAN weight sensor the platform learns its empty weight, so the sensor reads as net cargo in tonnes instead of a raw value.

  • Fuel in litres, next to kilometres

    Tank sensor levels are kept in litres and per cent alongside the distance driven, on the truck card and for every trip.

  • An attention queue, not a wall of dots

    Trucks that went quiet, run low on fuel or are close to the end of their free time rise to the top of the list.

  • Freshness you can see

    Every data source shows when it last synced, so a silent feed is never mistaken for a parked truck.

  • A map made for dispatchers

    Status filters, plate search and a detail view with each truck’s latest trail, driver and sensor readings.

09:40 Stop classification

Speed zero is not an answer

A truck standing still may be queueing at a customer’s gate, refuelling or stuck in traffic, and only the first one can be billed. The platform puts every stop through four checks and gives it a reason.

10-XX-027 · one sample day

  • Driving
  • Customer waiting
  • Operational stop

Four checks on every stop

  1. Zone Is the truck inside a customer’s geofence?

    No → operational stop

  2. Trip Is that customer on this truck’s trip?

    No → operational stop

  3. Load Did the weight sensor go up or down?

    Up → loading · down → unloading

  4. Contract How much free time does the contract allow?

    Beyond it → billable waiting

How the day was classified

  1. 07:05–07:25 20 min

    Zone
    No customer zone
    Trip
    Load
    Fuel level up

    Operational stop Refuelling

  2. 09:40–12:05 2 h 25 min

    Zone
    Demo Quarry
    Trip
    This trip’s customer
    Load
    0.0 → 24.1 t

    Customer waiting Loading · 25 min beyond free time

  3. 12:40–12:55 15 min

    Zone
    Demo Plant B
    Trip
    Another customer
    Load
    No change

    Operational stop Not this trip’s customer

  4. 13:20–13:50 30 min

    Zone
    No customer zone
    Trip
    Load
    No change

    Operational stop Driver rest

  5. 14:10–15:55 1 h 45 min

    Zone
    Demo Terminal
    Trip
    This trip’s customer
    Load
    24.1 → 0.0 t

    Customer waiting Unloading · within free time

Stops of a few minutes are treated as GPS noise, and a truck hovering on a zone border is smoothed out before it is classified.

11:40 Demurrage calculation

Waiting time turns into a billable line

Every customer contract sets its own free time for loading and unloading and its own hourly rate. When a truck waits longer, the platform counts the excess, prices it from that contract and attaches the fee to the trip, together with the evidence.

Free time
2:00
Excess
0:25

Trip T-0412 · Demo Quarry

  1. 09:40 Entered the Demo Quarry zone, empty
  2. 11:16 Free time almost used: the dispatcher is warned
  3. 11:40 Free time exceeded: the fee starts running
  4. 11:50 Loaded: 24.1 t net
  5. 12:05 Left the zone: the fee is closed

Waiting fee Trip T-0412

Customer
Demo Quarry
Operation
Loading
In the zone
09:40 – 12:05
Free time, from the contract
2 h 00 min
Billable excess
0 h 25 min

Fee added to the trip 35.00 ₼

Evidence kept: zone entry and exit, weight change, GPS trail

  • Separate limits for loading and unloading

    Each contract carries its own free time for both operations, so the same wait can be free at one customer and billable at another.

  • Warnings while the truck is still at the gate

    Dispatchers get a warning as a truck nears the end of its free time and a critical alert once it is exceeded.

  • A fee with its proof attached

    Arrival, departure, zone and weight change are stored with every fee, so a disputed line arrives with its own evidence.

14:30 AI invoice reading

A photo from the cab becomes a checked record

Drivers photograph paper invoices and send them to a Telegram group. The platform straightens the image, AI reads every field with a confidence score, and business checks catch what reading alone misses. When the AI is unsure, a person decides.

What happens to every photo

  1. The photo arrives

    The Telegram bot takes photos from the drivers’ groups and replies at once, so the driver knows it landed.

  2. The image is cleaned up

    Rotated, resized and sharpened before reading, because cab photos are rarely straight or sharp.

  3. AI reads the fields

    Vehicle, date, route, customer, weight and amount come back as structured data, each with its own confidence, even with Azerbaijani, Russian and English on one page.

  4. Business checks run

    The plate format, a valid date, a known customer and totals that add up are verified before anything is saved.

  5. Recorded or reviewed

    Confident reads are recorded. Unsure ones are read again by a second AI model, and anything still unclear waits in the review lane for a person.

Every read keeps the raw AI answer, its confidence and the model that produced it, so any record can be traced back to its photo.

23:00 Three-way reconciliation

Trip, invoice and finance record must agree

Every night the platform rebuilds the day from raw data: trips from GPS, stops and waiting fees, then a three-way match between each trip, its invoice and its finance record. What agrees is marked reconciled. What does not lands in a queue that names the field that differs.

  • Field-level matching

    Vehicle, date, route, weight and amount are compared one by one, so a mismatch arrives with its reason instead of a red row.

  • Decisions in batches

    Accountants approve or reject mismatches in bulk, and every decision stays on the record.

  • Rebuilt, never patched

    Running a night again gives the same result, and a changed rule rebuilds the history from raw data.

08:00 Reports and the bot

The morning report is already written

Management gets its numbers without asking anyone to build them. The platform generates a ten-tab Excel workbook and charts from the same data the dispatchers see, and the Telegram bot keeps drivers and the office in the loop.

What the workbook answers

Summary
Trips, distance, fuel, waiting time and fees for the period on one sheet.
Issues
Customer waiting beyond free time and empty return legs, ready to filter.
Stop analysis
Every stop with its reason, zone, duration and fee.
GPS analysis
Fuel against distance and speed patterns for each truck.
Customers, drivers
The same numbers cut by customer and by driver.
Reconciliation
What matched, what did not, and which invoices needed a person.

Charts for management

  • Stop classification breakdown
  • Fuel and waiting analysis
  • Monthly trend
  • Optimisation potential

The Telegram bot

Drivers send invoice photos where they already chat. The bot answers with the result, and the office gets a link to anything that needs review.

How it is built

Built to trust its own numbers

A platform that bills customers has to prove every figure. We designed this one so each fee, stop and match traces back to a GPS message, a photo or a finance record, and can be rebuilt when the rules change.

Sources

  • Wialon GPS
  • Tank fuel sensors
  • CAN weight sensors
  • Invoice photos via Telegram
  • Customer contract terms
  • Finance records

Platform

  1. Ingest and normalise
  2. Classify stops
  3. Price waiting time
  4. Read invoices with AI
  5. Reconcile three ways

Results

  • Real-time dashboard and map
  • Alerts for dispatchers
  • Waiting fees on trips
  • Reconciled records
  • Excel workbook and charts
  • Bot replies to drivers
  • Raw data is never edited

    GPS messages are stored as they arrive. Trips, stops and fees are derived from them, so a new rule rebuilds history instead of patching it.

  • Same input, same answer

    Nightly processing is idempotent: running a day twice never duplicates a trip, a fee or a match.

  • Real time, with a fallback

    Dashboards receive changes the moment they happen and fall back to polling if the push connection drops.

  • Serves its own data

    The app reads from its own database, and a circuit breaker keeps it responsive when an outside feed is slow or unreachable.

  • Slow work runs in queues

    AI reading runs in background workers with retries, so a burst of photos never slows the dashboard.

  • Access by role

    Sign-in with role-based access for dispatchers, accountants, operators and management, each seeing the screens their work needs.

What comes next

The road continues with ATLAS BIP Logistics ERP

The fleet data platform shows where every truck is and what its time is worth. Our partnership with Sahil Transport continues with ATLAS BIP Logistics ERP, our logistics ERP that runs a carrier from the first order to the money in the bank.

Built for Sahil Transport

Fleet data platform

  • GPS, fuel and weight in one place
  • Stop classification
  • Demurrage calculation
  • AI invoice reading
  • Three-way reconciliation
  • Excel reports and a Telegram bot

Our product

ATLAS BIP Logistics ERP

  • Orders and dispatch
  • Driver app
  • CMR and delivery acts
  • E-invoices
  • Receivables and bank reconciliation
  • Approval workflows
Explore ATLAS BIP Logistics ERP

Our role

What Atlas BIP did

  1. Billing logic

    We turned how a carrier earns from waiting time into rules a machine can apply: customer zones, trips, load changes and contract free time.

  2. Telematics integration

    We connected Wialon GPS with tank fuel sensors for about 180 trucks, and CAN weight sensors on the part of the fleet that carries them, with learned empty weights for net cargo.

  3. Platform engineering

    The real-time dashboard, stop classification, demurrage calculation, nightly processing and three-way reconciliation.

  4. AI automation

    Invoice photo intake through a Telegram bot, AI field reading with confidence scores, business checks and a human review lane.

  5. Reporting and design

    A dark operations interface in Azerbaijani that adapts to phones, plus the Excel workbook and charts for management.

Stack

Built on a stack made for streams

Interface
  • TypeScript
  • React
  • Tailwind CSS
Backend
  • Node.js
  • Fastify
  • WebSockets
Data and jobs
  • PostgreSQL
  • Redis
  • Job queues
AI and integrations
  • Vision LLM
  • Wialon
  • Telegram
  • Excel

Questions and answers

What carriers ask us about this platform

How does the platform tell a customer wait from an ordinary stop?

With four checks on every stop: is the truck inside a customer’s zone, is that customer on this trip, did the weight sensor show loading or unloading, and how much free time does the contract allow. Only a stop that passes all four becomes billable waiting time.

Which telematics and sensors does it work with?

It is built on Wialon GPS with tank fuel sensors and CAN weight sensors. Other telematics platforms with an API connect the same way: positions, geofences and sensor readings flow in and attach to trips.

What happens when the AI cannot read an invoice?

Nothing is guessed. Every field carries a confidence score. An unsure read goes to a second AI model, and if it is still unclear the invoice waits in the review lane with the doubtful field highlighted for a person to confirm.

Does demurrage calculation require replacing our current systems?

No. A platform like this sits next to your telematics and accounting: it reads from them, keeps its own copy of the data and adds classification, fees, reconciliation and reports on top.

Does the work with Sahil Transport continue?

Yes. The partnership continues with ATLAS BIP Logistics ERP, our logistics ERP that takes a shipment from the order to the money in the bank.

Your project

Your system is next

Tell us how orders, money and documents move through your company today. We reply within 24 hours with questions and a concrete plan.

Names, plates and figures on screens are sample data.

Back to the start