A B2B website is ready for answer engines when AI crawlers can fetch it, your company is described the same way everywhere, structured data matches the visible page, key pages open with direct answers, and trusted third parties confirm what you claim. This checklist breaks that into seven layers. Every item has a test you can run in minutes and a clear pass condition.
Work top to bottom. Each layer depends on the one above it: perfect answer blocks are useless if a firewall blocks the crawler, and schema cannot fix a company description that contradicts your Clutch profile.
If you are new to the topic, read AEO and GEO for beginners first. Larger organizations with multiple business units should also look at the 30-point enterprise readiness checklist and the 40-point GEO audit. This version is scoped to a typical B2B company site of a few dozen to a few hundred pages.
How to use this checklist
Copy each table into a sheet with three extra columns: Status (pass, fail, partial), Owner, and Fix by date. Score one point per pass. The score matters less than the order in which you fix things, which is covered at the end.
You will need access to: robots.txt and your CDN or WAF settings, server or CDN logs, Google Search Console, your CMS, and logins for your LinkedIn company page, Clutch or G2 profile, and any partner directory listings.
Layer 1: Crawler access
AI engines retrieve pages before they cite them. Each vendor documents its own user agents. OpenAI states that sites opted out of OAI-SearchBot will not be shown in ChatGPT search answers. Anthropic notes that blocking Claude-SearchBot may reduce your visibility in user search results. Perplexity says PerplexityBot is used to surface and link websites in its results, and it publishes IP ranges for firewall allowlists.
| # | Check | How to test | Pass looks like |
|---|---|---|---|
| 1.1 | robots.txt does not block search-facing AI bots | Open /robots.txt. Look for Disallow rules under OAI-SearchBot, Claude-SearchBot, PerplexityBot, or a blanket rule under User-agent: * | Public marketing pages are allowed for all three |
| 1.2 | CDN and WAF do not challenge AI bots | Review bot management settings in your CDN. Run the curl test below | HTTP 200 with the real page, not a challenge or captcha page |
| 1.3 | Key copy is in the raw HTML | Fetch the page without JavaScript and search for your opening answer sentence | The sentence appears in the raw response |
| 1.4 | Money pages are indexed in Google | URL Inspection in Search Console | Indexed, no noindex, canonical points to itself |
| 1.5 | Snippets are not restricted | View source for nosnippet, data-nosnippet or max-snippet on money pages | None present on pages you want cited |
| 1.6 | XML sitemap is complete | Open /sitemap.xml and compare against your list of money pages | Every money page listed, lastmod dates accurate |
| 1.7 | AI bots are actually fetching | Filter the last 30 days of logs by user agent, then verify IPs against published ranges | Verified hits from at least OAI-SearchBot, Claude-SearchBot and PerplexityBot |
Check 1.4 and 1.5 matter for Google specifically. Its AI features documentation says a page must be indexed and eligible to show with a snippet to appear as a supporting link, and lists nosnippet and max-snippet among the controls that limit how content appears.
# 1.2 and 1.3: does a bot get the real page, and is the answer in raw HTML?
curl -s -o /dev/null -w "%{http_code}\n" \
-A "Mozilla/5.0 (compatible; OAI-SearchBot/1.0)" \
https://www.example.com/services/snowflake-migration/
curl -s https://www.example.com/services/snowflake-migration/ \
| grep -i "migrates mid-market healthcare"
# 1.7: AI bot hits in an nginx access log
grep -Ei "OAI-SearchBot|Claude-SearchBot|PerplexityBot|GPTBot|ClaudeBot" \
/var/log/nginx/access.log | awk '{print $1, $7}' | sort | uniq -c | sort -rn | head -30
A user agent string can be spoofed, so a 200 on the curl test is a first check, not proof. Logs plus IP verification are the real evidence. Deeper guides: AI crawler log file analysis, JavaScript rendering for AI crawlers and Cloudflare AI crawler settings.
Layer 2: Entity clarity
An AI engine has to be confident that the "Acme" on your site, on LinkedIn, on Clutch and in a listicle is the same company doing the same thing. Inconsistent descriptions make that harder.
| # | Check | How to test | Pass looks like |
|---|---|---|---|
| 2.1 | One canonical company description | Paste the description from your homepage, About page, LinkedIn, Clutch or G2, Crunchbase and partner listing into one sheet | Same category noun, same audience, same headquarters, same core offering |
| 2.2 | A real About page | Read it as a stranger | States what you do, for whom, founding year, headquarters, leadership and locations in plain text |
| 2.3 | Named experts with bio pages | Check founder and practice lead pages | Each has a bio page, a photo, a title, credentials and a LinkedIn link |
| 2.4 | No name collision | Ask ChatGPT, Claude, Perplexity and Gemini "What is [brand]?" | All four describe your company, not a namesake |
| 2.5 | Offerings named consistently | Compare service or product names across site, directories and partner listings | Identical names everywhere |
| 2.6 | Proof numbers consistent | Search your site and profiles for client counts, years and outcomes | One number per claim, with a date |
CANONICAL ENTITY STATEMENT (use verbatim everywhere)
[Brand] is a [category noun] that helps [audience: industry, size,
region] [achieve outcome] through [offering 1], [offering 2] and
[offering 3]. Founded in [year], headquartered in [city], with
teams in [locations]. [One verifiable proof point with a date.]
Short version (under 160 characters, for directory taglines):
[Brand]: [category noun] for [audience], specializing in [offering].
If check 2.4 fails, read brand name disambiguation in AI search. For expert pages, see author entity SEO.
Layer 3: Structured data
Be clear about what schema does. Google says there is no special schema.org markup needed to appear in AI Overviews or AI Mode. Schema is a clarity layer: it states facts in machine-readable form, and it must match the visible page.
For Organization markup, Google's documentation says there are no required properties, recommends placing it on your home page or a single page that describes the organization, and lists properties such as name, url, logo, sameAs, address, contactPoint, description, foundingDate, legalName and identifiers like duns or leiCode.
| # | Check | How to test | Pass looks like |
|---|---|---|---|
| 3.1 | Organization markup on home or About page | View source and search for "@type": "Organization" | Present, with name, url, logo, description, address and sameAs |
| 3.2 | sameAs is complete | Compare sameAs URLs against your real profiles | LinkedIn, Crunchbase, Clutch or G2, YouTube, partner listing all included and live |
| 3.3 | Offering pages marked up | Check service or product pages | Service (for services) or SoftwareApplication (for software) with a description matching the page |
| 3.4 | Articles have real authors | Check blog posts | Article markup with a Person author who has a bio page |
| 3.5 | Breadcrumbs | Check deep pages | BreadcrumbList matches the visible breadcrumb |
| 3.6 | FAQPage only where FAQs are visible | Compare markup to page content | Every marked-up question is visible on the page |
| 3.7 | Markup validates | Run pages through Google's Rich Results Test and the Schema.org validator | No errors; warnings reviewed |
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Acme Data",
"legalName": "Acme Data Consulting LLC",
"url": "https://www.acmedata.example/",
"logo": "https://www.acmedata.example/logo.png",
"description": "Snowflake services partner that migrates mid-market healthcare and insurance companies off legacy data warehouses.",
"foundingDate": "2019",
"address": {
"@type": "PostalAddress",
"addressLocality": "Austin",
"addressRegion": "TX",
"addressCountry": "US"
},
"sameAs": [
"https://www.linkedin.com/company/acme-data-example",
"https://www.crunchbase.com/organization/acme-data-example",
"https://clutch.co/profile/acme-data-example"
]
}
</script>
More detail: Organization schema for entities, product schema for AI search and FAQ schema in AI search.
Layer 4: llms.txt (optional, do it last)
llms.txt is a proposal from Jeremy Howard for a markdown file at your site root that summarizes the site and lists key pages. The only required element is an H1 title. The format adds a blockquote summary and H2 sections containing link lists, with an "Optional" section for secondary pages.
Google says you do not need AI text files to appear in its AI features, and the evidence that other crawlers rely on llms.txt is thin. Our review of that evidence is in does llms.txt work. Do it only after layers 1 to 3 pass, and only if your team will keep it current.
| # | Check | How to test | Pass looks like |
|---|---|---|---|
| 4.1 | File exists and follows the format | Open /llms.txt | H1, blockquote summary, H2 link sections |
| 4.2 | Links are current | Click every link | No 404s, no redirected or retired pages |
# Acme Data
> Snowflake services partner that migrates mid-market healthcare and
> insurance companies off legacy data warehouses. Founded 2019, Austin TX.
## Services
- [Teradata to Snowflake migration](https://www.acmedata.example/teradata-migration/): scope, timeline, pricing model
- [Healthcare claims analytics on Snowflake](https://www.acmedata.example/healthcare-claims/)
## Proof
- [Case study: regional payer migration](https://www.acmedata.example/case-studies/regional-payer/)
## Optional
- [About and leadership](https://www.acmedata.example/about/)
Layer 5: Answer-ready pages
AI engines lift passages, not whole pages. A page is answer-ready when a single passage can answer a buyer's sub-question on its own, with specifics.
| # | Check | How to test | Pass looks like |
|---|---|---|---|
| 5.1 | A page per buyer question cluster | Map your prompt set to URLs | Every priority prompt has a clear best page: offering, industry, comparison, alternatives, pricing model, integration |
| 5.2 | Answer in the first 40 to 60 words | Read only the first paragraph | It answers the page's main question with who, what, for whom and proof |
| 5.3 | Question-style subheads | Scan the H2s | Most read like questions a buyer would ask |
| 5.4 | Specifics over adjectives | Highlight every number, named integration, named customer and date | Several per section; no paragraph of pure claims |
| 5.5 | Tables for comparisons and specs | Check comparison and product pages | HTML tables, not images of tables |
| 5.6 | Visible last-updated date | Check money pages | Date shown and accurate; reviewed within the quarter |
| 5.7 | Case studies with named outcomes | Open three case studies | Client or clear descriptor, problem, approach, measured result, timeframe |
| 5.8 | Pricing model stated | Look for how you charge | At least the pricing model and main drivers are public |
| 5.9 | Gated assets have open summaries | Check whitepaper and webinar pages | An ungated summary with the key findings |
ANSWER BLOCK TEMPLATE (place under the H1 or under each H2)
[Direct answer in one sentence that repeats the question's key terms.]
[Who it applies to and under what conditions.]
[One specific proof: number, named integration, certification or customer.]
[What to do next or how it is priced, in one sentence.]
Example H2: How long does a Teradata to Snowflake migration take?
Most mid-market migrations we run take 12 to 20 weeks from discovery
to cutover. Timelines depend on the number of ETL jobs and downstream
BI reports. ...
Supporting guides: content structure for LLMs, case study pages for AI citations, gated content and AI search and content freshness.
Layer 6: Third-party corroboration
Your own site is one voice. Engines check it against others. In Orbit Media's study of 13,184 AI citations, Clutch was Claude's single most-cited third-party domain and LinkedIn was Perplexity's most-cited domain. The engines also rarely agreed: all four cited the same domain in only 1.7% of cases.
| # | Check | How to test | Pass looks like |
|---|---|---|---|
| 6.1 | Review profile complete | Open your Clutch (services) or G2 (software) profile | Canonical description, correct categories, reviews from the last 12 months |
| 6.2 | Listed in cited listicles | From your benchmark, list the listicles engines cite for your prompts | You appear, accurately, in at least three of them |
| 6.3 | Partner and marketplace listings current | Open each listing | Current tier, certifications, industries and description |
| 6.4 | Executive LinkedIn active | Check the founder's last 30 days | Regular posts on the topics you want to be cited for |
| 6.5 | Video and audio have transcripts | Check YouTube and podcast appearances | Accurate transcripts or show notes naming your company and topic |
| 6.6 | Press and association mentions consistent | Search your brand name in news and association sites | Descriptions match your canonical statement |
How to find and win these placements is covered in the off-site assets that get B2B brands cited.
Layer 7: Measurement
| # | Check | How to test | Pass looks like |
|---|---|---|---|
| 7.1 | Prompt set written | Open the file | 30 to 100 real buyer prompts across category, problem, comparison, alternatives and validation |
| 7.2 | Baseline recorded | Check the benchmark sheet | Mention rate, citation rate and share of voice by engine, with a date |
| 7.3 | AI referral channel in GA4 | Open GA4 channel groups | A custom channel for ChatGPT, Perplexity, Claude, Gemini and Copilot referrers |
| 7.4 | Self-reported attribution | Open your demo or contact form | "How did you hear about us" includes an AI assistant option, synced to CRM |
| 7.5 | Monthly re-run scheduled | Check the calendar | Same prompts, same protocol, same week each month |
Method: how to benchmark your AI visibility and AI referral traffic in GA4.
Scoring and fix order
There are 42 checks. Do not fix them by counting points. Fix them by what each failure blocks.
| If this fails | It blocks | Fix priority |
|---|---|---|
| 1.1, 1.2, 1.3, 1.4 | Everything. Engines cannot read the page | This week |
| 2.1, 2.4 | Engines naming you confidently, even when they read your pages | Within two weeks |
| 5.1, 5.2 | Citations for category and problem prompts | Within 30 days, starting with five money pages |
| 6.1, 6.2 | Mentions in engines that favor third parties | Start within 30 days; this takes months to build |
| 7.1, 7.2 | Proving any of it worked | Before you change anything else |
| 3.x, 4.x | Clarity and consistency, not access | After the above |
A worked example
Illustrative example. A 45-person legal tech vendor runs the checklist on a 120-page site.
- Layer 1: robots.txt is fine, but the CDN bot setting challenges unverified bots, and the pricing and integrations pages render their main copy with client-side JavaScript. Two fails, both fixed in the first sprint.
- Layer 2: the homepage says "contract intelligence platform," G2 says "CLM software," and LinkedIn says "legal AI company." One canonical statement goes everywhere.
- Layer 3: Organization markup exists but sameAs lists a retired Twitter handle and misses G2. Fixed in an hour.
- Layer 5: no page answers "CLM for ServiceNow" even though sales hears it weekly. A new integration page ships with an answer block and a comparison table.
- Layer 6: the vendor is missing from two of the three listicles that engines cite for "best CLM for mid-market." The team sends factual inclusion requests with a short product summary.
- Layer 7: there was no baseline. They run one before shipping any change so the next month's re-run means something.
What to do this week
- Run checks 1.1 to 1.7. Fix any block the same day.
- Write your canonical entity statement and paste it into LinkedIn, Clutch or G2, and your About page.
- Write 30 prompts and record a baseline before changing any page.
- Rewrite the first paragraph of your five most important pages using the answer block template.
- Book the monthly re-run in the calendar.
For a step-by-step schedule that sequences this whole checklist, use AEO in 90 days. If you want a second pair of eyes, our AEO, GEO and SEO team runs this checklist as part of a free audit, and the AEO and GEO playbook has the full field guide.
