CleanCore · Quoting & estimating
Cleaning quotes priced from the work, not from last year’s
Six units of sale over one build-up — base rate, productive-hours uplift, on-costs, overhead, margin, GST — and an accepted estimate that becomes the contract rather than being retyped into it.
The problem this solves
Most cleaning quotes are built in a spreadsheet nobody else can open, from an hourly rate and a guess at how many hours the work takes. It prices the bid you won last year, and when the margin turns out to be wrong there is no way to find out which line was wrong.
CleanCore prices the work instead. A line is per square metre, per fixture, per asset, per visit, per hour or per period, and every one of them goes through the same build-up: the base rate, the divisor that turns paid hours into productive ones, the on-costs, the overhead, the margin and the GST. Rate data is your own, effective-dated, and carries where it came from — an unedited seed figure is labelled as one everywhere it feeds a price.
Nothing is priced at zero. An unresolvable rate yields no unit cost and a named warning rather than a line that quietly costs nothing, and where a line can be read two ways the engine computes both and states the gap. The draft is sealed when the estimate is issued, a scenario is a branch that becomes history only through an explicit promote, and an accepted estimate writes the contract, its rates and the site’s CleanCore activation — so the thing that was priced is the thing that gets delivered and billed.
Worked example
A three-building tender: 4,200 m² of floor, 38 washrooms, a nightly visit and a quarterly carpet clean.
- 1
The quantities are the quote
Area lines in m², washrooms per fixture, the nightly attendance per visit and the carpet clean per period — each with its own calculator rather than all of them converted to hours first.
- 2
The build-up is one build-up
Base rate, productive-hours divisor, on-costs, overhead, margin and GST, applied the same way to every line, with the realised margin checked against the profile’s floor.
- 3
The disagreement is shown, not hidden
Where a washroom can be priced three ways, all three are computed and the gap is stated. An unresolvable rate is a named warning, never a zero.
- 4
Accepting it writes the operational record
The contract with its site id, the CleanCore activation row for that site, the contract rates and the per-unit cleaning rate card — so the price that won is the price that bills.
The bid can be defended line by line six months later, and the contract it becomes was not retyped by anybody.
Capabilities
What quoting & estimating gives you
All 1 of these are in the product today. Each one names what it is built on.
CleanCore 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 these claims
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.
- CleanCore Estimator
- ADR 0051 · src/lib/imss-estimator-core.ts · imss_estimates · /imss/cleancore-estimator
Where this sits
Back to
CleanCore — every capability in one place
The whole module: what is live, what is committed, what is only on the roadmap.
Read next
Cleaning KPIs and abatement, computed rather than compiled
The KPI is worked out on the server from the inspections and non-conformances that exist, and the abatement arithmetic is shown to the customer in full.
Twenty minutes on a real contract.
Real data, four logins, nothing typed on the day — including the parts we have not built, which we will point out ourselves.