SEO with a feedback loop
Three things had to be true after this week: the site is findable by strangers, I can tell when they show up, and the system gets better every time a post lands a citation. Thirteen SEO stories shipped — the schema work plus GA4 + GSC for measurement; the pre-commit gate that closes the loop ships next.
Start with the work. The bar wasn't write better prose. It was publish a typed schema that says what your prose is. BreadcrumbList JSON-LD on every content type. Person and Organization schema linked through an /about page that resolves. FAQPage where the post is structured Q&A. CollectionPage on listings. Dynamic OG images per post. An author bio component that matches the schema. The generateMetadata surface. A sitemap that updates with every deploy. An alt-text audit that finally caught the logo. None of it required me to rewrite a sentence.
The crawler is not a reader. The crawler is a parser. Give it strict types and it does the rest.
EEAT is a question, not a vibe
Google added EEAT — experience, expertise, authoritativeness, trust — to push back on AI-spam content. The phrase reads like a vibe. It isn't. It's a question: are you actually who you say you are?
The answer has to be machine-checkable. Person schema with a name. Organization schema with the same name. An /about page that links to the social profiles named in the schema. Bylines that match. Links that resolve to the real accounts. If any of those break, a crawler can't separate you from a bot. I encoded the identity once, in schema, and the rest of the surface inherits it. That was the work — not writing a better bio.
The rule that didn't fit
One example. The rulebook says add an H1 to the homepage. The site's wordmark already was one; I missed it on the first read and added a visible second heading, which looked wrong, and walked it back. The fix that landed is an invisible descriptive heading that crawlers and screen readers see but readers don't. A rule is a contract, not a literal — "tell a machine what the page is about" was already half-covered by the design; the fix only needed to cover the other half.
Why I cared at all
I'm one writer, this is the brand surface, and the people who matter aren't in my network. Recruiters Google candidates. Prospects search "build-in-public engineer." AI answer engines — Perplexity, ChatGPT search, Gemini — increasingly answer who builds local-first agent stacks by parsing JSON-LD and EEAT signals, not by reading prose. SEO is how strangers find the site without me sharing it. The bet underneath every post is that it becomes a long-lived asset, not a one-week social impression. Compounding only works if the crawler can parse what's there.
How I'll know it's working
The pipeline that keeps it improving
Same shape as the voice-learning loop that shipped on this site earlier in the week. Three pieces.
A pre-publish gate. Extend the existing pre-commit hook. Validate the JSON-LD on every commit touching content or templates. Run Lighthouse on every PR. Fail the build if a structured-data check regresses. Two stories queued for it; the wiring is small once the hook pattern exists.
A post-publish loop. A weekly digest will be pulled from Google Search Console and GA4. New keywords gained, positions lost, crawl errors, post-level engagement deltas. Cron'd to land in my inbox Sunday morning so the week starts with the read, not me digging for it. Status: GSC connected, GA4 wired and collecting, digest not built yet.
A citation flywheel. For every post that earns a real citation — in an AI engine, or as the answer to a non-branded search — the move is: reverse-engineer what made it citable, then encode the finding as a new pre-publish check or a new template rule. The voice rubric on this site grew from nine checks to ten on Saturday after a drafter run exposed a staircase-cascade tic; same shape will apply here. No citations to learn from yet — the flywheel is a shape, not a system, until the first one lands.
The missing piece is layer 04 automation — there's no API for did Perplexity cite this URL. For now: manual spot-checks against a fixed five-query battery, every Friday. If it turns out to matter enough, an agent runs the spot-checks. If it doesn't, manual stays cheap.
What ships next
The SEO pre-commit check ships by 2026-06-07. Lighthouse + Rich Results validation on every PR that touches web/content/ or web/components/. Same shape as the voice-parity hook — fast, free, local, informational by default with a threshold knob for hard-gating when the bar gets stable.
