The two-minute version
What the score is
Every driver carries one number from 0 to 100. It answers a single question: how much risk did this person generate per mile driven?
Not how many events they had — a driver who runs 3,000 miles a month will always out-event one who runs 400. Everything is measured per 100 miles, so your busiest driver and your lightest driver are judged on the same terms.
The score moves when behaviour changes. It is recomputed on a rolling 30-day window, so a bad week fades on its own instead of following someone for a quarter.
Why you can defend this number
Three things separate it from a black box, and all three matter the first time a driver, a union rep, or an insurer asks you to justify a score.
It is your own data and your own weights
The rules come from your MyGeotab database. The weights are set by you, in the portal, and can be changed in a minute. Nothing is imported from another fleet and nothing is modelled off an industry average.
Every point is traceable
Open any driver and the score decomposes into the exact behaviours that produced it, the count of each, the miles they were measured against, and the points each one cost. There is no residual, no unexplained remainder.
It only counts trips they signed into
This is the part no competitor can do. A shared truck does not penalise whoever drove it last. If nobody claimed the trip, nobody is charged for it — it lands on the unattributed list instead of on a person.
Nothing is invented
Where a number cannot be computed, the screen says so by name rather than showing a zero or a flat line. A blank is a known gap, never a guess.
Insurers and customers do not ask "what is your fleet score." They ask "how many drivers are below 60, and what are you doing about them." The score exists to make that list short, ranked, and defensible — and the coaching record exists to answer the second half.
How this differs from Samsara, Lytx and Geotab's own score
All four produce a number out of 100. They disagree about what the number is for.
| Typical vendor score | Geotab native | Driiver | |
|---|---|---|---|
| Who is charged | The vehicle, then mapped to a driver | The vehicle, then mapped to a driver | Only the person who signed in. Unclaimed trips are excluded and listed separately. |
| Weights | Vendor-set, largely fixed | Configurable, applied to a rule score | Per-rule, set by you. Speeding 10-over and Speeding 20-over can carry different numbers. |
| Shape of the curve | Usually linear from a baseline | Linear: 100 − occurrences per 1,000 mi, weighted | Linear per 100 work miles, on a 100-mile evidence floor. Every deduction is a weight you set times a repeat multiplier — no curve constant, nothing to calibrate. |
| Repeat behaviour | Counted the same each time | Counted the same each time | Escalates. The eleventh hard brake costs more than the first. |
| Improvement | Slow to move | Slow to move | Events age out of the 30-day window, clean miles dilute the rate, and a 30-day clean streak (500+ mi) earns credit back. |
Why linear — and why this linear
A naive linear score fails at the bottom: run 100 − weighted events per 1,000 mi against a real fleet and dozens of drivers pin at exactly zero — unrankable, and unable to ever show improvement. An exponential curve fixes the ranking but buys it with a calibration constant nobody in the room can explain.
The deployed formula keeps the straight line and removes the reasons it used to fail:
- Bursts collapse first. Three hard brakes at one intersection are one event with three sources — charged once, at the heaviest rule that fired.
- The denominator has a floor. Deductions are per 100 work miles on max(miles, 100), so one bad afternoon of yard moves cannot wipe out a score.
- Weights are priced, not guessed. Each rule carries a severity price from 0.25 up to 20 (collision) — one event costs exactly its weight per 100 miles.
- Repeats escalate, bounded. The second event of a behaviour in a work week costs ×1.5, the third and later ×2 — capped there, never runaway.
On a live 357-driver fleet this scores 161 qualifying drivers from the 70s to 100 with a clean spread through the coaching bands — and nobody pinned at zero, because the floor, the collapse and the pricing take away every path to it.
We reproduced Geotab's formula exactly from a customer's own export: rule score = 100 − (occurrences per 1,000 miles), then total = Σ(weight × rule score). It matched to zero error. It is a reasonable measure of rule compliance. It is not a measure of risk per mile, and it charges the vehicle rather than the driver.
Reading a score
Below 60 is the number that matters commercially. It is the first thing an insurer or a customer asks for, and it is the list the Dashboard surfaces at the top of the briefing.
Drivers who are not scored
A driver needs miles before they get a number. Under 20 miles in the window the tile shows —; under 100 miles it is tagged low mileage and the driver leaves the ranking — not ranked last. Newly activated drivers spend their first 14 days in a baseline window, scored but unranked. A score built on eleven miles would be noise, and ranking someone last for being new is how a safety programme loses the room in week one.
What a manager should do with it
- Work the below 60 list first. It is short by design.
- Open the driver. The screen tells you which single behaviour costs them the most, and what their score would be if that one behaviour were cleared.
- Coach that one thing. Not the list of nine.
- Check it held. The score moves on its own as clean miles accumulate.
How the number is actually calculated
This section is for the person who has to defend the number in a room. Everything below is the deployed formula, not a description of one.
Step 1 — collapse bursts into events
Exceptions from the same driver and behaviour inside that behaviour's cooldown (5–60 minutes, set per behaviour) collapse into one coachable event that keeps every exception as a source. Different rules firing on the same behaviour within 60 seconds are also one event. The event is charged once, at the heaviest enabled rule that fired — supporting rules are shown, never billed twice.
Step 2 — keep a 30-day window, work hours split out
The score reads a rolling 30-day window; an event simply ages out at day 31 — no decay constant. Events are stamped in or out of the fleet's work schedule (default Mon–Sat 06:00–18:00, tenant-editable), and each driver carries two scores: the work-hours score, which ranks, and an after-hours score alongside it.
Step 3 — escalate repeats, bounded
The second event of the same behaviour in a work week multiplies by 1.5, the third and later by 2.0 — capped there. The counter resets Monday at midnight local, so an old bad week never inflates a new one.
Step 4 — deduct per 100 work miles
score = 100 − deducted × 100 / max( work miles , 100 )
The weight is the price of one event of that behaviour per 100 miles — 0.5 for posted-limit speeding, 5 for phone or seatbelt, 20 for a collision. Rules land in six behaviour categories — Collision, Speeding, Seatbelt, Phone Use, Distraction, Harsh Driving — and each rule keeps its own price inside its category. When several rules fired in one event, only the heaviest enabled one is charged (worst wins). A rule switched off on the Scoring rules screen produces nothing at all — no deduction, no lane, no streak break.
Step 5 — earn some back
A 30-day clean streak with at least 500 miles earns +2, capped at 100. Beyond the credit, recovery is structural: every clean mile dilutes the rate and every day moves an old event closer to the edge of the window. Scores recover on their own when behaviour changes — no reset button needed.
Step 6 — no curve
That is the whole formula. It is linear and bounded, every point traces to a named event with a weight the fleet set, and the same arithmetic runs for a 2-truck fleet and a 2,000-truck fleet. There is no fleet-level constant, so a fleet-wide improvement moves the fleet average — the number is comparable month over month out of the box.
Good is 80 and up. Fair is 60–79. Below 60 needs work. The cut lines are the same for every fleet on Driiver, so "a 74 at your fleet" means the same thing at the next one — insurers and customers can trust the label without asking how it was tuned.
Setting weights
Weights live in Scoring rules. Every rule carries its own number — categories only group the list. Speeding 10-over, Speeding 20-over and Speeding over 80 mph can each be weighted differently, because they are different risks.
The scale runs 0.25 to 20 — a weight is a price
A weight is not an abstract 1–10 rating. It is the exact number of points one event of that behaviour costs per 100 work miles, so the scale runs from trivial to catastrophic, each step roughly double the one below it:
| Weight | Use it for | Catalogue examples |
|---|---|---|
| 20 | The worst thing on the card | Collision |
| 5–10 | Directly causes collisions, or legal exposure | Phone Use, Seatbelt, top speeding tiers |
| 2 | Serious, coachable patterns | Distraction (eating, drinking, smoking, fatigue) |
| 1 | Symptoms worth watching | Harsh Driving (braking, acceleration, cornering, rolling stops) |
| 0.25–0.5 | Policy and noise-level items | Posted-limit speeding |
| 0 / off | Engine and vehicle-data rules | Tyre pressure, oil temperature — shown, never scored |
Sense-check any change against the arithmetic: at weight 5, four events in a 500-mile week costs 4 × 5 × 100 / 500 = 4 points. At weight 20, one collision on a 100-mile week costs the driver 20 — off the Good band in one event, which is the point.
If a rule is enabled in MyGeotab but its threshold is set so tight that it fires on everybody, it is measuring your threshold, not your drivers. The Dashboard flags rules firing on more than 80% of the fleet for exactly this reason. Fix the threshold or drop the weight — do not coach it.
The fleet-level numbers
The Dashboard opens with a briefing built from the same snapshot rows the driver list uses — one set of numbers everywhere, by construction.
| Number | What it means | What to do with it |
|---|---|---|
| Fleet safety score | Mean of all qualifying drivers | A trend line, not a target. Remember K recalibrates. |
| Below 60 | Count of drivers in the red band | The number an insurer asks for. Work it down. |
| Attribution rate | Share of trips carrying a verified driver | The number the whole product exists to move. Below 85% means the scores under-cover the fleet. |
| Unattributed trips | Trips nobody claimed, rolled up by vehicle | A truck at the top of that list is missing a fob or has a driver who was never shown how to use it. |
| Risk concentration | How few drivers carry half the deduction | Usually far fewer than people expect. A handful of conversations moves the whole number. |
| Rules firing on everyone | Rules hitting over 80% of drivers | A threshold problem, not a driver problem. |
| Dead rules | Enabled, fired zero times in the window | Either the threshold is unreachable or the behaviour genuinely does not happen. |
Questions you will be asked
Every setting, and its default
All of these are per-fleet and adjustable. The defaults are what a new tenant starts on.
| Setting | Default | What it controls |
|---|---|---|
| Scoring window | 30 days | How far back events are counted; an event ages out at day 31 |
| Evidence floor | 100 mi | Deduction denominator is max(work miles, 100); under it the driver is tagged low mileage and leaves the rank |
| Display floor | 20 mi | Below this the tile shows — instead of a number |
| Rule weight | 0.25–20, per rule | Points one event costs per 100 work miles; the heaviest enabled rule wins inside an event |
| Repeat multiplier | ×1.5 / ×2 | 2nd / 3rd+ event of a behaviour per work week; resets Monday 00:00 local |
| Clean-streak credit | +2 | 30 clean days with 500+ miles; credit only, capped at 100 |
| Cooldown | 5–60 min, per behaviour | Exceptions inside it collapse into one event with sources |
| Work schedule | Mon–Sat 06:00–18:00 | Stamps events work / after-hours; the work-hours score ranks |
| Baseline window | 14 days | Newly activated drivers are scored but unranked |
MyGeotab reports trip distance in kilometres. Driiver converts on ingest. This was verified against odometer deltas on a live vehicle; without the conversion every per-100-mile rate reads 1.61× too generous.