KM 0Who runs on it· Five operators
Five kinds of fleet.
Five different arguments.
A ministry motor pool answerable to an auditor. A haulier crossing three borders. A donor project in Grand Kru. A mine site with no signal. And the forecourt where the fuel is actually sold. The platform is one system — but what matters is not the same in any two of them.
01Government· Ministries & agencies
Answerable for every liter, to someone who will come and ask.
A ministry motor pool is not one fleet. It is departments, agencies and counties that share vehicles, fuel drawn against paper, and a question at the end of the year from an oversight body that was not in the room when the fuel was pumped.
The fleet is organised the way the government is
Every vehicle carries a ministry, an agency, a county and a department as first-class fields — imported from your CSV with those column headings, not squeezed into a notes box. Those groups become independently toggleable layers on the live map, each with its own count and KPI roll-up, so a permanent secretary can look at their own agency and nothing else.
Users can be scoped to a branch of that hierarchy. A county transport officer signs in to their own vehicles, and their reports are filtered to the same subtree before the query runs — not hidden in the interface afterwards.
Compliance is a register, not a reminder someone sets
Registration, insurance, road worthiness, annual inspection, permits and tax documents are filed against the vehicle or the driver with their expiry dates, and watched from then on. The warning window is yours to set — thirty days by default — and the coverage matrix shows vehicles against document types with the missing and expired cells marked, so a gap is visible before an inspector finds it, not after.
A renewal does not overwrite the old certificate. The superseded record is archived and linked to its successor, and any open expiry alert against it resolves itself.
What oversight asks, and where the answer already is
Who authorised this?
Every state change is appended to the audit log with the actor, their role, the before and after values, the IP address and the time. Records are written, never rewritten, and fuel transactions are insert-only.
Show me the whole trail for this vehicle.
Audit search filters by action, actor, entity and date range, and exports. The same trail backs the History tab on every vehicle and driver, so the evidence and the working screen are the same record.
Who at Kappagee can see our data?
Support impersonation requires a typed reason, is capped at two hours, announces itself with a banner on screen for the whole session, and is written to your audit log — not ours.
Can a reviewer be given access without being able to change anything?
The auditor role is read-only across the tenant, and the refusal is enforced in the request guard rather than route by route, so a new endpoint cannot quietly hand an auditor a write path.
Where does the data physically sit?
Standard accounts share a schema with tenant scoping in the query layer and Postgres row-level security underneath it. Ministries and utilities can take a dedicated schema, and the architecture supports in-country hosting.
What happened to the vehicles we wrote off?
Decommissioning is a workflow: request with a reason, approval with the final odometer, then a disposal record — auction or scrap, with amount, buyer and date. The auction can run on the platform, with verified bidders, a reserve and a settlement record.
Vehicle use is now traceable, not asserted. After-hours movement and fuelling away from an approved station are flagged on their own, with the evidence attached — which is exactly what accountability requires.
02Logistics· Corridors & distribution
The margin is the gap between the planned run and the actual one.
Nobody loses a haulage contract on the rate card. They lose it on the truck that went the long way, the two hours idling at a junction, the fill that never reached the tank, and the customer who could not be told where their load was.
Origin, destination and waypoints for a multi-stop run, with the driver and vehicle assigned and distance and ETA pre-computed from the routing API. Special trips need approval before the driver can start; a vehicle can only have one trip running at a time.
Each trip carries its own deviation threshold in metres — 500 m unless you change it — and crossing it raises a route-deviation alert while the truck is still out. For fixed lanes, a corridor geofence buffers the road itself and treats leaving it as an event.
Trips are also logged automatically, ignition to ignition, so the distance record does not depend on a driver remembering to press start. Post-completion you get distance, drive time, idle, max and average speed and the safety events on that run, exportable as PDF.
Litres dispensed against trip distance give L/100 km, km/L and cost per kilometre for each vehicle, with a fleet baseline beside them. A vehicle running more than 15% worse than the fleet is flagged for investigation rather than left in a spreadsheet. Maintenance spend is tracked per kilometre on the same basis.
The card is assigned to a vehicle or a driver, and the authorization checks the vehicle’s own last GPS fix against the station before fuel is dispensed. Outside that station’s 200 m fuelling zone, or on a fix older than five minutes, the transaction is flagged or declined. The odometer entered at the pump has to be at or above the last one recorded.
Idle beyond your ceiling, speeding against your limit, movement inside your after-hours window, a second fill on the same card at another station within thirty minutes, and a tank level that drops while the vehicle is stationary.
500m
Route deviation, per trip
The default; set it per run.
1–3s
Position refresh on the map
500m
Card must be within, of the vehicle
30min
Repeat-fill window flagged
Across the border
A truck to Freetown or Nzérékoré does not leave the record behind
Cross-border runs to Sierra Leone, Guinea and Ivory Coast spend hours outside coverage and roam onto networks the tracker was not provisioned for. The dual-SIM units common in the region handle the second part; the store-and-forward buffer handles the first. The stretch that was dark uploads in order when the truck comes back into signal, and the alerts for it are evaluated then rather than skipped.
Balances, receipts and reports stay in the account’s own currency — LRD, SLL, GNF or USD — held as integers in minor units, so a fuel ledger still reconciles to the cent after a year of transactions.

It works on the routes where the network doesn’t. Trips sync as soon as the signal returns, and nothing is lost. Our trucks running to Sierra Leone, Guinea and Ivory Coast stay in our sight for the whole journey.
03NGOs & programmes· Donor projects
The report is the deliverable. Build the record so it survives being read.
A programme fleet is spent money before it is anything else. The fleet record has to answer to a grant agreement, a finance officer in another country, and an auditor who will not accept a spreadsheet that could have been typed the night before.
Tag the fleet the way the grant is structured
Vehicles carry a department, a project tag and free tags, and the no-code report builder groups by department without anyone writing SQL. Where a programme is a standing structure rather than a label, it can be an org unit instead: vehicles are assigned to it, staff are scoped to it, and reports splice that scope into the query itself.
Budgets are enforced where the money actually leaves: caps on the card — per transaction, per day, per week, per month, litres per fill, permitted hours, approved stations only — and a monthly litre quota on the vehicle. The project tag is how you roll those up. A per-grant breakdown inside the executive dashboard is not built yet; today it is a saved report, and we would rather say so.
The donor pack, generated rather than assembled
The executive summary runs over a window you choose — 3, 6, 12 or 24 months — with the previous window beside it and the change on every figure: trips, distance, fuel spend, CO₂, operating cost and cost per kilometre. Beneath it, a monthly trend, average driver score and safety events, maintenance spend, estimated CO₂ from litres by fuel type, and a compliance snapshot of expired and expiring documents. It exports as PDF or CSV.
Scheduled reports go out daily, weekly or monthly to named recipients as CSV, XLSX or PDF, each run windowed to its own cadence — a monthly report covers last month, not all time — and scoped to your account so no other tenant’s data can reach the attachment.
REPORT VERIFICATION
Valid- Code
- KF-LISG-FUEL-20260731-0007-J4K2QX
- Organisation
- LISGIS
- Report
- Fuel consumption by vehicle
- Period
- 2026-07-01 → 2026-07-31
- Generated
- 2026-08-01 06:02 · scheduled run
- Integrity
- sha256 · 4f9c1ab7e2d0
Every document the platform generates is minted with a unique code and a SHA-256 hash of its contents, and registered as it is produced. A donor holding the PDF can check the code against the system and get back the organisation, the report, the period, who generated it and when. A figure that was edited after export no longer matches its own hash.
Field work, offline
Work orders, inspections, incidents and fuel-card use queue on the phone and sync when signal returns. Proof of work is a checklist, mandatory photos and a signature, GPS-correlated to the site — and a job whose GPS never matched the site is flagged as a ghost visit.
Staff who drive their own vehicle
Per-kilometre rates by vehicle type, trips compiled into a claim, finance approval, and a payroll CSV — instead of a mileage form and a monthly argument.
Retention
Retention is an account setting rather than a fixed platform policy, so a five-year grant is not reporting against a ninety-day window.

Fuel spend per vehicle is visible before the month closes, not after — and that changed how we plan the fleet. For the 25 vehicles assigned to the World Bank’s HISWA project, we can closely monitor every one of them as they move across the 15 counties.

04Mining & construction· Sites & heavy assets
The site is exactly where the network isn’t.
Haul roads, quarries and construction camps sit outside coverage, run assets worth more than the rest of the fleet combined, and hold their own diesel in a tank that anyone with a hose can reach. None of that is an edge case here.
Zones, drawn on the map
Circle, polygon, multi-polygon and route corridor, categorised — depot, no-go, service — with entry, exit, dwell-time and curfew rules per zone, and scoped to a set of vehicles so a haul-road rule does not page the whole fleet.
Built for no signal
The tracker stores tens of thousands of records and forwards them in a batch when it reconnects. Records are ordered by the device clock, de-duplicated on device and timestamp, and the alert rules are then re-evaluated across the recovered stretch, so an event at 11:20 in a dead zone is still raised.
Bulk fuel on the ground
Site tanks are registered with their shape and dimensions, so a stick reading in millimetres converts to litres instead of being looked up on a paper chart. Deliveries are booked on the measured intake between the two dips, and the gap to the waybill is kept as the claim against the supplier.
Defects, not just alarms
Engine fault codes are recorded per vehicle with first and last seen, an occurrence count and the odometer at onset, decoded to a system and a severity. Each failed inspection item becomes its own defect record, and several defects can be promoted into one workshop visit that resolves them all when it completes.
Uptime, costed
Work orders carry downtime hours, labour, parts and vendor, so a machine’s cost and its lost days sit on the same record. Parts have reorder levels that raise a low-stock alert, and every stock movement is written to a ledger with the balance after it.
Tyres, which are the second bill
Mount, rotate, inspect and dispose against an axle diagram, with tread measured against the 1.6 mm legal floor, a wear-rate projection to remaining kilometres, cost per kilometre by brand, and retread counts.
32k–100krecords
Buffered on the tracker
Depending on the model.
1.6mm
Tread floor, watched per tyre
500km / 7 d
Service lead before due
4geometries
Circle, polygon, multi, corridor
One honest note: preventive schedules run on distance or calendar intervals. Plant that is metered in engine hours rather than kilometres is scheduled on the calendar today, with the fault-code registry and inspection defects catching what a run-hour counter would have.
05Station partners· The forecourt
A back office for the forecourt, not a card terminal in the corner.
A partner station does not have a fleet problem. It has three numbers that have to agree by the end of every shift, a tank that quietly loses product, and an invoice to us it cannot check. That is what the partner side is built around.
A shift is a custody handover
The shift opens against the pump meters and closes against them again. Three numbers then have to reconcile: what the meters say left the tanks, the card sales we authorised inside that window, and the cash the attendant counted out. The meters are the only one of the three that neither side controls, so they are what the other two are measured against.
Closing and signing off are deliberately separate acts. The attendant closes the shift; a supervisor accepts the variance with a note. Collapse the two and nobody ever has to explain a short drawer. A meter that rolls over is recorded as a rollover rather than read as a day of negative sales.
Wet stock, measured rather than assumed
Tanks are held with capacity, safe fill and a low-level threshold, and with their shape and dimensions, so a stick reading in millimetres converts straight to litres instead of being looked up on a paper dip chart. Each dip is stored with the book figure it was measured against, so the discrepancy the row exists to record cannot be recomputed away later.
A delivery moves the book by the measured intake between the before and after dips, not by the waybill — the waybill is a claim about what left the depot, the dip is what arrived. The difference is kept as the claim against the supplier instead of resurfacing a week later as a sales shortfall blamed on the attendants. A discharge that would push the tank past its working capacity is refused with the numbers shown.
<200ms
Authorization at the pump
02:30daily
Settlement run, Monrovia time
200m
Approved fuelling zone
SHIFT 2214 · AM-SINKOR · 06:00–14:00
Signed offPump meters
Pump 1
128,430.0 → 130,110.0
1,680.0 L
Diesel · Tank A
Pump 2
96,204.0 → 97,151.0
947.0 L
Diesel · Tank A
Pump 3
74,880.0 → 75,486.0
606.0 L
Petrol · Tank B
The three numbers
Metered sales
3,233.0 L across three pumps
LRD 812,086.00
Card sales
41 transactions · 1,120.0 L authorised
LRD 277,760.00
Cash declared
counted by the attendant at handover
LRD 534,000.00
Variance
declared cash + card sales − metered sales
LRD −326.00 · short
TANK A · DIESEL · 30,000 L
30 days- Opening book
- 18,640 L
- Delivered
- +49,900 L
- Metered out
- −46,120 L
- Closing book
- 22,420 L
- Last dip
- 22,352 L · 07:10
- Variance
- −68 L · −0.07% of throughput
Sample day close · fields and arithmetic as recorded
From the pump to the bank account
The attendant scans the driver’s QR or takes the card and PIN, enters product, litres and odometer, and gets an approval or a decline with its reason in under a fifth of a second. If the connection is down, the POS authorises against locally cached card rules, queues the transaction and flags it for review at sync.
A run at 02:30 Africa/Monrovia settles the previous trading day: the day’s completed transactions summed per station, commission at the agreed rate deducted, and a settlement record written with the transaction count, gross, commission and net. Every line behind it is inspectable, and a figure you disagree with raises a dispute that becomes a support ticket with a thread.
The station nominates the destination — bank transfer, Orange Money, MTN Mobile Money or Airtel Money — and Kappagee verifies it before any money moves there. Accounts are effective-dated rather than overwritten, so the history of where funds went survives. Mobile money lands the same working day, bank transfer in one to two.
Pending settlements show the blocking reason — no account on file, verification still running, account rejected — instead of a forecast date that was never going to hold.
A partner login is bound to one station and fails closed without that link. Your staff see your station: its transactions, shifts, tanks, deliveries, settlements and payout account, and nothing belonging to any other site on the network.
06Rollout· Getting running
What putting this in actually involves.
Six steps, in this order. A fleet whose vehicles already carry trackers is usually live in the same week; the fuel side follows once your station agreements are in place.
- 01
The account
A tenant record, your own subdomain, roles created from the standard template, module flags set for what you bought — fuel stays off unless you took it — a first administrator with a one-time password, and a TENANT_CREATED entry in the audit log from the first minute.
- 02
The devices
Trackers bind to vehicles by IMEI, one device at a time, with the swap history kept. Teltonika, Concox and Queclink are supported through adapters, including the dual-SIM units common here, so a fleet already fitted is repointed rather than re-equipped. Large registries come in by CSV.
- 03
The registry
Vehicles import from CSV with a validation error report rather than a silent partial load — ministry, agency, county and department are columns, not custom fields. Drivers are filed with licence class and expiry, medical certificate and emergency contact. Documents are uploaded with their expiry dates and start being watched immediately.
- 04
The policy
Speed limit, after-hours window, idle ceiling, fuel benchmark in L/100 km, currency, distance unit, document warning days, the tank-drop percentage that counts as theft. Then geofences drawn on the map, alert rules with cooldowns, escalation chains by severity, roles assigned, MFA on privileged accounts.
- 05
The fuel side
Stations are registered and each one’s approved 200 m fuelling zone is created with it. Cards are issued against a vehicle or driver with their caps and PINs, the wallet is funded by Mobile Money or bank transfer, and the station gets its POS credentials.
- 06
Running
The command centre on the wall, scheduled reports going to named recipients on their own cadence, SCIM and OIDC single sign-on if your IT department provisions users centrally, and scoped API keys or webhooks if the ERP needs the data.
Bring your own fleet to the demo.
Thirty minutes on your vehicles, your routes and your fuel spend. Tell us which of the five you are and we will show that argument: the audit trail, the corridor, the donor pack, the site, or the forecourt close.
What we need from you to start
Vehicle list
Plate, make, model, fuel type, tank capacity, and the department or agency it belongs to.
Driver list
Name, licence number and class with its expiry, and an emergency contact — the number the SOS actually calls.
Devices
The IMEIs already fitted, or a decision on which tracker model to buy.
Your thresholds
Speed limit, after-hours window, idle ceiling, currency. Defaults are provided, and most operators change them in the first fortnight.
Stations
If you are taking fuel: the stations your vehicles are allowed to use.