Ask Perplexity a local recommendation question, a neighborhood bakery, a service in a specific city, and look at what it cites. The pattern repeats: a small site you have never heard of, plain WordPress, maybe a hundred posts total, cited above a national publication with far more authority. The big publication has the domain strength. The small site has answer-shape: named places, named people, prices, hours, and a paragraph that reads like the literal answer to the question.
That is the part of search the old playbook misses. The model picks the page that sounds like an answer, not the page with the most backlinks.
tl;dr
AEO is classic SEO with three additions: a machine-readable summary at the top of every page, JSON-LD schema the model can parse without ambiguity, and an llms.txt manifest at the root. Named entities, named tools, and named numbers cite. Vague positioning does not. Perplexity and ChatGPT send most of the traffic, Claude matters for trust, Gemini is vertical-dependent. Track citations weekly against a fixed prompt list. Rebuild pages that fail the answer-shape test. Skip AEO entirely in low-citation verticals.
The thing answer engines actually do, and how that breaks the old SEO playbook
Answer engines do not rank ten blue links. They write a paragraph and put three to seven citation chips underneath it. The user reads the paragraph, sometimes clicks a citation, often does not. The win is no longer a click. The win is being one of the three to seven sources the model picked when it wrote the paragraph.
That distinction sounds small. It is not. Classic SEO optimizes for the click-through to your page. Every signal in the playbook (title tag, meta description, snippet preview) is built for that moment when the user is staring at a results page deciding which link to tap. AEO has no results page. Your title tag is doing nothing. The model already wrote the headline.
What the model is reading instead is the body of the page, the schema, and (where supported) the llms.txt at the root. It is making a judgment about which paragraphs to lift, which numbers to quote, which named entities to name. The page that wins is the page that already reads like an answer to a question a real person typed.
Three places the old playbook breaks. The first is keyword stuffing, which never really worked but limped along because Google indexed everything anyway. The model does not lift a paragraph that uses a phrase eight times. It lifts the paragraph that uses the phrase once and then explains it. Repetition reads as low-information.
The second is the long meta description and the cute title. The model rewrites the headline. Your title craft is decoration. The work moves to the H1 and the tl;dr underneath it.
The third is the obsession with internal link counts. The model follows internal links, but it cares more about whether the paragraph it lifted from page A actually points to a useful page B than about whether your sidebar has 40 links. Internal linking is now a signal of intent, not volume.
What carries over: crawlability, page speed, schema, topical authority, real authorship. If you have those, you are most of the way to AEO already.
The four engines, ranked by what they actually do
Four engines matter in April 2026. They behave differently, and optimizing without understanding the differences is how teams burn three months on the wrong work.
Perplexity sends the most click-through traffic per cited source. The UI is the reason. Numbered citation chips appear inline next to every claim, and users actually tap them, which they do not on the other engines. Perplexity also re-crawls fast, often inside 48 hours for a domain it has indexed before. It weights schema heavily. If you can only optimize for one, optimize for Perplexity. Their citation API documentation is at docs.perplexity.ai and is worth reading end to end.
ChatGPT search generates lower click volume per cited source but higher-intent visitors when they do click. The model surfaces fewer citations per answer than Perplexity, and the conversational format makes the user feel like the answer is complete, so they click less. ChatGPT search prefers sources with FAQPage schema, clear authorship (Person schema with real credentials), and a tl;dr block at the top. We have looked at maybe forty pages that consistently rank in ChatGPT search across our client roster and they all have those three things.
Claude sends the lowest absolute traffic but selects the fewest, highest-quality citations per answer. When Claude cites your page, it is not because it filled a quota. It is because the model judged the source authoritative. Claude weights authorship signals more aggressively than the other three: real Person schema, real bios, named credentials, clear "About the Author" sections on long-form pages. The Anthropic developer documentation at docs.anthropic.com covers the search-augmented behavior in the Computer Use and tools sections.
Gemini AI Overviews drive volume unpredictably. In medical, legal, and finance, Gemini is often the dominant referrer to client sites. In B2B SaaS and agency services, it sends almost nothing. Gemini ranks Google's classic SERP signals heavily, which means a site that ranks well in Google Search will usually appear in AI Overviews without separate work. Their docs live at ai.google.dev.
The pattern is consistent: Perplexity and ChatGPT for traffic, Claude for trust, Gemini for vertical-dependent volume. The optimizations overlap a lot. The same page can rank in all four if it ships clean schema, named entities, answer shape, and an llms.txt manifest.
For more on how the GEO surfaces interact with classic search, see pSEO in 2026: what changed and GEO pages that don't get penalized.
Why named entities, named tools, and named numbers cite better
Models cite specificity. The reason is mechanical. When the model is generating an answer, it is selecting source paragraphs that contain the exact tokens the user prompted with. A page that says "we deploy modern web frameworks" has no tokens that match a prompt like "best Next.js 16 agencies for mid-market B2B." A page that says "we ship Next.js 16 sites for $10M to $100M B2B firms in 14 to 21 days" matches that prompt almost word for word.
The rule is to name everything you can name without lying. Tools. Versions. Years. Dollar amounts. Page counts. Day counts. City names. Client names where contracts allow. Clinician names where clinics will let you. Framework names. Vague claims about quality, speed, or expertise do not cite. Specific claims with named referents cite reliably.
The Therapy Connections rebuild is the cleanest example we have. The clinic does acquired brain injury rehabilitation in Kitchener-Waterloo with a three-clinician team. We shipped a 35-page custom Next.js build in 18 days. Every clinician got a named bio with credentials, treatment specialties, and Person schema. When a user prompts ChatGPT for "ABI rehabilitation clinics in Kitchener-Waterloo," the model has clean signal to cite: a real city, a real condition, a real clinic, real clinicians, real schema. The page cites in the top three sources, every time we test it. A generic "leading rehabilitation services in Ontario" page would not.
Same thing happens on the doorway-page side, which we covered in detail in pSEO in 2026: what changed. A programmatic page without 500 unique words and a real underlying data shape is a doorway page waiting to get deindexed. The model has the same allergy. If your 200 city pages all say the same thing with the city name swapped in, the model will pick one and ignore the rest, and the one it picks is usually random.
The agency uniqueness bar is concrete. Every page has a tl;dr of 60 to 100 words. Every claim is sourced or specific. Every list has named items, not adjectives. Every paragraph carries one claim. The Jetlak rebuild ran 178 product pages through n-gram uniqueness checks in CI with a 40 percent minimum differentiation. Same checks apply for AEO content. If two pages cross the n-gram threshold, one of them gets rewritten before launch.
A useful diagnostic: read your top page out loud and count proper nouns and numerals. Under five and the page will not cite. Fifteen or more and it will. It is the first thing we count on an AEO audit, and the count tracks citation behavior almost perfectly.
The schema layer LLMs actually parse
Models do not parse arbitrary microdata reliably. They parse JSON-LD. The W3C and Schema.org documentation cover dozens of types, and most of them are noise. Models cite cleanly from a small subset.
What we ship on every AtlasForge build:
- Organization with
name,url,logo, andsameAs(LinkedIn, GitHub, X, Crunchbase). One block per site, in the root layout. - Person for every named author, every named clinician, every named team member. Includes
jobTitle,worksFor,sameAs, and adescriptionof credentials. Schema.org docs at schema.org/Person. - Article or BlogPosting on every blog post, with
authorreferencing the Person, plusdatePublished,dateModified,headline, anddescription. - FAQPage on any page with a Q&A block. Documented at schema.org/FAQPage. Models lift FAQ pairs verbatim into their answers. The FAQ block on this very post is doing AEO work right now.
- Service for each service the agency offers, with
providerreferencing the Organization. - MedicalBusiness for clinical clients, with
medicalSpecialty,availableService, andaddress. The Therapy Connections rebuild ships this on every condition page; spec at schema.org/MedicalBusiness. - BreadcrumbList on every nested page. Trivial to add, cited frequently for navigation queries.
A schema mistake we see all the time: shipping JSON-LD that references entities that do not appear on the rendered page. The model cross-references the schema against the HTML. If the schema names a clinician and the page does not display that clinician's name, credentials, and bio, the model treats the schema as untrustworthy and the entire page loses citation rank. Schema describes what the page contains. It does not invent it.
Validation matters. Run every page through the Schema.org validator and Google's Rich Results Test before launch. A schema block with errors is worse than no schema, because the model treats the page as suspect.
For the migration path on existing sites with no schema, see WordPress to Next.js migration path and why mid-market companies keep getting stuck on WordPress. Most WordPress sites have plugin-injected schema with errors that have to be cleaned up before AEO will work.
llms.txt and what to put in it
llms.txt is a proposed standard at llmstxt.org for a plain-text manifest at the root of a domain. It tells the model how to navigate your site and which pages to prefer when citing. AEO version of robots.txt and sitemap.xml combined into one human-readable file.
Format is straightforward. A heading with the site name and a one-line description, an optional second-level summary section, and one or more curated link sets under H2 headings. Each link is a markdown link with an optional one-line description.
The minimal llms.txt we ship on every AtlasForge build:
# AtlasForge
> AtlasForge is a mid-market B2B web and SEO agency. We rebuild marketing sites
> in 14 to 21 days on Next.js 16 and rank them in classic search and on LLM
> answer engines.
## Core pages
- [About](https://atlasforge.one/about): Founder, agency thesis, hiring posture.
- [Pricing](https://atlasforge.one/pricing): Foundry, Atlas, and Empire tiers.
- [Work](https://atlasforge.one/work): public rebuild proof points and client outcomes.
## Pillar content
- [pSEO in 2026](https://atlasforge.one/blog/pseo-in-2026-what-changed)
- [AEO operating manual](https://atlasforge.one/blog/aeo-how-to-rank-on-chatgpt-perplexity-claude-gemini)
- [The 90-day organic growth plan](https://atlasforge.one/blog/the-90-day-organic-growth-plan)
## Optional
- [Blog archive](https://atlasforge.one/blog): Full index.
A longer treatment of the format, edge cases, and what to leave out is in the llms.txt file.
The file matters for two reasons. First, several of the answer engines actively look for it. Perplexity confirmed support in late 2025, Anthropic's docs reference it as a navigational aid. Second, even on engines that do not formally support llms.txt yet, writing one is a forcing function. It makes the team state its own pillar pages and canonical URLs in plain language, and that exercise alone surfaces gaps in your information architecture that you did not know you had.
The llms.txt also doubles as a sitemap for human readers who want to understand the site's structure. We link to ours from the footer.
Topical clusters, but every page has to be answer-shaped
Classic SEO has converged on the topical-cluster model: a pillar page covers a broad topic, cluster pages cover sub-topics, and internal links flow up to the pillar. AEO inherits this model and adds a constraint: every page in the cluster has to be answer-shaped.
An answer-shaped page has six properties:
- A single H1 that names the topic in the same form a real person would prompt.
- A tl;dr immediately under the H1, 60 to 100 words, written as a complete answer to the implied question.
- H2 sections that each cover one sub-claim. No rhetorical questions as H2. No second-person H2.
- Body paragraphs of 50 to 90 words each, one claim per paragraph.
- Bulleted lists for enumerable items (tools, steps, criteria), prose for everything else.
- A FAQ block at the bottom with six or more pairs, each Q&A self-contained enough to cite without context.
This page is built to those rules. Read it back: the tl;dr answers the prompt, the H2s carry the sub-claims, the FAQ block at the bottom contains seven self-contained pairs. The structure is not stylistic. It is the shape the model is looking for.
Topical clusters in AEO terms work the same way as in classic SEO with one difference: the pillar page should be the answer-shaped one, and the cluster pages should each answer a narrower question and link back. Our pSEO/AEO pillar is this post and pSEO in 2026: what changed. The cluster pages include GEO pages that don't get penalized, the llms.txt file, and the 48-hour before/after demo.
For mid-market clients running a content program, the cluster work also feeds into measurement. We covered the reporting structure in the mid-market SEO reporting framework. Cluster coverage maps to citation share, and the report should track both.
Therapy Connections, in detail
Therapy Connections is the cleanest AEO proof artifact we have. ABI rehabilitation in Kitchener-Waterloo, three clinicians. Pre-rebuild, the site was a static page that pre-dated their growth and would not stand up to insurer scrutiny. Post-rebuild, the site cites in ChatGPT, Perplexity, and Claude for ABI rehabilitation queries in the local market.
The build:
- 35 pages of custom Next.js 16, every page written and reviewed by the lead clinician before publish.
- Per-condition pages (concussion, stroke recovery, traumatic brain injury, post-concussion syndrome) with MedicalBusiness, MedicalProcedure, and FAQPage schema on each.
- Per-clinician bio pages with Person schema, named credentials, treatment specialties, and licensure.
- A methodology page that names the assessment tools and the rehabilitation frameworks, with a tl;dr at the top and answer-shaped sections.
- An intake-flow page with explicit insurance information, named insurers, and FAQ schema.
- llms.txt at root listing the condition pages, the clinician bios, and the methodology page as the citable surface.
What the citations look like at day 90 post-launch:
- Perplexity cites the concussion page for the prompt "concussion rehabilitation Kitchener-Waterloo" inside the top three sources.
- ChatGPT search cites the methodology page for prompts about post-concussion symptom protocols.
- Claude cites a clinician bio page when a user prompts about credentials for ABI assessment.
- Gemini AI Overviews surface the FAQ block on the intake-flow page for insurance-related queries.
The reason it works is that every page has a real condition, real city, real clinician, real credentials, real schema. The model has clean signal. There is no padding, no marketing language, no generic claims about quality. The clinic shows up because the page deserves to.
The same playbook applies to any clinical, legal, or specialist B2B services site. The rebuild path is in WordPress to Next.js migration path and the speed bar is documented in real Lighthouse scores before and after 6 mid-market rebuilds.
Measuring AEO without traditional rank-tracking
Traditional rank-tracking does not work for AEO. There is no SERP to scrape. Citation order is non-deterministic across sessions, even for the same prompt on the same engine. Three signals replace it.
Referrer logs. All four engines pass identifiable referrer headers when a user clicks a citation. Filter for chat.openai.com, perplexity.ai, claude.ai, and gemini.google.com, plus the Google AI Overviews referrer pattern. Aggregate weekly. The trend is what matters. Absolute numbers are noisy because users frequently land via direct navigation after seeing a citation without clicking it.
Branded-prompt monitoring. Maintain a fixed list of 30 to 50 prompts that represent the queries you want to rank for. Run them weekly across all four engines, manually for the first month, automated after the playbook stabilizes. Log which sources each engine cites and whether the client appeared. The metric is citation share: percentage of prompts where the client appears in the top citation panel. We use a private Notion doc and a once-a-week 30-minute review.
Assisted conversions. PostHog (or GA4) attribution against the LLM referrers. The visitor who lands from a Perplexity citation rarely converts on the first session. They convert two to four sessions later, often via direct or branded search. PostHog's session-stitching makes the assisted-conversion path visible. We report this monthly to clients on the mid-market SEO reporting framework.
What does not work: keyword rank-tracking tools (Ahrefs, Semrush, Moz) running their LLM-citation modules. They are noisy, sample too small, and miss the long tail. Build the prompt list and check it manually. The discipline of writing the prompt list is itself useful, because it forces the team to articulate which queries actually matter.
A sanity check at the 90-day mark: pull the referrer log, run the prompt list, and ask whether the trend on both is up. If yes, keep going. If no, the page-shape audit needs a redo. The audit checklist is in Core Web Vitals changed in 2025; the AEO version uses the same cadence.
When AEO is a distraction (low-citation verticals)
AEO is not always worth the work. Three categories of vertical see almost no citation traffic and should focus on classic SEO and direct sales instead.
Transactional commerce with no information component. Sites selling commodity products (replacement bulbs, generic apparel, parts catalogs) do not get cited because users do not prompt LLMs for those queries. They search Amazon, Google Shopping, or the manufacturer directly. AEO effort is wasted; the budget belongs in product feed quality and shopping ads.
Hyper-local services with thin search volume. A single-location plumber in a town of 8,000 has too little prompt volume across the four engines for AEO to be measurable. Classic local SEO (Google Business Profile, citation consistency, local link building) returns more per hour. The exception is a clinical or legal service in a small market where the prompt volume is low but the per-prompt value is high. Those are worth AEO work.
Verticals where the model refuses to cite specific brands. Financial advice, medical diagnosis, legal advice. The model leans on safety guardrails rather than specific sources, often cites government or regulator pages, refuses to recommend specific firms. AEO can still help (named credentials, schema, named jurisdictions) but the ceiling is lower. Pair with classic SEO and trust signals.
The diagnostic: run 20 prompts a real prospective customer would actually type, across all four engines. Count how often any source in the vertical gets cited. Below 30 percent and AEO is not the priority. Above 60 percent and AEO is core. Between those, AEO matters but should not crowd out classic work.
For the broader question of where to put marketing budget, see why CMOs should kill paid search budget. The argument for AEO and classic SEO over paid search is the same argument: build owned surfaces that compound, do not rent attention that resets to zero every month.
A 90-day AEO sprint
A 90-day plan to take a site from no AEO posture to measurable citation share. Run sequentially. Each phase has a deliverable and a gate.
Days 1 to 14: structural baseline.
- Audit the site for schema. Ship Organization, Person (founder + named team), Article on every blog post, FAQPage on any page with Q&A, BreadcrumbList everywhere.
- Add a tl;dr block to the top 10 most-trafficked pages. 60 to 100 words each.
- Ship llms.txt at the root. List the top 10 pages, the pillar content, and the approved proof pages.
- Validate every schema block in the Schema.org validator and Google Rich Results Test.
Gate: the home page, top three service pages, and top three blog posts all pass schema validation, all have a tl;dr, and the site has llms.txt at root.
Days 15 to 45: pillar content.
- Identify the three pillar topics for the business. AtlasForge runs four (speed-proofs, technical-depth, pseo-geo-aeo, mid-market-playbook).
- Write or rewrite the pillar pages to answer-shape rules. 3,000+ words each, with 6+ FAQ pairs.
- Build the cluster pages around each pillar (5 to 8 cluster pages per pillar).
- Internal-link aggressively from cluster to pillar and pillar to cluster.
Gate: three pillar pages live, each with 5+ cluster pages linking to it, every page passing answer-shape audit.
Days 46 to 75: named-entity audit and citation tracking setup.
- Audit every service page, proof page, and team page. Replace generic claims with named entities (tools, versions, dollar amounts, day counts, city names, client names where contracts allow).
- Build the branded-prompt monitoring list (30 to 50 prompts).
- Set up referrer log filtering in PostHog (or GA4).
- Run the prompt list across all four engines and log baseline citation share.
Gate: every public page passes the proper-noun count test (15+ proper nouns or numerals on substantive pages), and citation tracking has a baseline.
Days 76 to 90: iterate and report.
- Re-run the prompt list weekly. Log changes.
- Identify pages that should be cited but are not. Audit them against the answer-shape rules and fix the gaps.
- Ship two or three new cluster posts per week to fill topical gaps the prompt list exposes.
- At day 90, write the citation-share report and compare against the day-46 baseline.
Gate: citation share up by at least 30 percent on the tracked prompt list. If not, the structural work has gaps. Redo the audit before adding more content.
This sprint runs in parallel with classic SEO work, not instead of it. The full 90-day plan combining both is in the 90-day organic growth plan. For mid-market teams, AEO and classic SEO share the same content surface and the same engineering surface. Running them as separate programs creates duplication.
Closing
Back to the small food blog that outranked the national publication. It got cited because it answered the question in the shape the model wanted, with named people and named neighborhoods and named prices. The big site had every authority signal you can name. The small one had answer shape. The model took answer shape.
That is the whole job. Schema. tl;dr blocks. Named entities. Real authorship. Pages built so the model can lift the right paragraph without inferring anything. The citations follow.
The agency stance: we ship every AtlasForge client site with the AEO posture from day one. Schema, llms.txt, tl;dr blocks, named-entity audit, citation tracking. It is not a separate engagement. It is what shipping a marketing site looks like in 2026.