SEOBuild Log
#06
2026-08-155 min read

The ultracode review confirmed no technical blockers. The fix was six paragraphs of body prose.

PR #153's ultracode review of five legal pages and /stamp-duty-calculator returned HTTP 200, index/follow, and canonical self on every one. The GSC telemetry digest still listed all six as URL unknown to Google. The problem was not technical. Footer links do not transfer crawl weight the way body prose does.

Read post→
Build LogContent Pipeline
#07
2026-08-115 min read

Ten drafts at 08:35, zero at 08:22: ground-fetch quality was always the variable

Four days into the 14-day pillar sprint, the cron ran on time, ranked 150 clusters, and produced nothing. On day six, it produced ten drafts. The schedule hadn't changed. The source layer had.

Read post→
Build Logukcalculators
#08
2026-08-115 min read

The schedule held. The composer failed. That's what July's headline rescues exposed.

Three weeks of cadence data from ukcalculators: the approval gate works, the schedule holds, and every high-signal publish — May HPI, fiscal-drag projections, the Santander rate — required manual intervention when the composer failed. The bottleneck was never the schedule.

Read post→
Build LogPipeline
#09
2026-08-055 min read

One ready draft in fourteen days: the failed-cluster dead zone

Ten cron cycles ran clean. One ready draft emerged. draft.py was treating failed-cluster index entries as permanently consumed work, silently shrinking the candidate pool every morning. The fix was a type check. The visibility fix was a new counter. Finding the root cause took fourteen days.

Read post→
Build Logukcalculators
#10
2026-08-055 min read

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.

Read post→