Writing & build logs.
Essays on software development, web builds, and AI tooling. Plus build notes from what I'm actually working on right now.
Seven minutes on /work/ and no hire button: the problem wasn't the copy
GA4 showed a single desktop visitor returning thirteen-plus times, spending seven minutes straight on /work/ with no way to act. The instinct was to rewrite the copy. The data was pointing at something structural — the page had no till.
The sourcing step was always the bottleneck. Day 6 moved it into the cron.
For five days, every ukcalculators claim block was hand-sourced by the operator from individual gov.uk pages. On Day 6, the cron polled the gov.uk Search API live for the first time. The sourcing method changed. The claim-block discipline didn't.
The verifier should gate sentences, not articles. A rescued mortgage draft showed why.
The April mortgage rate-spike draft had been queued for weeks. When the Monday cron finally produced it, 10 of 13 sentences passed verification. The right call was to fix the three that didn’t — not discard the article. That distinction reshapes the pipeline.
Eight clusters triaged, zero published: why autonomous content cadence fails silently
The UK Calculators content pipeline ran three clean cron exits and published nothing for three weekdays. No errors, no alerts, just absence. Three weeks of daily runs showed the failure mode is not bad drafts. It is a gate that rejects everything differently each day, and a cadence monitor that asks the wrong question.
The cron kept drafting mortgage because gov.uk wasn't in the source set yet
For five days, the cron produced news-cluster drafts and operators shipped gov.uk regulatory pillars by hand. Day 6 changed one thing: gov.uk Search API sources entered the polling loop. Two data-pegged pillars from a single cycle followed immediately.




