Writing & build logs.
Essays on software development, web builds, and AI tooling. Plus build notes from what I'm actually working on right now.
The drafter was ready. The gov.uk sourcing layer was not.
Day 4/14 of the ukcalculators publishing sprint: the cron ranked 150 keyword clusters and produced zero drafts. The drafter had already proved it could run. The actual bottleneck was upstream — no authoritative gov.uk sources to ground claims against. Day 6 changed that.
I wrote quality signals. They landed as rejection, ambiguity, and a wrong name on the record.
A note on timelines on the /contact/ page read, to a prospect, as a closed door — not the quality signal I'd written it as. Across /contact/, /creative/, and /learning/, the same gap kept appearing: copy written from inside the writer's knowledge of the intent, with that knowledge doing load-bearing work the prose itself wasn't.
No till at the end of the sales floor
The GA4 cohort showed one visitor, thirteen sessions, seven minutes on /work/ — and no way to act on the decision they'd clearly formed. The structural gap had already been diagnosed. This documents what was actually shipped to close it.
The July gap was a sequencing problem: coverage screening was happening after the draft, not before
Between 7 and 9 July, the UK Calculators content pipeline triaged candidates, ran draft cycles, and published nothing. The check that would have caught the problem existed — it was running at the wrong stage.
Thirteen sessions, zero enquiries: the funnel I thought I had
A GA4 segment built in thirty seconds revealed the Upwork funnel: one desktop visitor returning thirteen times, seven minutes on /work/, no contact made. The site had no front door, no closing till, and a contact note written as a quality signal that read as a rejection.




