SEO and AEO Audit.
Fixed scope. Five artefacts.
One pass over your site that answers two questions. Can Google rank this, and will an answer engine cite it. You get a findings document, a fix list your developers can work top down, and a second measurement 60 days later that says whether the work landed.
What gets inspected.
Not a generic checklist copied off a vendor blog. This is the exact set of assertions that runs in continuous integration on this site, where a failure blocks a deploy rather than filling a report.
Titles, headings and descriptions
One h1 per page, since both zero and more than one draw a notice. Titles under 70 characters, without a pipe separator. Descriptions inside the 100 to 160 character band. Every prerendered page, not a sample.
Self-referential canonicals
Each indexable page needs a canonical on the live origin, carrying a trailing slash, pointing at itself. A missing tag or a wrong host fails outright. Pages that ship a noindex directive are skipped, because nothing crawls them.
Structured data that actually parses
At least one JSON-LD block per indexable page, parsed rather than eyeballed, with every node in the graph carrying an @context and an @type. A block that throws on parse is a failure, not a warning.
One entity, no rivals
Two properties publishing a Person node for the same human under different job titles is how a brand result starts answering with a superseded title. I trace every identity node you ship, retired domains included, and check that the older property has conceded through a cross-domain canonical.
Sitemap against the real route tree
The sitemap gets reconciled against the routes that actually build. A future lastmod, a listed URL that answers 404, and a shipped page no sitemap mentions all count as findings.
Agent-readable index parity
llms.txt and llms-full.txt have to advertise the same URLs. When one file lists a page the other omits, an answer engine walks away with a partial map of what you publish.
Live outbound citations
Every external link in the corpus gets probed. A definitive 404 or 410 counts against you, because a dead citation reads as a fabricated one to any reader who follows it. A timeout or a DNS fault is reported and left alone, since that describes the network rather than the page.
The AI half, measured rather than asserted.
Most answer engine advice stops at instinct. Write clearly, add schema, hope. That is untestable, so the audit does the other thing. A frozen query set runs against real ChatGPT and Perplexity engines, and each answer is scored four ways. It links to you, it links to a property adjacent to you, it names you without a link, or it does not know you exist. Only the first two send a visitor, and only one of them can be moved from your own codebase.
The same queries run again after 60 days, against the same engines, under the same scoring rules. That second run is the whole point. Without it an audit is a document about how a site looked in one week of one quarter, and nobody can tell you whether the fixes earned anything.
I run all of this on my own property first. Across the August 2026 work here, sitewide click-through rate moved from 0.32% to 0.86% and average position from 11.9 to 8.7 on flat impressions, which is what happens when pages finally earn the clicks they were already being shown for. The AI result was the surprise. The answer engines cite this site more often than Google ranks it, which pointed the remaining work at off-site entity density rather than at another round of on-page edits. Your numbers will differ. The method for finding them will not.
What lands on your desk.
Five named artefacts, handed over in a working session rather than emailed as a PDF and forgotten.
- 01
Audit findings
One document, organised by failure class rather than by page. Each finding states the assertion it breaks, the URLs affected, and what a search engine or an answer engine does with the page as it stands today.
- 02
Ranked fix list
A spreadsheet ordered by impact against effort. Every row names the file and, where the fix is a template rather than a page, the component that emits the markup. Your developers work the list top down without a second discovery pass.
- 03
Entity map
The identity graph you publish right now, drawn as one picture. Every @id, every domain, every node claiming to be your organisation or your people, with the rivals marked and a recommended single source of truth.
- 04
Citation baseline
A fixed query set scored on live ChatGPT and Perplexity engines. Citations are counted separately from mentions, and links you own are counted separately from properties you merely influence, because only one of those four cells can be fixed from your codebase.
- 05
Re-measure at 60 days
The same queries, the same engines, the same scoring rules, run again once your team has worked the fix list. You find out whether the work moved the number rather than whether it felt productive.
Fit check.
The audit earns its fee when these four things are true. When only some of them hold, a short call will sort out whether this or a wider engagement fits the problem you actually have.
- You already rank for something and want to know why it converts so poorly
- You sell to buyers who now open ChatGPT or Perplexity before they open Google
- You have engineers who can act on a file-level fix list without a retainer
- You publish under more than one domain and suspect the entities are fighting
Questions before you book
What the audit covers, how the AI half gets measured, and what it costs.
A traditional SEO audit asks whether a crawler can reach your page, understand it, and rank it. An answer engine audit asks whether a model retrieving passages for a question picks yours and links to it. The two share a technical foundation, so the same pass covers both. Where they part company is measurement. Rankings come from Search Console. Citation rate has to be measured by asking the engines directly and scoring what comes back.
A fixed query set runs against real ChatGPT and Perplexity engines through searchapi.io, not against a simulation. Each answer gets scored for whether it links to a property you own, links to a property adjacent to you, mentions you in prose without a link, or ignores you entirely. The query set stays frozen between runs, because a question added mid-series makes the trend unreadable.
Audits start at $6,000 and run two to three weeks from kickoff to handoff, with the re-measure landing 60 days after that. Scope is fixed. The price moves only with the size of the corpus and the number of domains carrying your identity, and both of those get settled before anything is signed.
The audit stops at the ranked fix list and the handoff session, which keeps it honest. Most teams take the list and ship it themselves in a sprint or two. When you would rather hand the work over, the fix list becomes the scope document for a Generative Engine Optimization engagement, and the audit fee comes off the first invoice.
Yes. The checklist happens to be automated in this repository, which is why I can state it exactly rather than in the abstract, but every assertion in it is a property of served HTML. WordPress, Webflow, Shopify, a Rails monolith, a headless stack behind a CDN. The audit reads what your server actually returns.
Engagement
Book the audit.
Send a brief and I will confirm scope and a start date, or book an embedded engagement when the fix list already writes itself.
SEO and AEO audits start at $6k.
One fixed-scope pass over technical SEO, the entity graph, and measured AI citation rate. You get a findings document, a ranked fix list with file-level locations, and a re-measure at 60 days. Delivery runs 2 to 3 weeks.