My Work

How I Built My Optimization Loop

7 min

Last updated,

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 week: citation share against rivals

A fixed set of 40 buyer questions, agreed once and held constant, is asked across five engines, ChatGPT, Gemini, Perplexity, Claude and Google AI Overviews. That’s 200 answers per run, every one stored word for word. Citation share is answers naming the company divided by 200, reported per engine and never averaged across engines, because the spread between engines is usually the finding.

Four properties make it a measurement rather than an anecdote. The questions are fixed, so a change means the engines moved, not the test. The answers are stored, so any cell can be opened and read, and misses are shown as misses.

Competitors are in the same run, so share is relative rather than a vanity number. And volatility is expected; engines change answers week to week, so the report gives the latest state and the trend rather than a single triumphant screenshot.

A run costs $7.34, which is what makes weekly repetition affordable. On the marketplace, the August 2026 run put the company at 74 citations of 183 among six tracked brands, ahead of Upwork at 53 and Toptal at 34, with presence in 37% of all 200 cells. When one engine lags, the mention campaign targets the sources that engine cites.

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.

Frequently asked questions

A full audit at the start and every six months on the same method, so scores are comparable. Between them, an automated health check every two days for breakage, and a weekly review of the same core numbers that ends in a short list of actions.

Read next

In February 2026 a marketing-talent marketplace had no way to tell whether ChatGPT, Claude, Gemini or Perplexity had sent it a single customer. By August the channel had billed $305,120, 2.6% of company revenue, and every dollar traced to a signed deal.

4 min

The first laden barges arrive on a new canal while a clerk opens a ledger

When a marketplace cut paid spend 55%, every channel fell 35 to 43% except leads from ChatGPT, Claude, Gemini and Perplexity, which fell 5%. A regression across 26 weeks shows why: $100k of ad spend buys about 162 form fills and a statistically zero number of AI-search leads.

3 min

A coin-paved road ends at a closed gate while travelers carry the harvest on the other path

Nobody at the company knew whether AI assistants recommended them. Six months later a weekly panel across ChatGPT, Perplexity, Gemini, Claude and Google AI Overviews showed the brand cited 74 times against Upwork's 53 and Toptal's 34, across 183 citations among six tracked competitors.

3 min

An orator on a stone rostrum with a circle of listeners

A marketplace's organic search looked healthy: 1,031 leads and $366,294 in signed revenue a year. A first-party audit found 2,650 pages telling Google to ignore them, 87% of clicks coming from people who already knew the brand, and a conversion count that was 98% pageviews.

3 min

A crowd hesitating between two nearly identical temples

The standard objection to SEO is that it brings browsers, not buyers. A 59-market home-services company's own CRM said the opposite: organic visitors asked to be contacted 2.4 times as often as direct ones, converted to bookings at 24.8%, and were worth $542 each against $465.

3 min

Travelers buying at a country market beside a dusty road