The clean happened.
Now prove it.
CleanCore is cleaning management software for contractors who are paid on evidence — an append-only record of every clean, contract KPIs computed on the server, the abatement worked out in front of the customer, and a portal they open themselves.
Per site, per month · a 14-day trial on Pro · Australian data, hosted in AWS Sydney.
Why this exists
Cleaning is judged on the record, not the work.
Nobody notices a clean building. They notice the month you cannot prove one. Every part of CleanCore exists to answer one of three questions a cleaning contract eventually asks.
The 06:00 question
Someone asks whether a particular bus, washroom or platform was cleaned last night, and by whom. An answer that depends on finding the right supervisor is not an answer.
The KPI you are held to
The contract has a quality target and money attached to missing it. The monthly argument is almost never about the cleaning — it is about whose spreadsheet, over which population.
The customer who wants to look
Clients increasingly want their own view. The data they want sits in the same tables as your cost of delivery and your charge decisions, so "give them a login" is harder than it sounds.
The proof
Ask to see it running, not to see slides.
There is a demonstration organisation with real data in it: a three-site contract modelled on the tender CleanCore was built against — a bus depot, a head office and a layover. One contract, vehicles and buildings, the same module. Nothing in the walk-through is typed during the demo, and the figures below are that organisation’s own, not a customer’s.
3
sites, one contract
A bus depot, a head office and a layover — cleaned to one set of KPIs.
198
buses on the board
A nightly cycle across the whole fleet, scheduled and verified per vehicle.
9,245
ledger events
Cleans, verifications, exclusions and defects — appended, never edited.
28 of 30
capabilities live
Counted from the same registry this page renders. The other 2 are named below.
Every capability
The full list, grouped by what you came here for.
28 of 30 are in the product today and are written here in the present tense. The rest carry a badge saying what they actually are. Each group has its own page with a worked example.
Traceability
Prove the cleaning was done — and who did itAppend-only clean history
LiveEvery clean, verification, exclusion and defect written once, in the same transaction as the act itself, so the record cannot be edited into a different past.
Who cleaned it, by name
LiveCleaned by, verified by, inspected by — each a named person captured at the time, snapshotted so a later rename never changes what the history says.
Photographic evidence
LivePhotos attach to the event, not to a form: EXIF stripped, virus-scanned where enabled, and counted from the documents that exist rather than from a number the device claims.
Proof of presence, not proof of tapping
LiveA zone is verified only against a real checkpoint scan of that checkpoint, inside the round window, whose own validation passed. A fabricated scan id is refused.
History per bus, per site, per area
LiveOne timeline for any subject, with the mean interval between cleans and whether it is overdue against its own expected cadence.
Scope of works, run as a round
LiveA site scope holds its areas in sequence and each area its tasks; a round opens a checklist row per task and a verification per area, and ends with the areas it could not close written out as exceptions and the completion percent they produce.
Periodic and deep-clean cadence
LiveQuarterly carpet, annual windows, anything on an interval: each task carries its interval in days and its next due date, and the worker advances the date and raises the notification when it falls due rather than waiting for somebody to open a screen.
Inspection templates from real standards
LiveReusable templates per area type drawn from ISSA CIMS and APIC, so a walk grades the same way whoever does it.
Defect capture and closure
LiveA failed line raises a defect on the spot, assigns it and closes it, with a work order behind it when the fix is remedial work rather than a re-clean.
Contract KPIs, computed not compiled
LiveNon-compliance against inspections, split so the bus KPI and the facility KPI never divide by each other, measured against the target the contract sets for that month.
Abatement worked out, and shown working
LiveThe contract penalty calculated from the month’s invoiced value on the server, with the arithmetic written out for the customer: the rate, the target, the overshoot, the cap.
Non-conformance register with root cause
LiveFindings carry a root cause from a fixed taxonomy and trace back to the walk that found them and the clean they are about.
Statistical sampling with a stored seed
RoadmapInspections drawn to an AQL rather than chosen by whoever is walking, with the randomisation seed stored so the sample can be defended.
On the roadmap. It is not built, not scheduled, and not something to plan a contract around.
Complaints, and the answer that went back
LiveEvery complaint, compliment and survey in one register, each linked to the non-conformance and the corrective action it caused, and each carrying the date a response went back — so the register warns on "nobody has answered", not on "still open".
Fleet register
LiveEvery bus, its type, its depot and its last clean — the register a depot manager opens first.
Per-bus cleaning board
LiveSpot cleans, deep cleans, steam and detail scheduled per bus per night, with the board showing scheduled, started, completed and verified.
Exclusions with a charge decision
LiveA bus out of service is excluded from the cycle by the customer or by ops, with charge or no-charge recorded rather than argued later.
Graffiti to a police report
LiveOffensive graffiti flagged, a removal SLA started, and the NSW Police report pack generated from the record.
Compliance & safety
A SWMS sign-on that actually blocks the workSWMS sign-on that actually blocks work
LiveA cleaner cannot start or complete work at a site with an unsigned mandatory SWMS. WHS Reg 2017 (NSW) cl 299 as a control, not a document.
Controlled documents and acknowledgement
LivePolicies, procedures and SWMS versioned, issued and acknowledged, with a revision moving the pointer so old sign-ons stop satisfying.
Hash-chained audit trail
LiveEvery write sequenced and chained per organisation under a uniqueness constraint, so tampering is detectable rather than merely discouraged.
Consumables
Cleaning consumables, counted and reorderedConsumables and reorder
LiveStock on hand against par per site, every delivery, usage and stocktake in a ledger that explains the count, and the shortfall list that drives the order.
Customer supply requests
LiveThe customer asks for supplies from their own portal, against a catalogue you control, and the request lands in the same queue as everything else.
A portal the customer opens themselves
LiveTheir sites, their cleans, their KPI and their invoices — with the cost of delivery, the cleaner’s identity and the charge stance withheld in the door’s own SQL rather than in the page.
Customer sign-off on inspections
LiveThe customer countersigns the walk, so the quality record is joint rather than asserted.
Monthly KPI pack, one click
LiveEvery inspection and every non-compliance behind the month’s figures, exported as the rows they were computed from.
The customer raises their own non-compliance
RoadmapA finding the customer enters themselves, reconciled against yours, so the monthly number is agreed before the invoice rather than after it.
On the roadmap. It is not built, not scheduled, and not something to plan a contract around.
Induction and onboarding register
LiveEvery worker’s induction, policy acknowledgement and competency in one register, with the roster refusing anyone whose mandatory items are outstanding.
Complaint traced back to training
LiveA non-conformance resolves to the cleaner, their induction and their competency record, so a repeat cause becomes a training decision rather than a conversation.
Quoting & estimating
Cleaning quotes priced from the work, not from last year’sCleanCore Estimator
LivePrice a cleaning bid per square metre, per fixture, per bus, per visit or per month over one build-up — base rate, productive-hours uplift, on-costs, overhead, margin, GST — with the draft sealed on issue, and an accepted estimate writing the contract, its rates and the site’s CleanCore activation.
What backs every claim on this page
Each capability names the decision record, module, route or table it is built on. Ask us for any of them in an evaluation and we will walk you through the code.
- Append-only clean history
- ADR 0052 · src/server/imss-clean-history.ts · imss_cleaning_events
- Who cleaned it, by name
- src/server/imss-clean-history.ts resolveActorSnapshot · OpsBusRecord.tsx
- Photographic evidence
- src/server/imss-clean-evidence.ts · ADR 0023
- Proof of presence, not proof of tapping
- src/server/imss-cleaning-round.ts requireZoneScan
- History per bus, per site, per area
- GET /api/imss/clean-history · OpsCleaningHistory.tsx · client-portal/bus
- Scope of works, run as a round
- src/server/imss-cleaning-round.ts evaluateRound · imss_cleaning_scope_areas imss_cleaning_zone_verifications · patrol/cleaning-rounds · OpsCleaningServices.tsx
- Periodic and deep-clean cadence
- src/server/imss-jobs/periodic-cleaning.ts sweepPeriodicCleaning · imss_periodic_cleaning_tasks · v3 cleaning_periodic
- Inspection templates from real standards
- src/server/imss-inspection-library.ts · /imss/inspection-library · v3 cleaning_inspection
- Defect capture and closure
- src/server/api/imss/cleaning-defects/PATCH.ts · migration 0014
- Contract KPIs, computed not compiled
- src/server/api/imss/cleaning-kpi/GET.ts · computeCleaningKpi
- Abatement worked out, and shown working
- src/server/imss-cleaning-kpi-basis.ts · client-portal/cleaning-kpi
- Non-conformance register with root cause
- imss_cleaning_non_conformances · NC_ROOT_CAUSES
- Statistical sampling with a stored seed
- docs/research/cleancore-roadmap.md G33
- Complaints, and the answer that went back
- ADR 0053 · src/server/imss-qms.ts respondToFeedback · imss_customer_feedback · /imss/customer-feedback
- Fleet register
- imss_depot_buses · /imss/depot-buses · client-portal/bus-register
- Per-bus cleaning board
- ADR 0025 · imss_bus_cleaning_tasks · /imss/bus-cleaning
- Exclusions with a charge decision
- ADR 0026 · imss_bus_cleaning_exclusions
- Graffiti to a police report
- ADR 0024 · src/server/imss-graffiti.ts · /api/imss/graffiti-reports
- SWMS sign-on that actually blocks work
- ADR 0053 · bus-cleaning-tasks/PATCH.ts swmsGate
- Controlled documents and acknowledgement
- ADR 0053 · imss_controlled_documents
- Hash-chained audit trail
- src/server/imss-audit.ts · uq_imss_audit_events_org_sequence
- Induction and onboarding register
- ADR 0053 · imss_onboarding_programmes · evaluateOnboardingGate
- Complaint traced back to training
- ADR 0053 · src/scripts/imss-maintenance/seed-workforce-qms.ts
- Consumables and reorder
- src/server/imss-consumables.ts · /imss/consumables · v3 cleaning_stock
- Customer supply requests
- client-portal/supply-request · client-portal/supply-requests · client-portal/supply-catalogue · /api/imss/supply-requests
- A portal the customer opens themselves
- src/server/imss-client-portal.ts · client-portal-doors.test.ts · client-portal/overview · client-portal/cleaning-stats · client-portal/depot-cleaning
- Customer sign-off on inspections
- src/server/api/imss/client-portal/POST.ts inspection-signoff · ClientQuality.tsx
- Monthly KPI pack, one click
- client-portal/cleaning-kpi CSV export
- The customer raises their own non-compliance
- docs/research/cleancore-roadmap.md G19 (wave 3)
- CleanCore Estimator
- ADR 0051 · src/lib/imss-estimator-core.ts · imss_estimates · /imss/cleancore-estimator
Not built yet
What CleanCore does not do, said before you ask.
A feature page that reads as complete is the easiest way to lose an evaluation later. These are the gaps, in the same words we use in a tender response.
Statistical sampling with a stored seed
RoadmapInspections drawn to an AQL rather than chosen by whoever is walking, with the randomisation seed stored so the sample can be defended.
On the roadmap. It is not built, not scheduled, and not something to plan a contract around.
The customer raises their own non-compliance
RoadmapA finding the customer enters themselves, reconciled against yours, so the monthly number is agreed before the invoice rather than after it.
On the roadmap. It is not built, not scheduled, and not something to plan a contract around.
And plainly, what is absent
- KPI 5 — continuous improvement — has no register yet. The client portal says so on the screen rather than showing an empty list.
- There is no IoT, no robot telemetry and no BI dataset.
- The cleaner’s app is the web round runner today. A native iOS and Android app is a later stage (ADR 0038), not a thing you have now.
Pricing
Per site, per month. Not per cleaner.
A cleaning contractor’s cost scales with the contracts they win, not with the number of people they employ — so charging per seat would tax the field rollout that makes the evidence trail worth having. Prices exclude GST.
Starter
One site, and a real record of it. No card.
Free
- One site
- Up to 5 users
- Append-only clean history
- Who cleaned it, by name
Pro
The contract you have to prove you delivered.
$149/site/month
- Unlimited sites and users
- Full clean history, kept for the life of the contract
- Photographic evidence on every event
- Contract KPIs and the abatement engine
Enterprise
Multi-depot operators, and anyone whose contract has an SLA in it.
Talk to us
- Everything in Pro
- Single sign-on (SAML)
- API access and webhooks
- Named support with response-time commitments
Where it runs
Hosted in AWS Sydney, with every organisation’s data separated in the database itself rather than only in the application. Yarning Crescent is Indigenous-owned and Supply Nation registered, so what you already spend on cleaning counts as Indigenous procurement. How the whole platform fits together.
See it on a real contract, with real data.
Twenty minutes and four logins: the clean history, the KPI and its abatement, the customer’s own portal, and the safety gate refusing work it should refuse.