The Cache That Cancels Your Improvement

A batch job matches free-text line items against a large product catalogue. Supplier wording never matches catalogue wording, so it runs a cascade — remembered aliases, then embedded codes, then exact matches, then fuzzy retrieval, and finally one language-model call to adjudicate the survivors. That last step costs money, so results are cached. I improved the text normalisation feeding the cascade. Tested it properly: extracted the production matching code, ran it against the real catalogue, confirmed zero previously working matches broke and roughly 230 previously failing lines now cleared the acceptance gate. ...

August 29, 2026 · 4 min · Leandro Garcia

"Verify the Mechanism Is Firing" — It Had Never Been Deployed

A client operates two businesses under one legal entity, at two addresses. Supplier invoices arrive by email and have to be attributed to the right one. The mechanism to do that had been designed, written and documented. The task on my desk was a diagnostic: confirm it’s firing, and if it’s mostly falling through to the AI fallback, find out why. The spec proposed a sensible first step — count how many invoices were resolved by the database lookup versus guessed by the model. I ran it. The answer was zero and zero. ...

August 15, 2026 · 4 min · Leandro Garcia