A GEO audit answers three questions about a brand. When buyers ask AI assistants for recommendations, how often is the brand named? Who gets named instead? And what would have to change for that to flip? This guide is the method we'd use by hand: no special tools, a spreadsheet and a day.
It works for your own brand, and it works as a pitch. Agencies can run it on a prospect before the first meeting.
What you'll end up with
- Visibility and share of voice, overall and for each assistant.
- The competitors that get named instead, and how often.
- The sources the assistants cite, and which of them leave the brand out.
- A list of wrong or outdated things the assistants say about the brand.
- A crawler access check.
- A fix list in priority order.
Allow about a day for 20 questions on five assistants, most of it spent running and recording answers.
Step 1: Write 20 to 30 buyer questions
Everything depends on the questions, so spend real time here. A prompt in this audit is a question a real buyer would type, not a keyword.
Where to find them
- Sales and discovery call notes. Copy the buyer's words, not the salesperson's.
- Your reviews and your competitors' on G2, Capterra, Trustpilot or Google.
- Questions posted in your category on Reddit, LinkedIn and industry forums.
- Long, question-shaped queries in Google Search Console.
- "People also ask" boxes in Google for your main category terms.
A good mix
| Type | Example | Share |
|---|---|---|
| Category | Best HR software for a 50-person company in Ireland | About 40% |
| Problem | How do we track holiday requests without spreadsheets? | About 20% |
| Comparison | BambooHR vs HiBob for a small team | About 15% |
| Alternatives | Cheaper alternatives to BambooHR | About 15% |
| Brand | Is [brand] good for companies under 100 people? | About 10% |
Rules for writing them
- Add the context buyers give: company size, industry, location, budget, the tools they already use. "Best CRM" and "best CRM for a 12-person recruitment agency in Leeds" get different answers, and the second is closer to what people ask.
- Leave the brand out of every question except the brand questions.
- One question per need. Five rewordings of the same question add hours and teach you little.
- Write the list down and don't change it for the audit. You'll re-run the same list later to measure progress.
Step 2: Run them
Which assistants
At minimum ChatGPT, Google (AI Overviews, and AI Mode if your buyers use it), Gemini and Perplexity. Add Claude, Grok or Microsoft Copilot if your buyers are likely to use them. B2B software buyers lean heavily on ChatGPT. 63% of buyers in G2's 2026 survey mainly used it, so weight it accordingly.
How to run them
- Web search on. Buyers get recommendations with search on, and it's the only way to see sources.
- A clean session. Use a temporary or incognito chat, with memory and custom instructions off, or sign out where the assistant allows it. Your own history skews the answers.
- The buyer's country. If the buyers are in Germany, check from Germany, with a VPN if you have to. Assistants use your location when they search.
- More than once. Answers vary a lot between runs. SparkToro found the same list of brands came back less than once in 100 tries. Two runs per question per assistant is the minimum. Three is better.
- Close together. Do the whole run within a day or two so every answer reflects the same week.
Step 3: Record every answer the same way
One row per answer. These columns are enough:
| Column | What goes in it |
|---|---|
| Question | Exactly as run |
| Type | Category, problem, comparison, alternatives or brand |
| Assistant | ChatGPT, AI Overviews, Gemini and so on |
| Run | 1, 2 or 3 |
| Named | Yes or no |
| Position | Where the brand was first named: 1 for first, blank if not named |
| Companies named | Every company in the answer, in order, separated by commas |
| Sources | Every cited URL |
| What it said | The reason given for the brand or its competitors, and any wrong facts |
Count a company once per answer, at the first place a reader meets it. Paste the full answer into a second tab if you can. You'll want it when you get to step 6.
Step 4: Score visibility and share of voice
Two numbers do most of the work.
- Visibility is answers naming the brand divided by all answers. In a spreadsheet,
=COUNTIF(E:E,"Yes")/COUNTA(E:E), if Named is column E and has no header. - Share of voice is the brand's mentions divided by all company mentions across the answers. Split the Companies column into one row per company, then count.
Work out both for the brand and its top three or four competitors, then break visibility down by assistant and by question type. The breakdowns are where the story is. A brand at 50% on comparison questions and 5% on category questions is known but rarely put on the shortlist. A brand at 40% on Perplexity and 0% on ChatGPT might have a crawler problem.
Visibility from a sample of answers comes with a margin of error. For a brand named in about half of answers, the 95% margin is roughly ±18 points on 30 answers, ±9 on 120 and ±6 on 300. So a move from 25% to 30% on 30 answers is noise. Don't celebrate it, and don't panic about the reverse. Results for one assistant come from a smaller sample than the total, so read them with more care.
Also note the average position when the brand is named, but don't lean on it. Order changes more between runs than membership does.
Step 5: Sort the sources
This is the most valuable step. Put every cited URL from every answer in one list, count how often each was cited, and label each with a type.
| Type | Examples |
|---|---|
| The brand's site | Homepage, pricing, product and blog pages |
| A competitor's site | Their comparison and "alternatives" pages especially |
| Review platform | G2, Capterra, Trustpilot, Yelp, Google reviews |
| Community | Reddit, Quora, industry forums, LinkedIn posts |
| Video | YouTube reviews, walkthroughs, comparisons |
| Editorial | "Best X for Y" roundups, trade press, news |
| Reference | Wikipedia, company databases, directories |
Then open the 20 or 30 most cited URLs and mark each one: mentions the brand, mentions only competitors, or mentions nobody relevant. Sort by citation count. The pages at the top that mention competitors and not the brand are the audit's most important finding.
The type counts are useful too. If most citations are community and video and the brand has no presence there, that's a strategy finding, not a page fix. Our report on what AI answers cite has the cross-industry averages to compare against.
Step 6: Check what they say about the brand
Run these on each assistant, in a clean session:
- What is [brand]?
- Who is [brand] for?
- How much does [brand] cost?
- What are the downsides of [brand]?
- [Brand] vs [main competitor]: which is better for [typical buyer]?
Log every wrong or outdated statement: old prices, retired products, the wrong target customer, confusion with a similarly named company, a complaint that was fixed years ago. Note the source cited for each. Assistants make things up sometimes, but most errors trace back to a real page that says the wrong thing.
Also note the reasons given in step 3's answers. If the assistants keep saying a competitor is "best for small teams" and the brand is "enterprise-focused", and that isn't true, that's a positioning problem you can see in the sources.
Step 7: Check that assistants can read the site
Look at /robots.txt. These are the crawlers that fetch pages for AI answers, according to each company's documentation:
| Crawler | Company | What blocking it does |
|---|---|---|
| OAI-SearchBot | OpenAI | Removes the site from ChatGPT search answers |
| Claude-SearchBot | Anthropic | May reduce visibility in Claude's search answers |
| Claude-User | Anthropic | Stops Claude fetching pages while answering a user |
| PerplexityBot | Perplexity | Keeps the site out of the index Perplexity answers from |
| Googlebot | Removes the site from Google Search, AI Overviews and AI Mode |
Training crawlers are separate: GPTBot and ClaudeBot. Blocking them keeps the site out of future model training without removing it from search answers. That's a legitimate choice. Be careful with Google-Extended, though. It covers Gemini training and also grounding in the Gemini app, so blocking it can keep the site out of Gemini's answers, though not out of AI Overviews or AI Mode. A robots.txt that allows the answer crawlers and blocks the two training crawlers looks like this:
# Answer and search crawlers: allow, or you can't be cited
User-agent: OAI-SearchBot
Allow: /
User-agent: Claude-SearchBot
Allow: /
User-agent: Claude-User
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: Perplexity-User
Allow: /
# Training crawlers: your call
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /Then check the layers robots.txt can't show you:
- Firewall and CDN. Ask whoever manages it whether AI crawlers are blocked, rate-limited or shown a challenge page. Check the logs for the crawler names above and look at the response codes they get.
- JavaScript. View the page source, or load the page with JavaScript off. If prices, product descriptions or FAQs only appear after scripts run, some crawlers won't see them.
- Indexing. Google's AI answers draw on the normal Google index, so pages must be indexed. Search Console shows which are.
You don't need an llms.txt file or special markup. Google's guide to AI features says Google Search ignores llms.txt and doesn't require structured data for AI features.
Step 8: Build the fix list
Turn every finding into a fix with an owner. Score each one on two things: how many questions it affects, and how soon it can ship. Then order the list in this sequence.
- Blockers. Crawler blocks and pages that can't be read. These come first because nothing else works until they're fixed.
- Wrong facts. Fix outdated prices, products and descriptions at the source they came from.
- Missing answers on the site. Pages for the use cases, comparisons and plain facts that step 3 showed buyers asking about.
- Cited pages that leave the brand out. The list from step 5, most cited first: roundup outreach, review profiles, directories.
- Presence where the discussion is. Community, video and press work aimed at the questions that matter most.
An example of what the top of the list looks like:
| Fix | Where | Questions | Effort |
|---|---|---|---|
| Allow OAI-SearchBot in robots.txt | On-site | All | Minutes |
| Publish starting prices on the pricing page | On-site | 9 of 24 | Days |
| Pitch the "best HR software for small business" roundup, cited in 31 answers | Off-site | 7 of 24 | Weeks |
| Complete the Capterra profile and ask 20 customers for reviews | Off-site | 11 of 24 | Weeks |
| Publish a comparison page against the top competitor | On-site | 5 of 24 | Days |
Split the list into on-site and off-site work. Off-site fixes often matter more, and they're the ones a website-only team skips.
Step 9: Re-run and report
Re-run the same questions the same way, on a fixed schedule. Monthly is the minimum, weekly is better. Website changes tend to show within a few weeks. Changes that depend on other people, like reviews, threads and third-party articles, take one to two months.
When you report, show the trend with honest ranges, mark the date each fix went live, and point to the sources that changed. "The Capterra category page now lists us and it's cited in a fifth of answers" is the sentence that gets the work renewed.
Verdict does steps 2 to 5, part of step 8 and the re-runs for you: every question on six assistants each week, from the buyer's country, with the sources traced and a fix list kept up to date. But the method above works by hand, and it's worth doing once to know what you're looking at.