Licences and compliance
Hours-of-service limits, the compliance log, the driver compliance score, and keeping licences and medicals in date.
Two different things sit under the word compliance in Cooriroo. One is hours of service — rules about how long a driver may work, computed from their shifts. The other is documents — licences, medicals and background checks that expire on a date. The first is automatic and continuous; the second is a set of dates you keep current.
Who can do this
- Role
- Administrators
- Permission
shifts:readshifts:writedrivers:write
The rules are tenant-wide and set under Customize. A driver can see their own compliance score in the driver portal, but not the log and not another driver’s score.
The rules and where they live
All of it is one screen: Customize → Compliance & Shifts. The settings apply to the whole tenant, not per driver and not per depot, and every one has a default — a tenant that never opens the screen is still governed by rules rather than by none.
| Setting | What it governs | Default |
|---|---|---|
| Daily hours limit | Working hours inside one day | 11 hours |
| Weekly hours limit | Working hours since the reset day | 60 hours |
| Mandatory rest hours | Gap between one shift ending and the next starting | 10 hours |
| Max shift duration | Length of any single shift, breaks included | Set on the screen |
| Consecutive days limit | Days worked without a day off | 6 days |
| Overtime threshold | Working hours past which time counts as overtime | 8 hours |
| Minimum break length | How long a break must be to be deducted from hours | 15 minutes |
| Alert threshold | Share of a limit that raises a near-miss instead | 80 per cent |
| Weekly reset day | Day the weekly counter restarts | Monday |
| No-show grace period | Lateness allowed before a shift is marked missed | 15 minutes |
Where the rules are checked
The limits are evaluated at two distinct moments, and they behave differently.
Before the fact, when you assign a driver to a trip. The conflict check asks whether this driver, taking this trip, would breach the daily limit, the weekly limit, the rest requirement, the consecutive-days limit or the maximum shift duration. Anything it finds appears alongside the other scheduling conflicts, with the driver’s current figure and the limit it would cross. A check that cannot run is reported too, not treated as a clean result.
After the fact, when a shift is clocked out. The finished shift is measured against the daily limit, the weekly total, the rest gap since the previous shift and the maximum duration, and each breach becomes an entry in the compliance log. Coming close counts too: crossing your alert threshold — 80 per cent of a limit by default — records a near-miss, so a team creeping towards the ceiling is visible before anyone breaks it.
The compliance log
The log is the second tab on the Shifts screen. Each row is one event about one driver, with the time it was recorded, the shift it came from where there was one, and the numbers behind it — the hours worked, the limit crossed, the rest taken. Filter it by event type and date range; the driver record carries the same log narrowed to that one person.
Nine event types are written, at two severities:
- Violations —
no_show,daily_exceeded,weekly_exceeded,rest_violated,max_shift_exceeded. - Near misses, informational —
daily_near_miss,weekly_near_miss,rest_near_miss,max_shift_near_miss.
The event filter matches the stored type exactly, so a near-miss is found under the limit it belongs to rather than under one combined heading. Consecutive days is checked before a trip assignment but never written to the log.
Overriding an event
An event can be overridden once, and an override needs a reason. The row then carries who accepted it and why, which is the point: the reason a breach was allowed to stand belongs next to the breach rather than in somebody’s inbox. An event that has already been overridden cannot be overridden again.
The compliance score
Each driver carries a single percentage, shown on the Compliance tab of their record and on their own shift page in the driver portal. Start at 100, subtract the share of their completed shifts that produced a violation, floor at zero: four violations across forty completed shifts scores 90. Three consequences follow:
- It is all-time, not a rolling window. A violation from a year ago still counts, and the score recovers only as clean shifts accumulate.
- A driver with no completed shifts scores 100. A perfect score on a new starter means no data, not a good record.
- Only violations count. Near misses never move the score, which is what makes them safe to leave switched on at a sensitive threshold.
Licences and other expiring documents
These live on the driver record, not under Customize: licence number, class and expiry; medical exam expiry; background check date and its status of cleared, pending or failed; and a free list of training certifications. All are optional, and a driver with no licence expiry recorded is treated as valid rather than expired — a blank field hides them from every expiry report rather than flagging them.
Once a licence expiry is set, it shows up in three places:
- The drivers list — the date on each row, marked as expired or expiring soon.
- The driver’s Compliance tab — the date, a valid, expiring or expired badge, the days remaining, and the medical exam expiry beside it.
- The dashboard’s compliance alerts — a count of licences expiring within 30 days, and a separate count of those already past it.
Thirty days is the window the product treats as expiring soon throughout, and it is fixed rather than configurable.
When the numbers look wrong
A driver’s score is 100 but the log shows violations against them
The score divides violations by completed shifts. Missed shifts are not completed shifts, so a driver whose only events are no-shows has a zero denominator.
Read the log rather than the score for a driver with few or no completed shifts. The score becomes meaningful once they have a body of finished work behind them.
No hours-of-service warnings appear when assigning an obviously overloaded driver
Enforcement is switched off, which skips the check entirely rather than merely downgrading it.
Set enforcement to Warn Only or Block under Customize → Compliance & Shifts. Neither prevents the assignment — both report it.
Overtime is logged on shifts that ran exactly as rostered
Overtime is measured against the tenant-wide overtime threshold, not against each shift’s own planned length.
Raise the threshold to the point at which overtime is genuinely paid. Clock in, clock out, no-shows covers how the figure is computed.
A driver with no licence expiry recorded never appears in the expiry reports
A blank expiry date is treated as valid, not as missing, so the driver is excluded from both the expiring and the expired counts.
Scan the drivers list for rows with no expiry date and fill them in. There is no separate alert for missing documents.
Terminology
Your organisation can rename these. If your screens say something else, this is what they mean here.
- Driver
- The person the rules and documents apply to. Some tenants call these operators, couriers or crew.Rename it in Customize → Terminology
- Shift
- The block of working time every hours-of-service figure is computed from. Some tenants call these duties or tours.Rename it in Customize → Terminology