A waste collection verifier on AWS for a few dollars a month
The waste invoice is about four hundred pounds a month, it has arrived every month for six years, and it is approved by somebody who has never seen the contract. Two of the four bins are collected half empty. One collection in nine does not happen. Both of those facts are invisible and both of them are paid for.

Key takeaways
- You cannot claim a missed collection you cannot prove on the day.
- The invoice has lines the contract does not mention. Check them.
- Contamination charges are challengeable, inside a window.
- Right-sizing beats credits by an order of magnitude.
- Designed on AWS for about $2 a month.
The whole system on one page
Before any code, here is the shape of what we are designing.
Why nobody notices
A missed bin collection is annoying for about two hours and then it is solved by the next collection. Nobody escalates it, because the operational problem goes away on its own, and the commercial problem — that you paid for it — surfaces five weeks later on a line item nobody reads.
The same is true of every other discrepancy here. Each individual instance is too small to chase, and the aggregate is several thousand pounds a year. That is the exact shape of problem that a cheap system is good at and a person is not.
What runs (the inside)
- Expected. The contract as a schedule and a rate card, so there is something to compare against. Parts 2 and 3.
- Actual. Evidence captured on the morning, which is the only moment it exists. Part 2.
- The difference. Credits, contamination challenges, and the fill data that changes the contract itself. Parts 4 and 5.
One month, one site
- Machine learning
- Analytics
- Front-end & mobile
In plain words
The contract is read once into two things: a schedule of what should happen and a rate card of what each thing should cost. That is the only reference point in the entire arrangement, and in most businesses it exists only as a PDF nobody has opened since signing.
On each collection morning, whoever opens up records what they see: bins emptied, bins still full, a photograph if something is wrong. It takes fifteen seconds and it is the only moment at which evidence of a missed collection can exist.
When the invoice arrives it is read line by line against the rate card. Lifts you did not get, rates that are not the agreed rates, escalations applied early, and charges with names that do not appear in the contract at all.
And underneath all of that, the fill levels accumulate quietly for a few months until there is enough evidence to say something useful: that the general waste bin is collected twice a week at sixty percent full, and that one of those two collections is paying for air.
Design rules that shaped every decision
- Evidence is captured on the day or it does not exist.
- The contract becomes a schedule and a rate card, not a stored PDF.
- Every invoice line is matched to a rate. Unmatched lines are questions.
- Challenge inside the window, because outside it there is no mechanism.
- Fill data is worth more than credits, and it takes three months to earn.
- The renewal date is a diary entry with months of notice, not a surprise.
What it does not do
It does not weigh anything, it does not put sensors in bins, and it does not need a single piece of hardware. A person glancing at a bin store and tapping one of three buttons produces data that is good enough for every decision in this system.
It also does not replace the relationship with the waste contractor, most of whom are reasonable when presented with specifics. What it changes is that you arrive with a date and a photograph rather than an impression that collections have been unreliable lately.
The next four posts walk through each piece: how a missed collection gets proved, why the invoice never matches the contract, how a contamination charge gets challenged, and what the fill levels say about the contract itself. One diagram per post, a cost breakdown, and an engineering reference at the end.
All posts