Summary
Search is now two games: ranking in Google and being cited by AI assistants. My Audit Engine reads a company’s standing in both from one crawl and one set of buyer questions, fetching every page and storing every AI answer verbatim. It scores nine weighted dimensions into separate SEO and GEO scores and ships a 90-day roadmap with owners in ten days, needing only Search Console access.
The workstream, and the framework every part of it was built with
The Audit Engine is the first of three systems in my SEO/GEO workstream. The Article Factory builds what the audit says is missing, and the Optimization Loop keeps both honest week after week.
All three were built the same way, with a framework I call ASSBOT: Audit what exists and where it fails, Strategize the principles the new system must hold, Spec it in enough detail that a machine can check it, Build it, Orchestrate it so it runs without me in the loop, and Train it by turning every catch into a permanent rule. I built all three with Claude as the pair programmer, working in Claude Code, and I encoded the repeatable procedures as Agent Skills: folders of instructions, scripts and references that Claude loads for a specific task, following the open standard published at agentskills.io and the patterns in Anthropic’s public skills repository on GitHub.
Where an open-source skill fit, I adapted it. Where none existed, I wrote my own; the quality gate at the end of this article is one.
Why I stopped trusting the audits I was reading
Every SEO audit I’d seen had the same three faults, and they were all versions of one fault: a claim with nothing behind it.
The first was echoing a tool. A crawler flags 400 “missing titles,” the audit repeats the number, and nobody opens a page to see whether the title is missing or just long.
The second was mixing metrics that don’t mix: third-party traffic estimates presented beside first-party clicks as if they were the same thing. The third was asserting absence from a partial sample: “the site has no schema,” based on 50 pages of a 2,000-page site.
An audit that does those things produces a to-do list a client has to re-investigate before acting on. So I built an engine whose stated job is to make those three errors structurally impossible: every claim carries its source, its date and its confidence, counts below a sample floor render as “not enough data,” and any fix not checked by hand on a live page is labeled “inferred from the crawl.”
What the Audit Engine looks at
Six lenses, each answering a plain question, plus an AI citation check that becomes the baseline everything later is measured against.
- Technical. Can Google and AI crawlers read the site? Every page fetched live: status codes, canonical tags, indexing directives, sitemaps, robots rules for AI crawlers, speed.
- Content quality and trust. Would a careful reader trust this? Named authors, credentials, sources, dates, and depth compared with the pages that already rank and get cited.
- On-page. Does each page say what it’s about? Titles, descriptions, heading structure, internal links, structured data, and whether the first paragraph answers the question.
- Off-page authority. Who vouches for the company? Referring domains, link quality, brand mentions, and presence on the third-party sites AI engines already cite in the category.
- Competitors. Who wins the queries the company wants, and how? Teardowns of the rivals it loses deals to, plus the vendors AI engines name instead of it.
- Content gaps. What should exist and doesn’t? Buyer questions with no page, pages one upgrade from page one, and clusters competitors own. This list seeds the Article Factory.
The AI citation check. We agree 10 to 14 questions a real buyer would ask an assistant. Each is asked live across five engines. Every answer is stored verbatim and marked for whether the company is named and whether one of its pages is cited.
Naming and citing are scored separately, because a brand can be named in every answer and cited in none, and the gap between the two is usually the whole content strategy. That was exactly the finding at a marketplace named in 60 of 60 answers and cited in 18.
How an audit is produced in ten days
Day one, connect. Search Console access, optionally analytics. Before collecting anything, the engine confirms what data exists and records it in a connector ledger. An audit that assumes conversion tracking works, when it doesn’t, builds on sand; at one client the analytics reported 21,636 conversions and 21,133 of them were pageviews.
Days one to three, collect. A live crawl of every page in the sitemap. Rankings, backlinks and keyword data from two independent datasets, so a number that appears in only one is flagged.
Rival pages fetched too. This runs unattended.
Day three, ask the engines. The agreed buyer questions, live, across five engines. Stored verbatim.
Days four to eight, score and plan. Nine dimensions, each scored out of 100 and weighted by how much it moves results: technical 18, content and trust 18, AI answers 15, on-page 13, structured data 10, content footprint 8, speed 8, brand visibility 5, competitor gap 5. They roll up into one overall score and, separately, an SEO score from six dimensions and a GEO score from two, so the gap between the two games is visible at a glance. Bands run from Foundational Gaps (0 to 34) through Emerging, Established and Competitive to Authority (85 to 100).
Same data always produces the same score, which is what makes a re-audit comparable. Findings become fixes; fixes become the roadmap.
Days nine and ten, review and deliver. I check the top findings by hand on live pages. Then the three documents ship.
What a finding looks like
Every finding is written the same way: what is happening, why it costs the company something, and what we will do. The affected page count comes from the crawl, never from memory, and links to the rows behind it. Each fix names an owner (engineering, content, SEO or founder), an effort size (under a day, a week, a project) and how we’ll verify it worked.
From audits that ran through this engine: 2,650 pages on a marketplace site carrying canonical tags that pointed at a different page, hand-verified; 482 of 916 pages on a Shopify store rendering no title at all, confirmed by opening the code; a SaaS blog hub returning a 404 while 179 posts sat in the sitemap drawing 340,964 monthly impressions. Each shipped with the page list, the fix and the owner.
The competitor set and the content plan
The rival set is built from two lists: the companies the client loses deals to, and the vendors AI engines name on the buyer questions. Directories and review sites appear as their own row, because engines cite them heavily and being listed there is a lever.
Then the comparison is on the things that decide the query: how many of the fixed set of money terms each rival holds in Google’s top ten, how often each is cited on unbranded AI questions, and referring domains. The teardown of the strongest rival usually shows the same pattern: every winning page opens with a direct answer, has a comparison table, names a credentialed author and links to real sources.
Content gaps are grouped into pillars, typically comparisons, buying guides, cost and pricing, use cases by segment, and answer-shaped FAQs. Every target keyword exists in the audit data. Each pillar traces to a keyword class or an AI citation loss, so the reason for every article is on the record before the Article Factory writes it.
The 30-60-90 roadmap
Fixes are ordered by leverage divided by effort, and structural faults come first because they hold back every other page.
Days 1 to 30, foundations. Ship the structural fixes: canonical conflicts, missing titles and descriptions, heading faults, AI-crawler access. Complete the structured data on the homepage and article template. Agree the keyword list and the first article batch, which publishes in week three.
Start the health checks and the weekly report. Expect faults to fall to near zero on the re-crawl. Rankings rarely move yet.
Days 31 to 60, upgrades. Upgrade the pages already close to page one, three to five a week: answer-first intro, sources, author, FAQ, schema, internal links. Publish the comparison and buying-guide pillars. List the company on the directories the engines cite.
Re-run the citation check on the same questions. Expect the first position gains and the first new AI citations on category questions.
Days 61 to 90, authority. Keep publishing at cadence and refresh what the weekly audit flags. Run the mention campaign against the sources the engines already trust. Decide the fate of low-value sections: consolidate or remove from the index.
Then the day-90 review. Expect clicks trending up on buyer-intent queries and citation share visibly above baseline.
For a multi-market client the roadmap ships as a growth plan, a layer first built on a 12-market therapy practice: at a 59-market home-services company, that meant 59 execution cards, one per market, each carrying its own verified structured data, drafted FAQ additions, title rewrites and a competitor teardown, with 1,147 evidence deep-links and a 93-check quality gate over the whole package.
What it does and doesn’t promise
Organic growth compounds, and it lags. The first things to move are crawl errors and faults, then impressions on new topics, then position on upgraded pages, then clicks. Click-through rate often falls while reach expands, because new visibility arrives at lower positions first, so clicks and position are the goals and click-through rate is read as a mix signal.
The audit claims only the dated window we worked, measured in the client’s own Search Console. Anything before the engagement is shown in gray and belongs to the client’s record. It will not promise a ranking, and it will not average AI citation results across engines, because the spread between engines is usually the finding.
How I built it: Audit, Strategize, Spec, Build, Orchestrate, Train
Audit
I started with the audits themselves: my own earlier ones and the ones clients forwarded from other agencies. The three faults above appeared in nearly all of them. Two incidents sharpened the list.
At the home-services client, an early run reported zero AI Overview citations across 59 markets, and the zero was a tool fault, not the market; the check was firing before the Overview loaded. At the marketplace, the analytics conversion series turned out to be 98% pageviews. Both taught the same thing: a measurement fault reads exactly like a finding unless the engine checks its own instruments first.
Strategize
Six principles, decided before any code. Collection is complete, not sampled. Every claim carries provenance and a confidence level.
Counts below a sample floor don’t render as numbers. SEO and GEO are scored separately and AI results are reported per engine.
Findings ship as fixes with owners, not as observations. And the engine checks that its data connections are real before it collects, so a missing analytics scope becomes a labeled limit rather than a silent zero.
Spec
The specification is the part most people skip and the part that made the engine possible. Six lenses with the questions each answers. Nine dimensions with their weights and the band thresholds.
The finding format: what, why it costs, what we do, pages affected, owner, effort, verification. Three deliverables and what each contains. Three self-rules.
Four run modes. Four machine-readable artifacts: a scorecard, a claim ledger with per-claim confidence, a connector ledger recording which data sources were reachable, and an evidence folder.
And a seventeen-stage quality gate, G0 through G16, that has to pass before anything deploys. I wrote the spec as the skill’s reference documents, so Claude and I were building against the same text.
Build
About 6,300 lines of Python, written with Claude in Claude Code against that spec. Data connectors for Search Console, analytics, two rank and backlink datasets, and a live crawler that pulls raw HTML, extracts structured data, probes the robots, AI-crawler and security files, walks child sitemaps and follows redirect chains. Five AI engines through their APIs with every answer stored.
Ground-truth validators that re-check top findings against live pages. A report generator that produces the narrative audit, the evidence workbook and the deck from the same claim ledger, so a number can’t differ between the three. On top of it, a growth-plan layer of roughly 6,400 lines that turns findings into per-market execution cards and installable fix packages, with nine structured-data templates ready to drop in.
Orchestrate
The engine runs in four modes, full, SEO-only, GEO-only and AI-answer-only, so a prospect audit and a client re-audit use the same code at different depths. Collection runs unattended for three days. The G0 to G16 gate exits non-zero on any failed check, and nothing deploys until it exits clean.
Each client’s audit is hosted on its own subdomain with the evidence workbook beside it. Because the same engine runs every time, fifteen client audits have gone through it, and nine client-ready proposals shipped in a single day in July 2026 from an eight-domain sweep.
Train
Every catch becomes a check. The false zero on AI Overviews became a required flag on the Overview check and a rule that AI-citation counts ship only as dated, same-method waves. A bare “cited in 0 of N” headline stat was removed after review at a 25-year advisory firm and replaced with a rule that small percentages ship only with their sample size and date.
The engine is versioned, currently 3.0.0, and every six months it re-runs on the same client with the same method, so the score trend is comparable. At the home-services client that trend ran 64 to 78 to 83 across one quarter.





