Resources for The Definitive 2027 Guide to AEO

The Definitive 2027 Guide to AEO: Companion resources

Everything the main guide points to but doesn't need in the reading path: the forward-looking sections, the risk table, the paste-ready templates, and the full source list.

A. The next surfaces: apps, MCP, product feeds and agent buyers

Everything in the main guide is about being described well in an answer. The surfaces arriving now are about being used inside one. They're early, and I'd put a small bet on them rather than a strategy, but a guide to 2027 that ignores them would be out of date by spring.

Apps in ChatGPT, and MCP for B2B

When OpenAI pulled Instant Checkout, the stated direction was apps: merchants and services running inside ChatGPT, with the transaction on their own rails. Instacart, DoorDash, Target and Expedia were the named examples, and Walmart said it would put its own assistant into ChatGPT and Gemini. The B2B version of the same idea is MCP, the open protocol that lets a model call your product directly. Claude, ChatGPT and most enterprise copilots support it.

What that means for AEO: for a subset of products, the best answer to "how do I do X" will stop being a citation to your docs and start being the model doing X in your product. If a buyer can ask an assistant to pull a report from you, create a record in you, or check a status in you, the model is no longer describing you; it's demonstrating you.

When I'd build it:

  • Your product has a clear, bounded set of actions a user would delegate (create, fetch, check, calculate), and an API that already exists.
  • Your buyers live in assistants at work (the G2 data says two-thirds of software buyers spend six-plus hours a week in them).
  • You can ship a read-only connector first. Read-only is low-risk, fast, and enough to be the product the model reaches for.

When I wouldn't: if your "app" would be a chatbot about your marketing site. That's a landing page with extra steps.

Treat a connector as a fact page that executes: name it consistently, document it publicly and plainly, list it in the directories (ChatGPT's app directory, which OpenAI renamed to plugins in July 2026, and the MCP registries your buyers' tools read), and put the listing in your source map. The directories are official pages on trusted domains, which is exactly what Section 04 says the model scopes to.

Product feeds and agentic storefronts, for anyone who sells things

If you're ecommerce, the onsite work in Section 06 still applies, but the fact page the model wants is the feed. After the March pivot, OpenAI said merchants can share product feeds and promotions so their catalog is fully represented in ChatGPT's product discovery, with Target, Sephora and Nordstrom named as early supporters. Shopify's Agentic Storefronts syndicate a catalog to ChatGPT, Perplexity and Copilot from the admin. Google's Universal Commerce Protocol does the equivalent for AI Mode and Gemini. Amazon Ads began piloting campaign extension into ChatGPT on September 10.

  1. Feed accuracy decides whether you're eligible and represented correctly. Complete attributes, accurate availability, current prices, real images, GTINs. Walmart reportedly found ChatGPT checkout converted at a third of its own site rate with product-data inaccuracy as a major cause (a trade-press paraphrase of a conference remark; unverified against a transcript).
  2. Land the click on the product, not the category. The Shero data: stores landing AI visitors on product pages converted at 1.62% vs. 1.06%. Make sure the feed's landing URLs are the PDP with the answer-first anatomy from Section 06C.
  3. Reviews are retrieval. Product review counts and recency feed both the model's opinion routing and the shopping surfaces.
  4. Track it separately. ChatGPT product discovery, Perplexity Instant Buy and Google's UCP surfaces each need their own row in the report; the referrers differ and some arrive as Direct.

When the buyer is an agent

The answer engine in 2027 is increasingly not a chatbot a person types into but an agent a company runs. G2's 2026 Buyer Behavior Report has over 60% of B2B buyers using or planning to use AI agents in software evaluation; IDC's August 2026 research, as reported, puts agent use at eight in ten B2B technology buyers; Forrester expects about one in five sellers to face agent-led quote negotiations this year; and large enterprises are wiring procurement bots to their policy documents over MCP. An agent doing evaluation reads different things than a chatbot answering a question: pricing logic across usage scenarios, security documentation it can parse, SLA and contract terms, implementation requirements, renewal options, and whether you're already an approved vendor. G2's read is that agents drop vendors whose claims they can't verify.

That calls for one more fact page, which I'd call the procurement pack: a trust center with security evidence in structured form rather than a PDF behind a form; a pricing page whose logic an agent can apply to "200 seats, annual, with SSO"; contract, SLA and renewal terms in plain HTML; implementation and data-residency requirements stated once; and, for products where it fits, an MCP endpoint that serves the facts directly. This is the first surface where AEO and sales enablement are the same document, and where the person who should own it sits in sales operations or security rather than marketing.

Evaluation never ends

G2's other finding is that buyers re-evaluate vendors they've already chosen, and a better alternative is one query away. Your customers' assistants are comparing you at renewal whether you're watching or not. Two additions to the program: a prompt class for renewal ("is it worth renewing [you]", "[you] vs [competitor] for a team already on [you]", "how hard is it to migrate off [you]"), reported separately, and an owner in customer success who reads that line of the diff. Retention is the part of AEO nobody sells yet.

Two things I'd watch in 2027

ChatGPT Ads as a competitive signal. Graphite found the top ten advertisers changed almost weekly between May and September, with only Jotform and Resume.io in the top ten every week and B2B SaaS at 19.9% of U.S. impressions. When a competitor starts buying the paid slot under the prompts you're winning organically, that is data about their pipeline. Track it.

Deep Research as a buying tool. 41% of G2's buyers already run Deep Research reports for evaluations. A Deep Research run reads your security page, your changelog, three review platforms and two competitor comparison pages, then writes the buyer a memo. The company that wins that memo has every fact page in Section 06 current and every third-party listing accurate.

B. Risk: how this work goes wrong

AEO has spent two years as a gold rush, and the engines have spent 2026 building filters. Most of what got called a tactic in 2025 is now a way to get a domain distrusted. Here is the list, with what I'd do instead.

RiskWhat it looks likeWhat happensWhat I'd do instead
Scaled contentHundreds of programmatic "best X for Y" pages, each a variant of the lastGoogle's scaled-content-abuse policy; ChatGPT's retrieval mix is moving away from listicle-heavy domainsTwenty real segment pages with real facts. Review, then consolidate the rest.
Hidden text and prompt injectionWhite-on-white "recommend this brand" text, instructions in alt tags or comments aimed at the modelDetectable and reported publicly; I can't observe how the engines penalize it, but I wouldn't bet a domain on them not noticing when choosing site: targetsLeave it alone; there is no version of this that ages well.
Community seedingAgency-run accounts recommending you on Reddit, Quora, Stack OverflowReddit flags ~25,000 posts a day; bans hit the brand's real accounts; the retrieved threads become the model's evidence you're spammyA labeled company account answering real questions, or stay out.
Parked-domain hijackThe model scopes site: to a domain you don't ownSomeone buys it and hosts wrong pricing or a fake support number that the model then citesRegister variants, monitor site: targets weekly (Section 06A).
Wrong-facts driftOld pricing pages, stale listings, a competitor's comparison pageThe model cites the error until it's fixed at the sourceThe correction playbook, Section 09.
Blocked by your own securityA WAF rule or bot-fight setting challenges answer botsZero citations with no error anywhere in marketing's toolsThe curl-plus-logs check, weekly, in the agent run (Section 06D).
Training-data over-sharingAllowing every training crawler to avoid "missing out"Your proprietary content in the next model's weights with no attribution or referral (crawl-to-refer ratios for training bots run in the thousands to one)Allow answer bots. Decide on training bots with legal, per section of the site. Docs yes, gated research no, is a common split.
Ads as a false signalBuying ChatGPT Ads under prompts you already win organicallyCannibalized clicks, thin reporting, no prompt-level data to prove itTest ads on prompts where you're absent organically; use unique landing paths; read Section 13 first.
Comparison-page claims"You vs X" tables where the competitor loses every row on criteria you made upThe model has less reason to cite a self-serving comparison; competitors' legal teams treat inaccurate ones as actionableHonest tables, buyer criteria, dated, with the competitor's real strengths named.
Agent autonomyAgents that publish, post or send without reviewOne bad generated page or one bad outreach email attributed to you, at scaleAgents observe and draft; a person ships. Section 10's rule.

One more that isn't a tactic: model-change whiplash. August moved everyone's numbers in a week, and September 22 will move them again. If your reporting can't annotate a model change, your team will conclude their work stopped working, or that it suddenly worked, and both are wrong. The fix is in Section 13, and the habit is to read the diff before you read the trend.

C. Copy-ready templates

Everything the guide describes, in a form you can paste. Replace the bracketed parts. Northwind is the invented company from Section 11.

C1. Pricing page, first screen

# [Product] pricing (updated [Month YYYY])

[Product] has [N] plans. [Plan A] is $[X] per [unit] per month, [Plan B] is $[Y] per [unit] per month, and [Plan C] is custom. There is no platform fee. Annual billing is [Z]% less. All plans include [three things buyers ask about]. [Feature buyers ask about most] is available on [Plan B] and above.

| Plan | Price per [unit]/month | Included | Limits | Best for |
| --- | --- | --- | --- | --- |
| [Plan A] | $[X] | ... | ... | [segment] |
| [Plan B] | $[Y] | ... | ... | [segment] |
| [Plan C] | Custom | ... | ... | [segment] |

## What's not included
[Plain statement of what costs extra or isn't offered, e.g. "[Product] does not offer [thing]. If you need [thing], use [category of tool] alongside it."]

## Frequently asked
**Is there a free trial?** [Yes/No, length, what's included.]
**How is [unit] counted?** [One sentence.]
**Can I change plans mid-cycle?** [One sentence.]

The table must be server-rendered HTML. If your pricing toggle is JavaScript, render the default state in the HTML and let the toggle enhance it.

C2. Segment page, first 150 words

# [Product] for [segment: company size / industry / role]

**[Product] for [segment] with [defining constraint].** [Product] [does the core thing] for [segment], [one concrete capability with a number], and [second capability]. Pricing for a [typical segment size] is $[X] per month on the [Plan] plan. [One sentence on what it doesn't do and what to pair it with.] [Compliance fact with date.] Last updated [Month YYYY].

## Why [segment] chooses [Product]
[Three short paragraphs, each one claim, each with an example or number.]

## What [segment] should know before choosing
[Honest limits. Named alternatives for cases you don't fit.]

## [Segment] questions
**[Question in buyer's words]?** [30 to 60 word answer.]
(repeat for 5 to 8 questions from sales calls and support)

Build one of these only where the segment's facts, pricing or decision criteria differ from another segment's. Same facts, one page.

C3. Comparison page

# [Product] vs [Competitor] ([YYYY])

**Short answer:** Choose [Product] if [condition]. Choose [Competitor] if [condition]. [One sentence on the biggest real difference, with a number.]

| Criterion | [Product] | [Competitor] |
| --- | --- | --- |
| Pricing for [typical segment] | $[X]/mo | $[Y]/mo (as of [date], from their pricing page) |
| [Criterion buyers actually use] | ... | ... |
| [8 to 12 rows; include rows the competitor wins] | ... | ... |

## Where [Competitor] is the better choice
[Two or three honest paragraphs. This section is why the page gets cited.]

## Where [Product] is the better choice
[Same.]

## Migration
[What moving from one to the other involves, in steps.]

Sources: [competitor pricing page link, date checked], [review platform links].

C4. FAQ block spec (for product pages)

Each entry: a question in the buyer's exact words as an H3; a 30 to 60 word answer that stands alone without the page; one concrete detail (number, date, name); no marketing adjectives. Five to eight per page. Wrap in FAQPage schema. Source the questions from the Section 05 prompt set. These are editorial defaults, not engine requirements.

C5. robots.txt

# Answer / search bots: allow. These are what cite you.
User-agent: OAI-SearchBot
Allow: /

User-agent: PerplexityBot
Allow: /

User-agent: Claude-SearchBot
Allow: /

User-agent: Claude-User
Allow: /

User-agent: Google-Extended
Allow: /

User-agent: Bingbot
Allow: /

# Training bots: your legal and brand decision. Example split below.
User-agent: GPTBot
Allow: /docs/
Disallow: /

User-agent: ClaudeBot
Allow: /docs/
Disallow: /

User-agent: CCBot
Disallow: /

Sitemap: https://[you].com/sitemap.xml

Check current user-agent names on each vendor's crawler documentation before shipping; they change. Google AI Overviews and AI Mode use Googlebot, so Google-Extended only affects Gemini grounding and training. Anthropic runs ClaudeBot (training), Claude-SearchBot (search index) and Claude-User (fetches a person triggers); allow the last two even if you block the first. Then run the curl-plus-logs check from Section 06D, because robots.txt doesn't override your WAF.

C6. GA4 AI channel group

Create a custom channel group with a channel named "AI assistants" matching Session source with regex:

(chatgpt\.com|chat\.openai\.com|openai\.com|perplexity\.ai|copilot\.microsoft\.com|gemini\.google\.com|bard\.google\.com|claude\.ai|anthropic\.com|you\.com|meta\.ai|mistral\.ai|x\.ai|grok\.com)

Add sources as they appear in your referrer report. Report it beside the self-reported field below; never divide one by the other.

C7. Self-reported attribution field

On the signup or demo form, one question: "How did you first hear about us?" with options that include "ChatGPT or another AI assistant" as its own choice, not folded into "search" or "other." Pass the answer to the CRM as a field.

C8. Prompt-set CSV

See Section 05. Two files: prompts.csv (prompt_id, class, brand_scope, base_prompt, variant_type, variant_value, segment, engine_scope, added_on, retired_on, notes) and runs.csv (run_id, prompt_id, engine, tier, locale, collection_method, run_number, timestamp, in_initial_search, mentioned, recommended, cited_owned_domain, cited_url, competitor_names, answer_text, fanout_queries, status). Required and optional fields are listed in the workflow contract in Section 10 and in the open measurement spec that ships with the skill.

C9. Weekly diff (what the Tuesday message should say)

AEO diff, week of [date]. Model notes: [any engine/model change this week].
Collection: 60 prompts x 5 runs x 4 engines requested; 1,188 of 1,200 completed (12 failures listed below).
Mentioned, unbranded + competitor-branded prompts: ChatGPT 12/39 (was 10/39), AI Mode 9/39 (9), Gemini 7/39 (6), Perplexity 16/39 (17)
Recommended, same prompts: ChatGPT 4/39 (3)
In initial search (ChatGPT only, UI): 9/39 (8)
Review flags (crossed 3-of-5 this week; task only if it holds next week): P014 2/5 -> 3/5; P031 3/5 -> 2/5
Lost citations (3): [prompt] lost [url] on [engine]; ...
New competitor citations (2): [competitor] cited on [prompt] via [domain]; ...
New domains in citations (2): [domain] on [n] prompts, not in source map, owner: [name]
Description accuracy: 4/4 engines correct (was 3/4; Gemini fixed EOR error)
Bot access: verified answer-bot requests 200 on pricing, docs, security
Collection failures (12): [engine, prompt, error]
Shipped last week: [list]. Top 3 by score this week: [list].

C10. Monthly one-page report

The six lines from Section 13, in order, with last month beside this month and a one-line note on each. Nothing else.

D. The resource kit

The files referenced throughout the guide, packaged together as AEO-resource-kit.zip:

FileWhat it isWhere it's used
prompts-template.csvBlank prompt inventory with the schema headersSection 05
prompts-example.csvFilled Northwind example, eight prompts across five classesSection 05, Section 11
prompt-set-template-and-rules.mdInclusion, retirement, mix and reporting rulesSection 05
source-map-example.csvKnown third-party domains with type and ownerSection 07
AEO-measurement-workbook.xlsxPrompts, Runs (239 synthetic rows), Weekly Summary (formulas: eligibility, 3-of-5 wins, review flags, rates with cell sizes), Business (GA4 beside self-reported), Source Map with scoresSections 08, 13
agency-scope-of-work-and-evaluation.mdNine workstreams with acceptance criteria, whole-engagement criteria, red flags, the eight questionsSection 12
vendor-evaluation-scoresheet.xlsxTen weighted criteria, three vendor columns, weighted totalsSection 12
aeo-observation-loop.skillThe Claude Code skill: SKILL.md, scripts/aeo_diff.py, samples/, examples/tuesday_diff.md, references/contract.md, troubleshootingSection 10, Section 14
open-measurement-spec.mdv0.1 of the vendor-neutral measurement specSections 05, 10, 13

All sample data is synthetic and labeled as such. The workbook's yellow cells are where your own export goes; black cells are formulas.

E. Sources

Reach figures for ChatGPT, Gemini, AI Overviews and AI Mode are the platforms' own announcements as reported in the trade press and should be re-checked at publication. Items sourced only through aggregators are marked "via" and should be traced to the original before the piece ships.


name: aeo-observation-loop description: Runs the weekly AEO observation loop from The Definitive 2027 Guide to AEO (StackedGTM). Use whenever the user has an AI-visibility tracker export or prompt-set run data (runs.csv / prompts.csv / a Profound, Peec or similar export) and wants the weekly citation diff, mention and recommendation rates by prompt class, review flags, lost citations, new cited domains, source-map updates, or the "Tuesday diff" message. Trigger on phrases like "AEO diff", "citation diff", "visibility this week vs last week", "which prompts moved", "new domains in citations", "update the source map", "run the observation loop", or any request to turn AI-search tracking data into prioritized tasks. This skill ANALYZES exports; it does not query ChatGPT, Gemini or Perplexity itself.

AEO observation loop

This skill turns a prompt-set export into the weekly diff described in Sections 05, 10 and 13 of The Definitive 2027 Guide to AEO. It reads two CSV files, compares this week's runs with last week's, and writes a Tuesday message plus a task list. It never publishes, posts or sends anything.

What it needs

  1. prompts.csv — the prompt inventory. Columns: prompt_id, class, brand_scope, base_prompt, variant_type, variant_value, segment, engine_scope, added_on, retired_on, notes. brand_scope must be one of unbranded, competitor-branded, own-brand. See samples/prompts.csv.
  2. runs.csv — one row per completed or failed run. Required columns: run_id, prompt_id, engine, tier, locale, collection_method, run_number, timestamp, mentioned, recommended, cited_owned_domain, status. Optional: in_initial_search, cited_url, competitor_names, answer_text, fanout_queries. See samples/runs.csv and references/contract.md for the full field spec and the graceful-degradation rules.
  3. Optional source_map.csv — known third-party domains (domain, type, owner). New cited domains not in this file get flagged.

If the user has a vendor export in another shape, map its columns to these names first (a short Python or spreadsheet step). Ask the user which environment the export was collected from (consumer UI vs API); write it into collection_method. Never mix the two in one comparison.

How to run it

python scripts/aeo_diff.py --prompts prompts.csv --runs runs.csv [--source-map source_map.csv] [--out out/]

The script:

  • Splits runs into the two most recent ISO weeks (or use --this-week YYYY-Www --last-week YYYY-Www).
  • Groups by prompt_id × engine × tier × locale × collection_method. Anything that differs on those keys is a separate series, never a change.
  • Counts completed runs (status=ok) per group. Fewer than 5 completed runs → the group is listed under coverage and excluded from every comparison.
  • Applies the 3-of-5 rule: a prompt is "mentioned" this week when mentioned=1 in at least 3 of 5 completed runs. Same for recommended and cited-owned-domain.
  • Reports mention and recommendation rates only on unbranded and competitor-branded prompts. Own-brand prompts are reported separately on recommendation and (if answer_text exists) flagged for the accuracy check.
  • Flags threshold crossings as review flags with raw counts (this week 3/5, last week 2/5); a flag becomes a task only if --tasks-from a prior diff shows it held two weeks.
  • Lists lost citations, new competitor citations, and new cited domains not in the source map.
  • Degrades gracefully: missing answer_text → no accuracy section; missing cited_url → no source-level comparison; missing in_initial_search → "unknown", excluded rather than zero. The output states which sections were suppressed and why.

Outputs: out/tuesday_diff.md (the message, Appendix C9 shape), out/tasks.csv (one row per flagged change with prompt, engine, evidence run ids, cited URL, proposed change, owner placeholder, retest date = +14 days), out/coverage.csv.

What to do with the output

  1. Paste tuesday_diff.md into Slack as-is. Do not summarize it further; the counts are the point.
  2. Open tasks.csv. For each row, fill owner and adjust proposed_change before anyone acts. A person checks every proposed change against the approved fact sheet before publishing or sending.
  3. Add new domains to source_map.csv with a type and owner.
  4. Re-run in 14 days on the retest prompts; a flag clears when it holds for three consecutive weeks.

What this skill does not do

  • It does not collect data. Pair it with a tracker that exports per-run rows, or with a manual run log.
  • It does not classify accuracy. It lists own-brand prompts with answer_text for a human (or a separate step) to score against the fact sheet.
  • It does not decide what to ship. The prioritization score (Section 08) is applied by a person to the tasks file.

References

  • references/contract.md — the full workflow contract: fields, comparison rule, thresholds, failure handling, output, approval, retest.
  • examples/tuesday_diff.md — output produced from the sample files, so you can see the expected shape before running on real data.
  • references/open-measurement-spec.md — the open measurement spec this skill implements (fields, events, comparison rule, thresholds, disclosure). Point vendors and teammates at it when their numbers need to be comparable to yours.

Troubleshooting

  • "Cannot run: required columns missing": your export lacks one of the required fields. Map your tracker's column names to the schema in references/contract.md before running; rename in a spreadsheet or a one-line pandas script.
  • "No runs found" or everything lands in coverage: timestamps aren't ISO 8601, or every prompt has fewer than 5 completed runs. Check timestamp looks like 2026-10-13T14:07:00Z and that status is ok on completed rows.
  • Every prompt is a review flag: last week and this week were collected with different tier, locale or collection_method. The diff treats those as separate series and reports no history; fix the labels, don't compare across environments.
  • Suppressed sections in the header: optional columns are missing; the script says which. Add answer_text for the accuracy list, cited_url for lost-citation and new-domain sections, in_initial_search for initial-search inclusion.
  • New domains list is empty but citations changed: pass --source-map (known domains are excluded by design) and --brand yourbrand so your own domain isn't counted as new.
  • Expected output: compare your first run against examples/tuesday_diff.md, produced from samples/. The sample run reports 119 requested, 118 completed, 1 failed, 2 short series excluded.

AEO diff, week 2026-W42 vs 2026-W41. Model notes: [fill in any engine/model change this week] Coverage: 119 runs requested, 118 completed, 1 failed; 2 prompt/engine series excluded for <5 completed runs.

Mentioned (3-of-5 rule), unbranded + competitor-branded prompts: ai_mode: mentioned 3/4 (was 1/5); recommended 0/4 (was 0/5); owned-domain cited 3/4 chatgpt: mentioned 4/5 (was 1/5); recommended 0/5 (was 0/5); owned-domain cited 1/5 perplexity: mentioned 2/4 (was 1/5); recommended 0/4 (was 0/5); owned-domain cited 1/4 In initial search, ai_mode: unknown (not exposed) In initial search, chatgpt: 11/25 runs where observable In initial search, perplexity: unknown (not exposed)

Own-brand prompts (recommendation quality only; mentions not reported): ai_mode: recommended 2/3; owned-domain cited 3/3 chatgpt: recommended 3/3; owned-domain cited 2/3 perplexity: recommended 2/3; owned-domain cited 2/3

Review flags (21; crossed the 3-of-5 line, task only if it holds next week): P001 chatgpt mentioned 1/5 -> 3/5 P001 chatgpt cited (owned domain) 0/5 -> 3/5 P001 ai_mode mentioned 1/5 -> 3/5 P001 ai_mode cited (owned domain) 0/5 -> 3/5 P002 ai_mode mentioned 1/5 -> 4/5 P002 ai_mode cited (owned domain) 1/5 -> 4/5 P003 perplexity mentioned 1/5 -> 3/5 P003 ai_mode cited (owned domain) 1/5 -> 5/5 P004 chatgpt mentioned 2/5 -> 4/5 P004 perplexity mentioned 0/5 -> 5/5 P004 perplexity cited (owned domain) 0/5 -> 4/5 P005 chatgpt recommended 2/5 -> 3/5 P005 chatgpt cited (owned domain) 1/5 -> 3/5 P005 perplexity recommended 3/5 -> 1/5 P005 ai_mode cited (owned domain) 1/5 -> 5/5 P006 chatgpt recommended 2/5 -> 3/5 P006 ai_mode cited (owned domain) 2/5 -> 5/5 P007 chatgpt cited (owned domain) 1/5 -> 5/5 P007 perplexity recommended 2/5 -> 4/5 P007 perplexity cited (owned domain) 1/5 -> 4/5 P008 chatgpt mentioned 1/5 -> 4/5 Lost owned-domain citations (1): P001 perplexity lost https://northwind.com/payroll-for-startups-with-international-contractors New competitor names in answers (1): Rippling newly named on 6 prompts (P001;P002;P003;P005;P006;P008) New domains in citations, not in source map, on 2+ prompts (1): saastr.com on 4 prompts (P003;P004;P005;P008), owner: [name] Description accuracy: [score the own-brand answers below against the fact sheet] P005 chatgpt runs R0180;R0181;R0182;R0183;R0184 P005 perplexity runs R0185;R0186;R0187;R0188;R0189 P005 ai_mode runs R0190;R0191;R0192;R0193;R0194 P006 chatgpt runs R0195;R0196;R0197;R0198;R0199 P006 perplexity runs R0200;R0201;R0202;R0203;R0204 P006 ai_mode runs R0205;R0206;R0207;R0208;R0209 P007 chatgpt runs R0210;R0211;R0212;R0213;R0214 P007 perplexity runs R0215;R0216;R0217;R0218;R0219 P007 ai_mode runs R0220;R0221;R0222;R0223;R0224 Bot access: [paste this week's verified-crawler status codes for pricing, docs, security] Collection failures / short series (2): P002 perplexity free en-US ui: 4/5 P004 ai_mode free en-US ui: 4/4 Shipped last week: [list]. Top 3 by score this week: [list].