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
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
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
They countersign the walk
The quality record becomes joint rather than asserted, which is the difference between a score and an agreed score.
- 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
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.
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)
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.