Case Study · SpeedSense by iVMS
Resolving a traffic fine in seconds, not weeks.
iVMS had a clear idea for how rental fleets should handle traffic violations. Lost Circle built the platform that makes it work, from the moment a camera is triggered to a settled, evidenced record.

6 modules
across detection, settlement and fleet management
95%
of traffic fines recovered, as published by iVMS
85%
less admin time on violations, as published by iVMS
2 markets
across UAE and UK operations
The situation.
A traffic fine reaches a rental company weeks after the journey it relates to.
By then the vehicle has been hired out twice more and the driver has flown home. The operator has a penalty notice, an approximate date, and no straightforward way to connect the two. The customer, if they are ever contacted, receives a charge for something they cannot place and did not know had happened.
Neither side is well served by that. Operators absorb losses they never planned for. Customers feel charged after the fact for an event nobody told them about. The administrative cost of resolving a single fine frequently exceeds the fine itself.
iVMS saw the opportunity clearly. The gap was engineering. Closing it meant software that could recognise a violation at the moment it happened, record it with evidence both parties could see, connect it to the right rental contract, and resolve it while the customer was still there to be told.
Project snapshot
Client
iVMS
Industry
Fleet telematics, vehicle rental
Engagement
Platform build and systems integration
Platform
Web dashboard, in-vehicle telematics, WhatsApp notifications
Services
Custom software development, systems integration
Markets
UAE and UK
The challenge.
Three problems had to be solved inside one platform.
01
A record both sides can trust
For a violation to be resolved rather than argued about, it has to show where, when, how fast and under which contract. Location, speed, time and driver had to be captured together at the moment of the event rather than reconstructed weeks later.
02
Resolution while the customer is present
Everything that makes traffic fines painful comes from delay. Notification, authorisation and settlement had to happen as one sequence, in seconds, while the hire is still live and the driver can still be reached.
03
A fleet platform, not a fines tool
The same system carries live diagnostics, remote fault clearing, fuel and mileage monitoring, geofencing, driver scoring and digital contracts. All of it reads from one vehicle data stream, so the underlying model had to serve every module.
The practical constraint
Much of what shaped the build sat outside the codebase. Position data comes from telematics units that lose signal in tunnels and car parks, so every event had to survive a delayed replay without being lost or counted twice. Customer messages go through WhatsApp’s pre-approved business templates, so the notification had to be designed to that format from the outset. And settlement depends on a card authorisation taken at the rental counter, so the platform could never charge more than the customer had already agreed to.
How detection works.
The obvious approach fails within a day of going live.
Comparing a vehicle’s GPS speed against a posted limit produces false alerts constantly. Readings fluctuate under multipath in dense urban areas. Limits differ between carriageways, service roads and tunnels. And a violation only exists where a camera exists and is actually facing the vehicle.
So the system treats a violation as an intersection, not a reading. Four conditions have to hold at once: the vehicle was inside a camera’s enforcement zone, travelling in the direction that camera enforces, above the limit for that zone, and doing so consistently rather than for a single noisy sample.
Each enforcement point is stored with its coordinates, the bearing it enforces, the applicable limit, a tolerance margin and a capture radius. Cameras sit in a spatial index, so each position update is checked against nearby points rather than a national registry. That is what makes it viable at fleet scale and high sampling rates.
# Runs on every position update from the telematics unit
on position_update(vehicle_id, lat, lng, speed, heading, accuracy, device_time):
if accuracy > ACCURACY_THRESHOLD:
return # reject unreliable fixes
candidates = camera_index.within_radius(lat, lng, SEARCH_RADIUS)
for camera in candidates:
if not camera.zone.contains(lat, lng): continue
if angular_diff(heading, camera.bearing) > TOL: continue # opposite carriageway
if speed <= camera.limit + camera.tolerance: continue
window = recent_samples(vehicle_id, SUSTAIN_WINDOW)
breaching = [s for s in window if in_breach(s, camera)]
if len(breaching) < MIN_SUSTAINED_SAMPLES: continue # GPS spike
contract = contract_at(vehicle_id, device_time)
event = build_violation_event(
vehicle_id, camera.id, contract.id, contract.driver_id,
samples = window,
peak_speed = max(s.speed for s in breaching),
device_time = device_time,
device_id = device.serial)
event.hash = sha256(canonical_form(event))
if already_recorded(event.fingerprint): continue # replay safety
persist(event)
enqueue(NotifyAndSettle, event)
Simplified logic, run on every position update from the telematics unit.
Persistence over instants
A single sample above the limit is discarded. Only a sustained breach across the window is recorded. This is the difference between a system an operator trusts and one they stop believing after the first false alert.
Direction as a first-class filter
Heading compared against the camera’s enforced bearing removes the largest class of false positive, which is a vehicle passing a camera on the opposite carriageway.
Device time, not server time
Units lose signal in tunnels and car parks. Events buffer on the device and replay when the connection returns, so every record is ordered by when it was captured. Fingerprinting stops a buffer flush creating duplicates.
Hashed on write
The record is canonicalised and hashed at creation, so later alteration is detectable. That is what lets it stand as an evidenced record rather than an assertion.
“A record both sides can see is a record neither side has to argue about.”
From detection to settled.
Detecting a violation solves half the problem. The other half is time.
Every difficulty with traffic fines comes from the weeks between the event and the paperwork. SpeedSense removes that gap by making notification and settlement a single sequence that runs while the hire is still live.
The driver receives a WhatsApp message showing where they were, how fast they were going, the posted limit and the time, with a link to the underlying record. The amount is applied to the deposit authorised at the counter, and a receipt follows.
The customer knows what happened while they can still remember the journey. The operator recovers a cost they would previously have absorbed. Neither party has to open a dispute about an event nobody can reconstruct.
Detected
Sustained breach confirmed inside an enforcement zone.
Recorded
Evidence sealed and matched to the live rental contract.
Notified
Driver messaged with location, speed, limit and time.
Settled
Amount applied to the deposit authorised at the counter.
Receipted
Confirmation issued and the operator dashboard updated.
Illustrative example. Vehicle, location and amount are sample data.
Why WhatsApp rather than email
The drivers are international visitors on roaming connections who will not check an address they gave at a rental desk. WhatsApp reaches them on the device in their hand, in a channel they already use, with delivery and read status the operator can see. A notification that is not read is not a notification.
Why the record travels with the charge
A charge without context is what customers object to. Sending the location, the speed, the limit and the time in the same message means the settlement explains itself. Most disputes are not about the money. They are about not knowing what the money was for.
Idempotent by design
Notification and settlement both key off the violation fingerprint, so a retry or a device replay can never message twice or charge twice.
Bounded by the event
The amount is limited to the violation value and the authorisation held. The system cannot take more than the record supports.
Built to the messaging rules
Transactional WhatsApp notifications require pre-approved templates. The message structure was designed to that constraint from the start rather than discovered late.
Failure is visible
A declined authorisation or an undelivered message surfaces on the operator dashboard as an exception to action, not a line in a log.
Four goals. One direction.
Evidenced
Every violation carries a record both the operator and the customer can see.
Immediate
Detection, notification and settlement complete while the hire is still live.
Live
Vehicle and driver data reflects reality now, not at the last sync.
Operational
Built for the daily reality of a rental desk, not for a demo.
What we built.
Six modules, all reading from the same vehicle data stream.
Violation detection and evidence
The speed and position pipeline, the camera registry, and the sealed records everything downstream depends on.
Notification and settlement
WhatsApp messaging, banking API authorisation and capture, receipting, and the exception handling when either fails.
Deposit management
3D Secure authorisation at the point of rental, holding through the contract, and release or settlement at the end of hire.
Vehicle health and diagnostics
Live mileage and fuel monitoring, fault detection, remote fault clearing, and parts life tracking.
Tracking and geofencing
Real-time location, full trip history, and zone breach alerting across the fleet.
Driver scoring and contracts
Risk scoring, pre-approval screening, cross-company blacklist integration, and digital contract generation.



Vehicle health, remote diagnostics and digital contracts. Imagery courtesy of iVMS.
Built for the rental desk too.
The second person SpeedSense serves is the one behind the counter. Without it, a penalty notice arrives weeks late and someone has to work backwards through old contracts to find out who had the car, then chase a customer who has already gone home.
With it, each violation arrives already matched to the right contract and driver, with the evidence attached and the customer notified. Staff work from one dashboard that shows what has settled, what needs attention and why. A customer who comes back to the counter with a question gets an answer from the record, not a promise to look into it.

Why this matters.
Traffic violations cost rental operators in ways that rarely appear as a line item. Fines arriving after a customer has gone are written off quietly. Hours spent reconstructing which hire a penalty belongs to disappear into general admin. A vehicle held off the road by an unresolved violation is counted as downtime rather than as a process failure.
SpeedSense treats the delay itself as the problem. The event is recorded while the vehicle is on hire. The driver is told what happened while they still remember the road they were on. The amount is settled against an authorisation they gave knowingly at the counter, and the record explaining it sits behind a link in the same message.
The result is not a firmer process. It is a shorter one, and shorter turns out to be better for everybody involved.
Working on something similar.
Whether you have an existing platform that needs extending or a commercial idea that needs building properly, we would like to hear about it.