Skip to content

CleanCore · Client portal

A cleaning client portal your customer opens themselves

Their sites, their cleans, their KPI and their invoices — with everything that is yours withheld in the door’s own SQL rather than hidden in the page.

The problem this solves

A client portal is the cheapest thing you can give a cleaning customer and the hardest to give safely. The data they want to see sits in the same tables as your cost of delivery, your charge decisions and your people’s records.

Hiding those in the interface is not a control — anyone who opens the network tab has them. CleanCore’s portal is served by its own doors, and the projection is enforced in the SQL those doors run: the cost of delivery, the cleaner’s identity beyond name and role, the charge stance and the contractor’s organisation are not fetched, so they cannot leak.

What the customer gets instead is the thing that renews contracts: they can see for themselves what happened last night, countersign the quality walk, and export the month’s KPI pack as the rows it was computed from.

Worked example

The client administrator signs in the morning after a busy night.

  1. 1

    One screen answers "what happened, and what needs me"

    Buses cleaned against the fleet, the KPI, and a ranked attention queue that links straight into the register behind each item.

  2. 2

    They open a bus

    The same traceability the depot manager sees — cleaned by, verified by, inspected by, with the photographs — and none of the internal columns.

  3. 3

    They countersign the walk

    The quality record becomes joint rather than asserted, which is the difference between a score and an agreed score.

  4. 4

    They export the month

    Every inspection and every non-compliance behind the figures, as the rows they were computed from.

The monthly report meeting becomes a review of something the customer has already seen, rather than a presentation of something they have not.

Capabilities

What client portal gives you

3 of these 4 are in the product today; the rest carry a badge saying what they actually are. Each one names what it is built on.

A portal the customer opens themselves

Live

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

First included in the Pro tier

Customer sign-off on inspections

Live

The customer countersigns the walk, so the quality record is joint rather than asserted.

First included in the Pro tier

Monthly KPI pack, one click

Live

Every inspection and every non-compliance behind the month’s figures, exported as the rows they were computed from.

First included in the Pro tier

The customer raises their own non-compliance

Roadmap

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

First included in the Enterprise 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.

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)

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.