Handee, the compliance system we build for multi-site property operations, sells a paid plan to the contractors on its supply side. We set the price, wrote the entitlements, connected the payment processor, tested the upgrade and shipped it.
Nobody bought it. There was no link to the page that sells it.
A door with no handle
The billing section of the vendor portal was gated on an entitlement. That is ordinary; most of the product is. The problem was which entitlement.
Billing sat behind the same permission the paid plan grants. A vendor on the free plan could not see the billing link, could not reach the plans page, and therefore could not upgrade. The only accounts able to find the upgrade were the accounts that had already bought it.
Read back it is obvious, and it was invisible for weeks, because everyone testing it was already entitled. Never gate the surface a customer goes to in order to pay you or to fix a failed card. Those pages exist for people who are outside, and a gate built for people who are inside will always exclude exactly the wrong ones.
Release 1.7 opens it. A free vendor now sees billing, sees the plans for their own side of the market rather than the operator ones we were mistakenly showing them, upgrades through checkout, and can leave again.
Failures that look like the product working
The same release fixed a second one, found on the way.
Every attempt by any contractor to save their company listing was rejected. The page issued two security tokens that disagreed with each other, and the server, correctly, treated the submission as forged. The rejection then wiped the trades, regions and service areas they had just selected, and returned the form with no message saying what was wrong.
Nobody reported it. A contractor who fills in a form, watches it empty itself and receives no explanation does not open a support ticket. They conclude the software is poor and they stop, and the supplier's dashboard records a user who lost interest.
That is a whole class of defect. The failures that cost the most are the ones indistinguishable from the product working normally, and they are systematically under-reported for exactly that reason. A supplier who only fixes what gets reported is fixing the loud half.
The warning that switched itself off
The third one had a shape we would not have guessed.
Handee warns contractors before a licence or an insurance certificate expires, because an expired credential removes them from dispatch automatically. The warning is marked once sent, so the same notice is not repeated.
If a contractor replaced the document, that marker was left set. Every future warning on that credential was suppressed. The person who acted early, uploaded the renewal ahead of time and behaved exactly as the system wanted, was the one it then stopped warning. The careless ones kept their alerts.
The cost is silent. Work simply stops being offered, and the reason is a date nobody was reminded of.
Fixing it is the cheap part
Each of those took under a day. What took longer was making them not come back.
There are now two tests that fail the build if a billing route is gated, and if any link to one is gated, checked across the templates and the plan matrix rather than just the routes. A fix that only fixes is a fix the next person deletes without knowing what it was for.
We also corrected our own copy. The expiry notices had been telling contractors, flatly, that a lapse drops their compliance badge and removes them from the directory. In fact that depends on whether the credential is mandatory for the trades and regions they have declared, and on whether the operator is filtering for it. The unconditional version was more persuasive and less true, and it went out to real people before we caught it. Suppliers overstate their own products as a matter of routine. Ours did, and we would rather say so here than wait to be asked.
Why any of this should matter to you
Every supplier's release notes tell you what was added. They are written by the people who added it, and they are, in that narrow sense, always accurate.
The more useful questions are the ones release notes are not structured to answer. What was broken. For how long. Who found it, the customer or the supplier. What stops it recurring, beyond an intention. And whether anything the supplier previously told you turned out to be a stronger claim than the software supported.
The number we promise clients is the human time recovered on the work they hand us. That promise is worth something only from people who will also publish the week they could not sell their own product. The customer-facing version of this release, written for the operators and contractors who use it, is on the Handee site.