Halcyon Clearance
Field servicesA Newport rubbish-removal operator's whole booking-to-ledger pipeline — quotes worked out from photos, on-site evidence, AI-assisted bookkeeping — built on one deterministic core, ahead of the operator opening for online booking.

A customer picks the kind of clearance they need.

They describe the load and photograph it; the wizard shows a guide price.

A person prices the job against one fixed ladder and sends the quote.

The job, the access notes, and the photo evidence chain, on the phone.
A rubbish-removal job is usually priced over the phone, off a description — then re-priced on the doorstep once the crew can see what's actually there. Travel, quoting and admin cost the same whether the truck comes home full or a quarter full, so that correction moves the whole margin rather than a corner of it.
Disposal is the sharper edge, and there was nothing to price it against: a sweep of six South Wales operators found not one publishes a per-tonne trade figure. The pricing had to be built from the operator's own worked numbers and then held there.
Six calls that shaped it, and why.
Why the price ladder was reversed
The first ladder charged the same for every quarter of the truck — so a customer had no reason on earth to fill it.
An evenly-stepped ladder looks fair and prices the business backwards. The second quarter of a load cost exactly what the fourth did, which quietly paid the operator to make more visits rather than fewer.
The shape that replaced it anchors a full load at £300 and re-prices the rungs beneath it, so the cost per quarter falls as the truck fills. Four quarter loads booked separately come to £356, against £300 for the same rubbish cleared in one visit.
The saving is real because it comes from spreading a fixed per-visit overhead across more load — not from discounting the tip fee, which still costs what it costs. A discount you cannot explain is a discount you cannot defend on the driveway.
The gap is a fixed per-visit overhead spread across more load — not a discount on the tip fee, which costs what it costs.
Why the browser is not allowed to know the price
The server holds the money figures. The web screens a customer and the office see are mirrors of them — and a test refuses to pass if a mirror has drifted.
A price shown in a page is a price the person looking at it can edit. So the payable figure is worked out on the server, from its own frozen table, and the browser's copy exists only to render.
Mirrors are the risk that buys, though. Two copies of a money figure that can quietly disagree is a real defect, so the copies are not trusted to stay in step — a test asserts they still agree, and it is that test, rather than anyone's discipline, that keeps them honest.
That was learned the expensive way rather than designed in from nothing. A collection premium sat in the customer-facing config for weeks, was offered in the wizard, and was never once added to what anyone was charged. Nothing was wrong with the number; there was simply no check that anything downstream had read it.
Why the quote wizard went from six steps to three
Three steps, and not one field was dropped to get there.
The customer describes the job first — the postcode, the street, what the waste is and roughly how much of it. Then access and photographs come in one pass: parking, stairs, carry distance, heavy items, the date and the time window. Contact details and consent come last.
Cutting a form is easy if you are willing to collect less. Every value the six-step version collected still reaches the crew's job drawer; what changed is how many times the customer was asked to stop and start again.

Why the deposit was removed — and its code was kept
An order is paid in full when the quote is accepted. The retired deposit calculation is still in the codebase, wired to nothing new.
Running two payment models side by side is how a small business ends up with books it cannot reconcile. So one went, rather than both being supported.
But jobs invoiced before the change carry a deposit and a balance, and a books screen that cannot describe an old job correctly is worse than one carrying a retired function. Deleting the old maths would have made the history unreadable.
The amount payable is worked out on the server, never on the page the customer is looking at.
Why a photo of someone's front room arrives without their address
Every photograph a customer uploads is decoded, repainted and re-encoded before it leaves the browser — a round trip that emits pixels only, so the block carrying their phone's location cannot survive it.
A quote is worked out from photographs of a customer's own home. Those photographs routinely carry the coordinates of the place they were taken, and nobody uploading a picture of their garage thinks of themselves as sending an address.
Stripping it is not a side effect of making the file smaller, so the code carries a standing instruction not to add the obvious shortcut of skipping the round trip when a photo is already small enough. The shortcut would be faster, and it would quietly end the guarantee.
And the guarantee is proven on real bytes — a photograph with a genuine location record is pushed through it and the stored record read back out. A privacy claim nobody has tested is not a control, it is a hope.
Why one job carries exactly one reference
The reference is worked out from the job's own id rather than depending on a stored copy — so it reads the same whether it was derived when the job was created or a month later.
A live walk found a single job carrying three different references at once. A stored identifier can drift from the thing it names; a derived one cannot. The old stored field is still written and still honoured — it simply stopped being the thing anything trusts.
One reference now follows a job from the quote to the books, and the proof of what was collected assembles itself alongside it: a fixed five-photo chain the crew fills on site — the rubbish before, the van before, the rubbish after, the van after, and the van at the disposal site.
Pricing, scheduling and ledger records all run on rules a person can check rather than on whatever a model happened to output. The AI bookkeeping tool drafts ledger entries on top of that, and a person confirms before anything posts.

The method, not just the outcome.
Halcyon did not buy a website. They bought a way of working that holds up when the truck is on the drive and the customer is asking why the price changed.
Where the money actually leaks, what the owner already knows, and which of their rules are real constraints rather than habits. The system is designed around that, not around the software.
The parts that must be right every time — prices, references, records — run on fixed rules a person can audit. AI sits at the edges, where being helpful matters more than being provable.
The work is carried out by AI agents under a strict operating system: plans written before code, an independent agent that checks work it did not do, and gates that refuse a claim of "done" without proof it was exercised.
MAST runs its own business on the same kind of machinery — the backlog, the documents, the reviews. Building the tools you also have to use is what surfaces the rough edges, long before a client has to find them.
Today the customer's photographs are read by a person. The wizard shows a guide price off the ladder from the load size the customer picks, and a human sets the quote that goes back out — the photos are what that person judges it against.
The next piece is a quote engine that reads those photographs itself and proposes the load size. The interesting part is not the model; it is that the model would not be allowed to price anything. It would propose a rung. The server would still do the pricing, a person would still be able to overrule it, and the figure a customer is charged would still be the one the server worked out.
That is the shape the rest of this system already has, and it is the reason an AI step can be added to it without turning it into something nobody can check.
The operator gets a price the crew can stand behind before they arrive, a record of what was actually collected on a job, and a bookkeeping tool that drafts the ledger entries instead of someone re-typing the day's takings by hand — with a person, not a model, still confirming what goes on the books.
Pricing stops being an argument on the driveway and becomes a number agreed from the customer's own photographs before anyone sets off. The ladder pays the operator to fill the truck rather than to make more visits, which is the shape the underlying costs actually have.
The rest of it is the quiet half. One reference follows a job from the quote to the books, the evidence for a collection assembles itself as the crew works, and a customer's address does not travel inside a photograph of their own front room.
Half an hour to work out which part of your week a system like this would take off you.
Start a conversation