Talk through a process

Proof

Work orders, in live systems, with the numbers attached.

Everything on this page happened. Where it was a test we say so, where it was a client review the numbers are real and the names are removed.

Terri working a queue and showing its reasoning on every job. Demonstration data, October 2026.

TerriDecision record

97 of 100

test calls became dispatchable jobs

Every decision shows its reasoning.

What it saw, what it concluded, what it did and why. On every job, kept as a record rather than a log you cannot read.

That is the difference between something you can put in front of a client and something you have to defend.

Fields populated, by brand

Darker is more complete. Every brand is a full count of its own active sites, so nothing here is sampled.

All 1,410 active sitesFin codePhoneRegionArea mgrReg FMSnr mntMnt mgrHours
Brand Aall 585856575858575754
Brand Ball 444441434444434339
Brand Call 383835373838373735
Brand Dall 272726272727272727
Brand Eall 17171417171717171
Brand Fall 16161516161614142
Vacantall 383829293836292928
Distributionall 442444330
Brand Gall 571571522539571569537538504
Brand Hall 594593545547593592547547510

Fin code, Phone, Region, Area mgr, Reg FM, Snr mnt, Mnt mgr, Hours. Two of those columns read as populated on 1,312 sites and name an actual person on one. The rows come to 1,407: Change Request, Test Site and one site with no type set hold one site each and are left off, which is itself three of the findings.

Client review Anonymised, 2026. The counts are real. Client, brand and contractor names are removed.

ProofMapEstate review

1,410

active sites read, field by field, read only

A full instance read field by field, and nothing written.

1,410 active sites and 1,683 inactive, 3,093 records in all. Nothing created, edited or saved, and every request logged.

Two maintenance manager columns look complete on 1,312 sites. Exactly one names a real person.

Of 784 open jobs, overdue by

One contract base, read in full. Pending and Progress were read row by row rather than counted.

Over a year9
Six to twelve months19
Three to six months61
One to three months164
Under thirty days364
Not yet due167

One of the 784 has no due date at all and so sits in “not yet due”, not in a bucket behind it. This is not missing data.

Client review Anonymised, 2026. The counts are real. Client, brand and contractor names are removed.

ProofMapContract review

617 of 784

open jobs overdue

What one read-only look found.

784 jobs open and 617 past due. The oldest 477 days past due, still on hold. 830 job alerts never opened. 154 jobs done and never invoiced.

Only one open job had no due date at all, so none of this is missing data.

ProofSync moving completed jobs into the client’s system and reading each one back to prove it landed. The one job that needs a person is held, not guessed. Demonstration data, November 2026.

ProofSyncWhat we built

£228,000

a year, in one contractor's staff time

The cost of being your own integration.

What one FM contractor was spending to re-key jobs between their own system and their client's. By hand, every day, in both directions. Three thousand jobs a month is their own figure. Twenty minutes a job and £19 an hour is our working, and we show it.

It never appeared on a budget line, because it isn't a budget line. It's people.

Automatic triggers, as configured

The six that decide whether an alert becomes work. Five chase money. One would chase the job.

An invoice is 1 to 30 days overdueInvoice: 1-30 days overdueOn
An invoice is 31 to 60 days overdueInvoice: 31-60 days overdueOn
An invoice is 61 to 90 days overdueInvoice: 61-90 days overdueOn
An invoice is 91+ days overdueInvoice: 91+ days overdueOn
A quote passes its due dateQuote: overdue to be sentOn
A job goes past due, a response time is missed, a job is finished but never signed offleft unconfiguredOff

A trigger turns an alert into a status. A status can be filtered, coloured, reported on and handed to somebody. An alert on its own cannot.

Client review Anonymised, 2026. The counts are real. Client, brand and contractor names are removed.

ConfigurationWhat we find

34 of 64

automatic triggers switched on

You automate chasing money. You do not automate chasing work.

This contractor was not failing to use their system. They had 34 of its 64 triggers configured. Look at which 34.

An invoice cannot go 31 days past due there without the system changing its state. A job went 477 days past due and never changed at all. That is the mechanism behind the 830 alerts: the alert gets raised either way, it just never becomes work.

Open work orders, by contractor

The five largest holders, out of 84 contractors carrying live work across 35 trades and 843 sites.

Contractor 01464
Contractor 02336
Contractor 03149
Contractor 0492
Contractor 0579

Five hold 57 per cent of all open work. Ten hold 70 per cent.

Client review Anonymised, 2026. The counts are real. Client, brand and contractor names are removed.

Contractor intelligenceWhat we find

57%

of open work held by five contractors

Know who is actually carrying your contract.

1,968 open work orders, 84 contractors, 35 trades, 843 sites with something open. Five contractors held 57 per cent of it.

That may be exactly the model you intended, or it may be more dependency than anyone has looked at. We draw no conclusion from it, because that is your judgement and not ours. The point is that it was one export rather than a project, and it was answerable the same day.

Assurance

The questions your client's IT team will ask.

Cyber Essentials certified ICO registered, ZC167703 Read-only by default Every request logged

A diagnose reads. It does not write. On the review above, the count of records created, changed or deleted was zero.

Next

Bring us one process that's getting in the way.

Thirty minutes. We'll tell you whether we can take it out, and roughly what it would cost. If we can't, we'll say so.