AdSenseSEO
#46
2026-08-075 min read

The fix for three AdSense rejections wasn't more calculators — it was honesty

A third 'low value content' rejection arrived on 1 August, days after a full remediation round had been submitted for review. A 15-agent root-cause analysis found what the July integrity sweep had already pointed at: fabricated trust signals, undated stale rate articles, and 38 pillar pages with zero visual content. The fix wasn't volume.

Read post
Build LogConversion
#47
2026-08-076 min read

The portfolio had a shop floor. It just didn't have a till.

GA4 revealed one desktop visitor with 13+ sessions, seven minutes on /work/, and nowhere to act. A week later: hero band as shopfront, /work/ as the aisle, hire strip as the till. The retail frame isn't a metaphor — it's a diagnostic tool.

Read post
Build LogDevOps
#48
2026-08-075 min read

Two weeks of silent cron failures. One Saturday-morning digest read.

Nightly GSC and GA data pulls had been silently killed by launchd TCC every night since 20 June. No alert, no log noise anywhere I was watching. Fourteen nights of missing numbers, surfaced by the telemetry digest during a routine Saturday-morning review.

Read post
SEOInternal Linking
#49
2026-08-065 min read

Technically clean, still unindexed: six pages that needed a crawl path before Google would find them

PR #153 was an ultracode review of six pages stuck at 'URL is unknown to Google' — five legal surfaces plus the stamp-duty calculator. Every technical check came back clean. The fix wasn't a technical one: it was body-prose internal links from six already-indexed articles, giving Google a crawl path to pages it had no reason to visit.

Read post
SEOTypeScript
#50
2026-08-065 min read

The YMYL pages weren't thin — they were stranded: zero inbound links, unnamed reviewers, and a TypeScript config enforcing nothing

Phase Q's three-lens assessment didn't flag content depth on UK Calculators' four money pages. It flagged link equity: forty-eight articles, zero internal links to the calculator set. Then reviewer attribution. Then a TypeScript config with strict: true declared and ignoreBuildErrors: true also set — which meant strict mode had never been a gate.

Read post