Start your free 14-day trial
Product Job Scheduling & RotasInvoicing & BACSHealth & SafetyStaff Mobile AppAnalytics & Reporting
Solutions Commercial CleaningDomestic CleaningEnd of TenancyFacilities ManagementWindow Cleaning
Free tools Cleaning Quote CalculatorPrice Per m² CalculatorUK VAT CalculatorProfit Margin CalculatorTrue Cost of a CleanerHoliday Entitlement CalculatorContract Tender CalculatorClient Lifetime Value All 14 free tools →
Learn How to start a cleaning businessHow to price cleaning jobsHow to win cleaning contractsHealth & safety for cleaners CleanFlo vs JobberCleanFlo vs ZenMaid
Browse all guides

The compliance score

One figure, on your dashboard and at the top of Health & Safety, worked out from your own records. This is every point of it, including the arithmetic, because a score you cannot explain to a client is not worth having.

In the app: Health & Safety Open CleanFlo
On this page

The compliance score is a number between 0 and 100 derived from three things you already keep in CleanFlo: your incidents, your audits and your risk assessments. Nothing else feeds it. It is not an assessment of your business by us, there is no benchmark against other companies in it, and no part of it is a judgement anyone at CleanFlo has made about you.

It is recalculated from your live records every time a screen carrying it loads. There is no nightly job, no cached figure and no lag: close an incident and refresh, and the number has moved.

The two places it appears

The score is shown twice, in two cards that are deliberately not identical. The dashboard card is the glance version, written to tell you whether to click. The card at the top of Health & Safety is the working version, and it will show you the whole sum.

Compliance Score
Live from your incidents, audits and risk assessments
Health & Safety
83
3 things need attention
2 Unresolved incidents1 Overdue audits1 Unmitigated risk
The Compliance Score card on the dashboard, with work outstanding. The verdict counts categories rather than records, and each chip carries the number of individual deductions in that category. Both link straight through.

When every category is clean, the same card reads Nothing outstanding, with the sub-line "No open incidents, no overdue audits and no high-risk assessments." That verdict appears only when not one of the four categories holds a single deduction, which means the score underneath it is 100. There is no partial version of it.

Compliance Score
Live from your incidents, audits and risk assessments
Health & Safety
100
Nothing outstanding
No open incidents, no overdue audits and no high-risk assessments.
The same card with nothing against it. Every incident closed, every audit on time, and no active assessment sitting at High or Critical residual risk.

Before you have recorded anything

A brand new account has no incidents, no audits and no assessments, and the arithmetic would happily give it 100. The dashboard refuses to do that, because telling a business it scored full marks on an inspection it never sat is worse than telling it nothing.

So with no records at all the dashboard ring is empty, the number is replaced by a dash, and the card reads Not started with one line underneath: "Log an incident, schedule an audit or write a risk assessment and your score appears here."

Compliance Score
Live from your incidents, audits and risk assessments
Health & Safety
Not started Log an incident, schedule an audit or write a risk assessment and your score appears here.
The Not started state, on the dashboard only. One record of any of the three kinds is enough to replace it with a real score.

Everyone starts at 100

The model is subtraction, and the card says so in its own words when you expand it: "Everyone starts at 100. Points come off for four things only, each capped so no single area can zero your score, and recent events count for more than old ones."

Three properties follow from that, and they are worth understanding because they are what stop the number being nonsense.

  • Every deduction is named. Nothing is taken off anonymously. Each point comes from one identified record, with the reason printed beside it, so you can read the whole sum back to a client or to us.
  • Recent events weigh more than old ones. A hazard that materialised last week says more about how you run today than one from three years ago. Old records fade, but they never vanish while they are still open.
  • Each category is capped. No single category can take you to zero, so improving one area is always visible and there is always a route back. The four caps sum to exactly 100, which is why the worst possible state scores 0 and every lost point is attributable.
app.cleanflo.io/health-safety
Search everything… ⌘K Health & Safety
Health & Safety

Incidents, audits, RAMS and your compliance vault

Log Incident
83
Compliance Score
17.2 points deducted from 100. The largest single cause is unresolved incidents.
Show working
Compliance Vault
18
All documents in date
Days Injury Free
5
Since last high/critical incident
Open Incidents
2
Requiring management review
Risk Assessments
4
1 with high/critical residual risk
IncidentsAuditsRisk AssessmentsDocuments
The Health & Safety screen. The compliance card sits above the stat row, and Show working expands it into the full breakdown.

This card words its verdict differently from the dashboard one. With nothing outstanding it reads "Nothing is outstanding. Every incident is closed, every audit is on time and no active assessment is carrying High or Critical residual risk." Otherwise it states the sum: the points deducted from 100, and which category cost the most.

The four categories, and their arithmetic

Show working opens the breakdown. Four rows, always in the same order, each showing either No deductions or the points it has taken. A clean row cannot be expanded, because there is nothing inside it. A dirty one opens onto its own explanation and then every record behind it.

CategoryCapWhat is counted
Unresolved incidents35Incidents whose status is Open or Under Review. Closed ones are not in the sum at all.
Overdue audits25Any audit not marked Completed whose due date is already behind us.
Unmitigated risk25Active or Under Review assessments whose worst residual score is 10 or more, which is High or Critical.
Assessments past review15Active or Under Review assessments whose own review date has gone by. Assessments with no review date are not counted.

Unresolved incidents, capped at 35

Each open incident is worth three numbers multiplied together. Its severity sets the base at 10 for Critical, 7 for High, 4 for Medium and 2 for Low. Its status scales that: Open counts at full weight, Under Review at 0.6, because being actively worked on is genuinely better than being ignored. Its age then fades it: full weight within 30 days, 0.6 within three months, 0.3 within a year, and 0.15 beyond that.

The reason printed against each one reads the three factors back to you, for example "Medium severity, still open, within 30 days". An incident with no date on it is treated as current, and a date typed in the future is treated as today rather than as a negative age.

Overdue audits, capped at 25

A flat step, by lateness: 3 points up to a week overdue, 5 once it is more than seven days, 8 once it is more than thirty. An audit is on time for the whole of its due date, so it only starts costing anything the day after. The reason reads "1 day overdue" or "12 days overdue".

Unmitigated risk, capped at 25

CleanFlo takes the worst residual score in each assessment, which is the risk that remains after your controls, and charges 4 points if it lands in the High band and 8 if it lands in Critical. Below 10 there is no deduction. The reason names the number, for instance "Worst residual risk 12/25 (High) after controls".

Assessments past review, capped at 15

A flat 2 points for each active assessment whose review date has passed, with the reason "Review was due yesterday" or "Review was due 40 days ago". This is the cheapest category to clear and the one most businesses leave running, because a review date set a year ago is easy to forget.

Unmitigated risk
Active risk assessments whose worst residual risk, the risk that remains after your controls, is still High or Critical.
−4 pts
RA-2026-013 · Window cleaning at height Worst residual risk 12/25 (High) after controls −4
Assessments past review
Active risk assessments whose own review date has passed. Assessments with no review date set are not counted.
No deductions
Two categories expanded. Each one prints its own explanation first, then the individual records with the reason and the points, so nothing is deducted anonymously.

One score, worked out in full

Here is the whole sum for a business with two live incidents, one late audit and one assessment still carrying High residual risk. Nothing is rounded until the end, and the final figure is rounded to a whole number.

RecordWhy it countsPoints
INC-2026-031, Slip & FallMedium severity (4), still open (×1), today (×1)4
INC-2026-030, Chemical SpillHigh severity (7), under review (×0.6), 5 days ago (×1)4.2
Quarterly chemical store check12 days overdue, so the middle step5
RA-2026-013, Window cleaning at heightWorst residual 12 of 25, which is High4
Total deductedNo category anywhere near its cap17.2
Score100 minus 17.2, rounded83

Everyone starts at 100. Points come off for four things only, each capped so no single area can zero your score, and recent events count for more than old ones.

Unresolved incidents −8.2 pts
Overdue audits −5 pts
Unmitigated risk −4 pts
Assessments past review No deductions
100 − 17.2 deducted 83% score

Caps: unresolved incidents 35 · overdue audits 25 · unmitigated risk 25 · assessments past review 15. Calculated from 12 incident records.

The expanded breakdown for that business. The formula line, the four categories in their fixed order, the total, and the caps note at the foot with the number of incident records the sum was calculated from.

If a category ever does run past its cap, CleanFlo tells you rather than quietly discarding the surplus. The row gains a line reading "Capped at 35 points for this category", followed by how many further points were not deducted and why: so that no single area can take your score to zero.

The three tiers, and what they colour

There are exactly three bands, and their thresholds are fixed: good at 90 and above, warn at 70 and above, and bad below 70. They are used to colour the ring and the percentage green, amber or red, and that is all they are used for. The tier is never printed as a word anywhere in the app.

96 good
90 and above
Green. One low-severity incident open, or one assessment a few days past its review date.
83 warn
70 and above
Amber. Real work outstanding, still comfortably recoverable in an afternoon.
64 bad
Below 70
Red. Several categories dirty at once, and the sort of number a client would ask about.
The same card at three scores. The tier names are written under each ring for this guide only: in CleanFlo they exist purely as the colour of the arc and the figure in the middle of it.

What deliberately does not count

As much thought went into the exclusions as into the weights, and most support questions about the score turn out to be about one of these.

Draft and Archived assessments
Not scored at all. A draft has not been adopted and an archive was deliberately retired, so neither describes how the business operates today. This is also exactly what the Risk Assessments stat card counts, so the card and the score can never contradict each other on the same screen.
Unscored hazards
A hazard with a missing likelihood or severity is skipped, not treated as zero and not treated as Critical. An assessment whose hazards are all unscored has no residual risk figure and costs nothing.
Assessments with no review date
Never counted as past review, because there is nothing to be late for. Setting a review date is opting in to being chased.
Closed incidents and completed audits
Out of the sum entirely, the moment you close or complete them. History is kept, but it stops costing.
Everything else in CleanFlo
Jobs, invoices, staff records, inventory and the compliance vault contribute nothing. An expired insurance certificate in the vault is flagged on its own tab and does not touch this number.

Moving the number

Work down the breakdown, largest first, because the rows are already sorted that way inside each category. Four moves cover almost every case.

Close the incidents that are actually finished

Most open incidents are open because nobody pressed the button, not because anything is outstanding. Open each one, read the actions taken, and press Close Incident if the action is genuinely done. This is usually the largest single recovery available.

Do the overdue audit, or move its date honestly

An audit past thirty days is costing eight points. Doing it and pressing Mark as Completed clears the deduction outright. Moving the due date also clears it, which is a real hole in the design and one you should only use when the scope has genuinely changed.

Get the High residual risks down

Open the assessment, find the hazard whose residual score is 10 or more, and write a control measure that actually lowers it. Four points if it is High, eight if it is Critical, and it is the only category where the fix improves the work rather than the paperwork.

Review the assessments that are past their date

Two points each. Read the assessment, change what has changed, and push the review date forward. If nothing has changed, say so in the notes and move the date anyway, because that is a review.

What you should not do is manage the number rather than the work: deleting incidents, archiving assessments you are still working to, or pushing every review date out a year. All three raise the score and all three are visible to anyone who reads the records underneath it, which at some point will be a client.

Common questions

Do my clients see this score?
No. The compliance score is internal to your CleanFlo workspace and is not shown on the client portal, on invoices or on the printed risk assessment. What a client can be given is the underlying evidence: the printed RAMS, a CSV of your incidents or audits, and a private share link to a document in the compliance vault.
Why is my score not 100 when I have only just started?
Because something you have recorded is already counting. The commonest causes on a new account are an audit scheduled with a due date in the past while you were entering history, and an imported risk assessment carrying High residual risk. Open Show working and the record will be named.
The dashboard says Not started but Health & Safety shows 100%. Which is right?
Both, and they are answering different questions. The dashboard refuses to show a score for a business with no records at all, because 100 out of 100 for having recorded nothing is misleading. The Health & Safety card shows the arithmetic result, and with nothing to deduct that result is 100. Log one record and the two agree from then on.
Can I change the weights or the caps?
No. The weights, the caps and the tier thresholds are fixed for every account, which is what makes the number comparable over time and explainable to somebody disputing it. The same inputs always produce the same score.
Does an old open incident keep costing me forever?
It fades but it never disappears. After a year an open incident counts at 0.15 of its original weight, so a Low one is worth 0.3 points rather than 2. It stays in the sum because an open record is still open, and the honest fix is thirty seconds: close it.