Start your free 14-day trial Open the demo account Search the whole site
Product DomesticCommercialEnd of tenancyHoliday letsAirbnbWindowsCarpets and upholsteryOne-off and specialistFacilities managementCleaner appRAMSYour websiteInvoicing Everything CleanFlo does → See it running →
Compare Cleaning software comparedCleanFlo vs JobberCleanFlo vs ZenMaidCleanFlo vs GetCleanFlowCleanFlo vs ConnecteamCleanFlo vs SweptCleanFlo vs BigChangevs a spreadsheet and WhatsAppCleanFlo vs SqueegeeCleanFlo vs ServiceM8CleanFlo vs Cleenie
Free tools Cleaning Quote CalculatorPrice Per m² CalculatorUK VAT CalculatorProfit Margin CalculatorTrue Cost of a CleanerHoliday Entitlement CalculatorPer-Seat Cost CalculatorContract Tender Calculator All 17 free tools → 16 printable templates →

The rest of the business, brought inside.

In August we took the product apart and put it back properly. In the fortnight since, we built the parts of a cleaning business that were still living in a lever-arch file: the wages, the vans, the receipts, and the waste notes a commercial contract asks for. Five new modules, one app redrawn to hold them, and eighteen things that were quietly wrong and are not now.

Straight to the five
Release docket CF·2026·09
Entered
Tue 1 Sep 2026
Since
The August entry, 14 Aug
New
Five modules. Six became eleven
Redrawn
Every screen inside the login
Status Shipped
An orange bucket, a blue cloth and a squeegee against a pale blue wall

Six modules became eleven.

A module is a part of CleanFlo you can switch off. All five of these arrive switched on, and all five have a switch in Settings: a company with no vans, or one whose cleaners never take a bag off site, turns them off and gets a shorter menu. Nothing here costs extra. There is one price and there has only ever been one price.

  1. Time & payroll

    Contracted hours, pay rates, breaks, travel time, and the timesheet a pay run is built from.

    The clock a cleaner already taps now writes to a ledger of its own, and the ledger is what payroll reads. Time used to be two columns on a job, doing four jobs at once: the on-time reading, the client's report, the late alert and the wages. Those two columns have not moved, because the observation and the claim are two different records. The ledger is the second one.

    • Breaks recorded, subtracted and evidenced. The app has had a word for “on break” since its first database migration and nothing had ever written it, so no break had ever reduced anybody's hours.
    • Travel between two jobs in the working day counted as working time, which for minimum wage purposes is what it is. A cleaner doing four jobs across a town can lose ninety unrecorded minutes to it.
    • A timesheet you amend rather than overwrite. Every correction keeps the original beside it, with who made it and when.
    • Leave that has a type, and holiday as three numbers instead of one: entitled, taken, booked.
    • Sickness recorded by the office, with a fit note only the owner and the person it belongs to can open. Not a supervisor.
    • Overtime defined from the contract rather than from an opinion, and worked out at the run.
    • A pay run drafted, approved and locked, then exported as a file BrightPay or Xero Payroll UK will import. There is a plain CSV as well, because most bookkeepers want the columns rather than the integration.

    How it works: Timesheets Pay runs Holiday balances Sickness and fit notes

  2. Mileage claims

    A cleaner claiming for journeys in their own car at the HMRC rate, for you to approve before it is paid.

    Its own module and its own switch, because a company where everybody drives a company van should not have to look at it. The rate is HMRC's approved band rather than a number somebody typed, and a claim is approved before it reaches a pay run. Fuel put in a company van is an expense and not a mileage claim: the two are kept apart deliberately, so the same journey cannot be paid for twice.

    How it works: Mileage claims

  3. Vehicles

    Every van in the fleet: MOT, road tax, insurance, service history, and the walk-around check before it is driven.

    The van is the second most expensive thing a cleaning company owns and the only one that can be taken off the road by a date nobody wrote down.

    • Who has the keys, without pretending it is simple: a driver can hold more than one van, and a van more than one driver.
    • A walk-around check on the driver's phone, in all 27 languages. Six headings and sixteen items that were English only, on a screen built for people the rest of the app is translated for.
    • A warning before an MOT, a tax disc or an insurance policy lapses, rather than a letter afterwards.
    • A damage report filed from the roadside, with photographs, by the person who is standing next to it.

    How it works: Vehicles

  4. Expenses

    What the business bought, with the receipt and the VAT split, and reimbursing a cleaner who paid out of their own pocket.

    Two things that a spreadsheet usually keeps apart and a business does not: money the company spent, and money the company owes somebody back. One ledger, eleven categories, the receipt attached to the row, the VAT split out for the quarter, and a repeating cost entered once. A reimbursement is marked settled when it is paid, so it stops being an IOU in a group chat.

    How it works: Expenses

  5. Waste transfer notes

    The waste carriers you use, the season tickets you hold with them, and every collection logged against one.

    The largest single piece of work in this entry, and the one most likely to win you a contract. Under the duty of care, waste that leaves a site has to be described, signed for and kept on file for two years, and a cleaning company that takes anything away is in that chain. Until now that has meant a duplicate book in the van, a folder in the office and a fortnight of scanning when a tender asks for it.

    • The carrier checked against the Environment Agency's own public register while you type their registration number, rather than taken on trust. It answers with the name on the licence and the date it expires.
    • An EWC code on every load, with the hazardous ones flagged as you pick them.
    • Hazardous waste on the consignment path it legally needs, with the consignment code issued by the system rather than written out by hand.
    • A season ticket for the collection that happens every week, and a one-off note for the one that does not. Both are the same document and are signed the same way.
    • Both signatures taken on the phone, on site, while the driver is still standing there. The link you email is the fallback for a driver who has already gone, not the main road.
    • Notes that run the other way. Clearing a client's property is not hauling your own rubbish: the waste was theirs before it was in your van, which makes them the producer and you the carrier, and the note needs their signature rather than yours.
    • A client who would rather not sign every week can authorise it in advance from their portal, and the note records that this is what happened. A name against a signature block with nothing to say the person was not there is a document asserting something that did not occur.
    • Your client's own copy in their portal, and a tender pack that gathers the whole file in one go.
    • Three standing reminders: a carrier registration about to expire, a season ticket thirty days out and again at seven, and a site in Wales approaching the 500kg of hazardous waste a year that its own regulations turn on.
    • Turning the module off leaves the register readable. A regulator can ask for a note years after you stopped using the feature, so this is the one page in CleanFlo that stays reachable, read only, with its switch off.

    How it works: Waste transfers Logging a transfer

And the screens you already use.

A new module is easy to announce. Most of the difference in a week is made by the record you open forty times a day, so that is where the rest of this went.

  • New

    Records that hold their own history

    A client, a member of staff and an enquiry each keep a dated note trail and an activity timeline, with quick-log buttons for the things you write forty times a month and an attachment where the evidence belongs. A client used to have one free-text note that could be set when the record was created and never edited again.

  • New

    Follow-ups, on whoever needs chasing

    A due date and a note, on a client, a cleaner or an enquiry. Completing one does not delete it: it is stamped done and stays in the timeline, because what you chased and when is half of what a timeline is for.

  • New

    More than one contact per client

    A site manager and an accounts payable address are two different people, and putting them in one field has always been a small daily lie.

  • New

    An account owner

    Which of your people owns the relationship, on the record rather than in somebody's head.

  • New

    A health reading on a client, a reliability reading on a cleaner

    Signals that were already on the page, rolled into one: at risk, open complaints and overdue follow-ups for a client; on-time and completion rates and overdue follow-ups for a cleaner. Somebody with too little history reads “Not enough data yet”, never a score, because a score from three jobs is a guess with a badge on.

  • New

    Lifetime value on the client's own page

    What they have been invoiced, total and average, without leaving for the invoicing screen. A client with no invoices reads “No invoices yet” rather than a confident £0.

  • New

    Right to work, DBS and a training register

    The check, the date and the badge on the person's record. The register answers the question you are actually asked, which is not “what does this one person hold” nine times over but “who holds COSHH, and whose is about to lapse”. It names the people who do not hold it, which is the half that matters.

  • New

    Staff documents

    Contracts, certificates and the file that goes with a record, in a store that admits exactly two people: the owner, and the person it is about.

  • New

    Quick add

    A plus button on the top bar and a command palette behind Ctrl or Cmd, Shift and A, straight into any module's add form. It puts the ones you use most at the top, and a search that finds nothing now offers to create the thing you were looking for instead of shrugging. Starting from a client's page carries the client into the new clean.

  • New

    Site surveys, at the desk as well as in the field

    A page in the nav for the surveys already done and a way to start one, and the survey itself can be walked from the cleaner app by whoever is actually standing in the building.

  • Better

    A job is a clean

    The app's own vocabulary, corrected everywhere it appears. It was already what everybody says out loud.

  • Better

    One notification at a time

    Mark a single notification read instead of clearing the lot to get rid of one.

  • Better

    Money in your own currency

    Expenses and payroll showed a pound sign whatever the company was set to. They show the company's currency now.

  • Better

    The nav stays where you left it

    Groups can all be open at once, and it remembers which ones you had open.

The app stopped looking like this website.

In August we wrote that the site and the software had been drawn as one thing: ledger paper, a red margin rule, typewriter figures, a stamp on the work that was finished. That was true, and half of it was wrong.

Paper is the right dress for a page you read once. It is the wrong one for a screen somebody works in for six hours, where a warm background and a decorative typeface for numbers are costing legibility to make a point about our own taste. So the paper stays out here, on the website, and inside the login CleanFlo is now a working instrument: neutral ground, one teal doing all the signalling, figures aligned by tabular numerals rather than by a typeface, and the density of something you use rather than something you look at.

It reads as a smaller change than it is. Two thirds of the work was arithmetic: one type scale instead of sixty-two font sizes, one way of drawing a status pill instead of twenty-six, one primary action per screen, and sentence case everywhere, because the app had been shouting in three registers at once.

The part worth knowing about is the floor. Every control now holds a 44px touch target on any touch screen at any width. The old rule only applied under 768px, so a tablet or a touch laptop got desk density with no floor at all, and that hole had been open for as long as the rule had.

Readings Counted
Distinct font sizes in the app
62 8
Ways of drawing a status pill
26 3
A row on the Clients page
89px 61px
Controls under the 44px touch target
96 2
Text failing its contrast floor
unmeasured 0

Measured before and after, not estimated.

  • Delete stopped being a red button standing in a row of ordinary ones. Thirteen destructive controls were quietened, and the loud red is kept for the last confirmation, which is where emphasis belongs.
  • The cleaner's app and the client portal came with it, so the three surfaces of the product are one product again.
  • Every text colour is checked against its background on each build, on both sites. This one had no failures.

For the person holding the phone.

The cleaner does not choose CleanFlo and does not pay for it. They do have to use it, in a basement, with one hand, in one of 27 languages, and that is a stronger claim on our attention than buying it would be.

  • New

    The walk-around check, in all 27 languages

    Six headings and sixteen items on the vehicle check were hardcoded English while every other string on the same screen was translated. The person checking the tyres is exactly the person the other 26 languages are there for.

  • New

    “Waste collected today?”

    One row on the job screen, one tap. The office's own rules decide what gets written on the note: no codes to pick, no carrier to name, nothing to get wrong from a doorstep.

  • New

    A site survey, walked from the phone

    Room by room, by the person standing in the room.

  • Better

    A lone-working control that says what it does

    “Working alone?” offered a green hand and a red triangle, side by side, with the meaning available only to a screen reader. One of them raises an alarm to the office with your name and last known location. They say “I'm OK” and “SOS” now, in words, which costs a wrapped line and is worth it on this control.

  • Better

    Sheets stopped stealing what was typed

    A sheet took the focus back a frame after it opened, and swallowed the first thing typed into it.

  • Better

    One clock

    Every time a cleaner reads is now written the same way, on every screen, in every language.

  • Better

    Four screens that had stopped speaking anything but English

    Including the retry button, which is the one control that matters most to somebody who has just lost signal.

  • Better

    Every checkbox is a real target again

    A rule meant to make tick boxes easier to hit on a phone grew the drawn box instead of the tappable area, leaving a 44px empty square with its label adrift beside it. The target is back around an 18px mark, where it belongs.

What we fixed.

The unglamorous half, and the half that takes the longest. Each of these was live. None of them is now.

  1. A printed waste note named the wrong producer beside the right business code: our own code on a note about a client's rubbish. A signed note cannot be corrected afterwards, so this is the kind of defect that has to be caught before an inspector does.
  2. A waste export told a regulator a consignment had been accepted while it was still open.
  3. Closing a client's account failed, silently, if they held a signed season ticket for their waste.
  4. A list that failed to load looked exactly like a list with nothing in it. On the invoicing screen that talked you into raising an ad-hoc invoice for a client who was already there; on the waste screen it looked like you had no carriers.
  5. The absence tab on a staff record rendered nothing at all.
  6. The Timesheets page threw on opening.
  7. A company that had run payroll could not be deleted.
  8. Deleting a cleaner who had ever clocked in failed halfway through, leaving the record in two states at once.
  9. The staff page ran off the side of a phone, and every tab strip on it was half again too tall.
  10. The opening screen had no end. If the first request never answered, it span “Loading your workspace” forever. It gives up now, and says so.
  11. The dashboard asked the database the same question nineteen times on every load.
  12. The inventory filters read “Chemicals0” and “Equipment0”: the count had a class written into the page and defined in no stylesheet.
  13. The schedule legend clipped “Cancelled” off its right edge.
  14. The pay rate was two clicks from the only place anybody would look for it.
  15. A driver could hold only one vehicle, and a vehicle only one driver, which is not how a small fleet works.
  16. The password rules were in English for twenty-six of the twenty-seven languages.
  17. Email that hit the provider's rate limit was written off as failed and never sent again. It is paced and retried now, so a busy morning stops eating the day's notifications.
  18. Two screens disagreed about what “Outstanding” meant. There is one definition.

And the part you can't see.

  • Retention is swept rather than intended. Payroll records are kept for six years because that is what employment records require, and the sweep that deletes what is past its date runs on a schedule instead of living in a policy document.
  • Your data export covers the payroll record: time entries, amendments, absences and pay lines. A subject access request that misses the wages is not a subject access request.
  • Our record of processing and the employee-monitoring impact assessment were brought up to date with the database changes behind these modules, rather than a year late.
  • Turning a module off is enforced by the database, not by hiding a menu item.
  • A backup we have restored, rather than a backup we have written down.
  • Security response headers and an email authentication policy on this website, and a cookie notice that actually turns the cookies off.
  • A status page at /status that reads live from the app and from each supplier, rather than a number typed in ahead of time.
Start your free 14-day trial Open the demo

The entry before this one.

August was a fortnight of reading rather than building: every screen, every background job and every claim on this website, written down as we found it rather than as we hoped. The website and the app were rebuilt end to end, thirteen things were new, and a long list of quiet defects were corrected. It is kept here in full, because a changelog that deletes last month is a marketing page with a date on it.

Planned downtime · Sun 16 Aug, 9pm to 1am Done

CleanFlo went offline at 9pm on Sunday 16 August while we moved onto new infrastructure, and was back inside the four-hour window. Nothing entered before it was lost, and every customer's row counts were the same afterwards as before.

The reason for moving was speed, ours rather than the app's: a change now ships in minutes instead of taking an evening. This entry is what that bought. The August update took a fortnight to get out of the door and the five modules above took the fortnight after it.

NEW What was new in August
  • Clean reports you can send a client. A finished job prints as a plain A4 document: when the cleaner arrived and left, what was on the checklist, what they noted, what they photographed. No price, because that belongs on the invoice, and no map of where anybody's phone was, because that is your business and not your client's.
  • Late alerts. Every five minutes CleanFlo looks for a job that should have started and hasn't. It nudges the cleaner first, then tells you. You set the threshold; zero switches it off.
  • A compliance vault, and method statements. Health & Safety gained somewhere for documents to live, and RAMS finally got its MS.
  • The compliance score on your dashboard. A number your contracts are judged on belongs on the front page.
  • Unique payment references on every invoice. On the document and on both of the emails that send it, so a BACS payment arrives already matched to the job it paid for.
  • Photo proof you can actually look at. Photographs open full screen and page with a swipe or an arrow key, and a bad shot can be deleted.
  • Three ways to add a cleaner. By email invitation, by a link you share in the group chat, or entered directly, and accepting one works properly on a phone.
  • “On my way”, and one-tap shift confirmation. One tap before setting off, and one question on the job screen with one answer. A job nobody has confirmed shows nothing at all rather than a warning: not answering yet is not the same as saying no.
  • Jobs that were missed can still be closed. Unclosed work stays visible for 28 days as “Needs completing”, and closing one asks why from six deliberately blameless reasons.
  • A nudge if a job is left running. Four hours past the expected finish, one question: still on site?
  • The site brief, where it is needed. Access notes, key safe details and what the property actually is, reaching the person standing at the door.
  • 27 languages, finished. Twenty-six of the twenty-seven were up to fifty phrases short. All are complete, and Arabic and Urdu mirror properly, every screen and every arrow.
FIX What August fixed
  • Job photographs reach storage. They were being filed under a value the app never had.
  • Notes typed during a shift save as they are typed. Tapping back used to throw them away.
  • Deleting an invoice releases its jobs. The ones already stranded were repaired.
  • Revenue per client is counted once, not twice.
  • The on-time rate counts only jobs that were measured. A window with nothing measured reads a dash.
  • Notifications to the office arrive. Seven places were sending to a role that does not exist.
  • Historic risk assessments read “Not scored”, not “Critical”.
  • No hourly interruption: a tab left open used to blank itself about once an hour.
  • Long-standing customers are treated as long-standing customers.
  • CSV exports survive Excel.
WHY Why August was shipped in one go

Half of that release was corrections: figures that quietly disagreed with each other, work lost when a phone went back a screen, and a handful of things this website promised before the product could keep them. A correction is worth less the longer it sits on a private list, so it went out as one entry rather than being dripped out over six months.