Skip to content

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. 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. 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. 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. 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

Live

Price 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.

First included in the Pro tier
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

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.