Photo and reading requirements
A tick only ever meant a cleaner tapped a checkbox. Ask a line for a photo or a reading as well, and it is not done until the evidence is: a photo of the made bed, a chlorine reading off the hot tub, a count that has actually been counted.
On this page
Most checklist lines are fine as a tick. A cleaner did the thing or they did not, and the tick says which. A few lines are not fine left there: proof matters more than a checkbox for the owner of a holiday let who cannot be on site to see the bathroom restocked or the bins put out, a legionella reading off a hot tub is a number that has to exist somewhere rather than a box somebody checked on their way past, and "six towels" is either true or it is not, in a way a tick cannot say.
A requirement is what turns that particular line into more than a tick. Set one on it and it needs a photo, a reading, or both, before it counts as done, on a template checklist and on an ad-hoc job checklist alike.
Setting a requirement
Every checklist line, in Job templates and in a job's own checklist in the job drawer, carries a small disclosure under it labelled Requirements. It stays closed until you open it, but a line that already has a requirement on it, coming back to edit an existing template, say, opens by itself. Close it again with something set and it carries a small Set badge, so a checklist is not something you have to re-open every line of to know what is on it.
- Photo required
- A toggle. Switched on, this line is not done until a photo is attached to it, taken on the cleaner's phone the same way any other job photo is: it also appears with the job's other photos, not only against this one line.
- Reading required
- A toggle. Switching it on reveals a reading type and, for every type but Clarity, a minimum, a maximum and a unit.
- Reading type
- Seven options: Free chlorine, Bromine, pH, Temperature, Clarity, Count, or Reading, for anything the other six do not fit. Clarity alone is words rather than a number, clear, slightly cloudy or cloudy, and carries no minimum, maximum or unit: switching a line to it clears whatever a numeric type had left behind.
- Minimum, maximum and unit
- Both bounds are optional and inclusive, a reading equal to either one counts as in range, and leaving both blank means nothing on this line can ever be out of range. Unit is free text, so a company measuring bromine in ppm rather than the usual mg/l is not fought.
A requirement set on a template is copied onto every job built from it, exactly as the rest of the checklist is: see Clean templates for how loading one fills in a clean. Set the requirement once, on the template, and every clean booked from it afterwards carries it without anyone opening a drawer again.
What the cleaner sees
A gated line in the cleaner app carries a status line under its label, in addition to its ordinary tick, and the tick and the requirement are two different things: ticking the box does not fulfil the requirement, and a line can sit ticked with its photo still outstanding.
The status line reads Photo required or Reading required until it is met, then Photo attached for a photo, or the reading itself with its unit, "0.4 mg/l", for a reading. Underneath it sits the control that meets it: a camera button for a photo, opening the phone's own camera rather than a file picker; a number field for a reading, labelled with the reading type's own name and showing its unit beside it; or, for Clarity, three words as a segmented control, Clear, Slightly cloudy, Cloudy.
A reading outside its minimum and maximum is marked Out of range in words, never colour alone, and a note field, labelled Add a note (optional), appears underneath it. It is prompted, not required: nothing about an out-of-range reading stops the clean being completed. Every gate works offline exactly like every other tick and photo on the clean: a photo, a reading or a tick lands the moment it is taken, and the write queues behind it until the signal returns.
Finishing with a requirement still open
Complete clean opens its usual confirmation, but while anything on the checklist still needs its photo or its reading, the sheet says so and refuses to close the clean quietly around a gap nobody noticed.
That reason is written against every line still open when the cleaner presses it, and into the activity log as "completed with N checklist requirements overridden". Once a line is overridden it stays settled: it keeps showing what it was still missing, but gains a second status line, Recorded without evidence, and it never flips back to blocking anything later.
What you see afterwards
Open the job afterwards and every gated line in its checklist carries the same read-only summary a cleaner's screen showed them: a small photo where one was attached, or "Photo required" where it was not; the reading with its unit, or "Reading required", with an amber "out of range" mark if it landed outside its bounds; and, on an overridden line, "Overridden: " followed by the reason in full.
The Checklist requirements module
All of this sits behind Checklist requirements on Settings → Modules, on by default and already on for every trade CleanFlo sets a company up with. Switch it off and the Requirements disclosure disappears from the template editor and the job drawer, the cleaner app shows and enforces nothing extra, and Complete clean asks nothing more than it always did. Nothing already set is cleared: the database refuses only a write that sets a new requirement while the module is off, never a write that finishes a job, so a line that already carries a requirement shows it again, unchanged, the moment the module goes back on.
Common questions
Does switching Checklist requirements off delete the requirements I have already set?
Does an out-of-range reading stop a cleaner completing the clean?
I added a line to a job's checklist after the cleaner had already started ticking it off. Did that lose their photos and readings?
Still stuck?
Open Support in the app and send us a ticket, or email the team. A real person reads every one.