Summary
The Optimization Loop keeps the other two systems from decaying. A health check runs every two days, a weekly audit ends in three to five action items, and a weekly citation run asks five AI engines 40 fixed buyer questions and stores 200 answers verbatim. Every six months the Audit Engine runs again on the same method.
Why SEO results fade
Most search wins were a project. Someone fixed the site, published for a quarter, showed a chart, and moved on.
Six months later a template change dropped the schema, a URL migration created 300 redirects that loop, three articles never got indexed, and the chart bends back down. Nobody noticed because nobody was looking every two days.
The Loop exists so that progress is visible long before headline numbers move, and so that regressions are caught before they cost a month.
Every two days: the health check
An automated list runs against the live site and every article the Article Factory has published. Each check returns green, amber or red.
- Site reachable. Homepage and key pages load, response time in range.
- Indexability. No accidental noindex; AI crawlers still allowed in the robots file.
- Canonicals. Each page still points to itself, no new conflicts.
- Structured data. Schema on templates and articles still validates.
- Broken links. New 404s in the sitemap or inside published articles.
- Speed. Core Web Vitals within thresholds on sampled pages.
- Published content. Every published article still live, indexed and unchanged.
- Offers and links. Lead magnet pages load, tracking parameters intact.
Red is fixed the same day if it’s in my control, for instance FAQ schema failing on two new articles. If it’s in the client’s template, it’s escalated to their engineering contact with the exact page and the exact fix. Amber is logged and picked up in the weekly audit’s action items; three new 404s after a URL change become one item, add redirects for the three old paths.
The client hears about a health check only when it needs their engineers. A single template regression can undo a month of fixes, and two days is the longest one is allowed to stand.
Every week: the audit that becomes next week’s work
Every Friday, the same numbers, compared to the prior week and to the same week a month ago. Clicks from Google, impressions, average position, buyer-intent clicks and brand clicks reported separately, sessions from AI assistants, leads from organic and AI, articles published, referring domains.
Brand and buyer-intent traffic are split on purpose. Brand traffic is demand the company already had; buyer-intent non-brand traffic is the demand this work creates.
Reporting them together hides whether the work is working. Search Console reports on a two-day lag, so the weekly window always ends on the latest complete day, and the report says which.
Two details from the version I run for the marketplace matter more than they sound. The windows are fixed at seven and 28 days rather than calendar months, because February has 28 days and March has 31 and a month-over-month comparison lies. And the query export is pulled at 25,000 rows rather than the default 5,000, because the default truncates exactly the non-brand tail that changes the conclusion.
Three detectors run over the data each week. Refresh: pages losing position on a query they held last month.
Rewrite: a page with impressions but almost no clicks, which usually means the title and intro aren’t earning the click the ranking has already won. Expand: articles ranking fifth to twelfth that a deeper section could lift onto page one.
The report ends in three to five action items for the coming week, each with an owner: content, engineering, the Factory, or the founder. The client reads a one-page update in plain language and agrees the items in a fifteen-minute review or over email. Last week’s open items are carried forward and closed with corrected figures rather than dropped; that habit is how the weekly roll-up for the marketplace caught $15,336 of AI-attributed revenue that a one-deal-per-contact view had silently excluded.
Every six months: the full audit again
Same method, same question set, same scorecard. Every score, rank and citation figure is compared to its baseline. Everything before the engagement is shown in gray and belongs to the company’s own record; the workstream claims only the dated window it worked, and reports Google’s algorithm updates in both directions.
The re-audit resets the finding list, the striking-distance worksheet, the rival set and the roadmap for the next two quarters. The question set stays fixed so the citation trend keeps meaning something. At the home-services company, the same-method score ran 64 to 78 to 83 across one quarter; AI Overview citations were counted as 4 then 6 of 59 markets nine days apart on identical checks, and reported as two point-in-time waves rather than a curve.
How I built it: Audit, Strategize, Spec, Build, Orchestrate, Train
Audit
I looked at what decayed on the sites I’d already fixed and at how the results were being reported. Regressions came from template changes, URL migrations and unindexed articles, and they went unnoticed for weeks. Reporting compared calendar months of different lengths, mixed brand and non-brand clicks, and pulled Search Console at its default row limit, which drops the tail where buyer-intent queries live.
One attribution view kept one deal per contact and silently lost second deals. And one AI-visibility reading was a structural zero from a tool fault. Every one of those became a requirement.
Strategize
Three rhythms with fixed jobs, fixed outputs and fixed readers: the health check for me, the weekly audit for the client, the re-audit for leadership. Fixed windows, not calendar months. Brand and non-brand always separate.
AI results per engine, never averaged. Misses shown as misses, with stored captures for negatives.
Every open item carried forward until it closes with a corrected figure. And feedback becomes a rule: a correction is written into the context layer or the code checks the same week.
Spec
The eight health checks with their green, amber and red conditions and escalation rules. The weekly metric list with its comparison windows, the seven- and 28-day periods and the 25,000-row export. The three detectors and what triggers each.
The action-item format with owners. The citation run: 40 questions, five engines, 200 cells, per-engine reporting, verbatim storage, competitors in-run.
The re-audit rules: same method, same questions, gray for pre-engagement history. And the six non-negotiables for anything the loop reports: negatives are claims too and need stored captures, an undated drifted figure is a finding, and a check is never weakened to pass.
Build
The health check is a set of scripts run against the live site and the Factory’s registry of published articles, with the AI-crawler and schema probes shared with the Audit Engine. The weekly audit pulls Search Console through its API at 25,000 rows on the fixed windows, classifies every query as brand, buyer-intent or off-target, joins AI-attributed revenue from the data warehouse by summing every deal per AI-sourced company, and renders as a Slack post plus a hosted page.
The citation panel calls the five engines through their APIs, stores every response, and scores naming and citing separately, at $7.34 a run. Built with Claude in Claude Code; the reporting procedure lives in a skill so the same numbers appear the same way every week.
Orchestrate
Three schedules: the health check every two days, the weekly audit and the citation run every Friday, the re-audit every six months. The weekly audit’s action items feed the Factory’s next batch and the client’s engineering queue.
Reds are fixed or escalated the same day; ambers roll into Friday. One representative week for the marketplace: 299,558 impressions, 968 clicks up 11.1% on the prior week, eleven articles published, and eleven AI-sourced customers named with their billed revenue, alongside the prior week’s open items closed with corrected figures.
Train
The roll-up correction that recovered $15,336 became a permanent rule about which joins may never be mixed. The default-export truncation became the 25,000-row rule. The false zero became the same-method-waves rule.
A client-side QA catch in April 2026 became a hard rule in the Factory’s production prompt within days. The loop tightens every time it catches something, and it never loosens a check to make a week look better.





