Snapshots

We ask the AIs about a brand, then propose the page fix

Being built
  • Eight shopper questions, at least five unbranded, asked from the brand's own market.
  • ChatGPT, Gemini and Perplexity are asked through treg; Claude sits out while we run on Gemini.
  • Only real answers count; a tool that failed is never scored as not named.
  • Each gap gets one fix: a comparison, a proof block or an FAQ.
  • The weekly check costs about 50 cents a brand and retries after 6 hours on failure.
8shopper questions per brand
Your call

Ask Claude through the Anthropic key for this one check, about 8 short calls a week?

AI and models · 6.9

AI search visibility

DraftLast checked Mon Oct 26Owner Param

Answer

How Brew reads what ChatGPT, Gemini, Perplexity and Claude say when shoppers ask about a brand's category, who those answers name instead, and the specific page fix it proposes for each gap; it settles that we report only answers we really asked, from the brand's own market, and never guess a score.

Today

What is asked

  • The questions: 8 shopper questions, at least 5 unbranded, because what an AI says before anyone names the brand is the test brew/reader/stages/answers.js:92-94.
  • Where they come from, in order: a sourced set from Google suggestions, search volume, threads Brew heard and best sellers; else the brand's last questions so weeks compare; else the model writes them; else a template brew/reader/stages/answers.js:77-95 brew/ai-questions.js:51-108 brew/reader/stages/answers.js:147.
  • In the sourced set, the model only picks; the reason for each question is built in code from evidence memory brew-proof-plain-make.
  • The team can add up to 3 questions its customers ask memory brew-proof-plain-make.
  • Where from: the brand's market and language, through askMarket; a market still to confirm says so on every answer brew/reader/stages/answers.js:70-71 brew/live-watch.js:37.

Who is asked

Tool How Price Source
ChatGPT treg dataforseo.x.ai-optimization-chat-gpt-llm-scraper-live-advanced, web search forced $0.004 brew/reader/stages/answers.js:100 memory treg-catalog-for-brew
Gemini treg dataforseo.x.ai-optimization-gemini-llm-scraper-live-advanced $0.004 brew/reader/stages/answers.js:102
Perplexity treg dataforseo.x.ai-optimization-perplexity-llm-responses-live, sonar $0.004 brew/reader/stages/answers.js:104
Claude Brew's own AI with web search 3, only when the provider is Anthropic the model's price brew/reader/stages/answers.js:106-110
  • Under Gemini today, Claude is not asked, because its answer would be Gemini's labelled Claude brew/live-watch.js:159 memory brew-gemini-provider.
  • Answers are cached a week by treg, so the read, the live watcher and the weekly check share one paid answer brew/treg.js:20-27.
  • Avoid crawl4ai.ai-search.chatgpt.scrape at 3% success and llm-mentions at $0.10 memory treg-catalog-for-brew.

When

Run Cadence Cost Source
The read's answers stage On a brand's first read and re-reads per question per tool brew/reader/stages/answers.js:1-4
The weekly AI answers check Every 7 days, retried after 6 hours on failure about $0.50 a run brew/live-watch.js:21-24

What we read from each answer

  • Is the brand named, in any of its names, so "PUMA India" counts when an answer says "Puma" brew/reader/stages/answers.js:112-120 brew/reader/stages/answers.js:170.
  • Which rivals and other brands are named, and which sites are cited, and whether the brand's own site is cited brew/reader/stages/answers.js:118-121.
  • Two ledger facts: AI answers that name the brand, and unbranded AI answers that name it brew/reader/stages/answers.js:131-132.

The standing

  • ai-standing.js builds who the brand is up against from who the answers actually name, where the shopper named no brand; the read's rivals stand in only without that pass brew/ai-standing.js:36-44.
  • A tool that failed is no answer, never counted as "not named"; a failed check says it couldn't be read and retries brew/ai-standing.js:33 brew/ai-standing.js:64.
  • The AI answers ring uses one check only, the newest of the read and the weekly run; no bonus points; only tools that answered are named memory brew-ai-ring-one-check.

Improving it

  • The gap card: one fix per gap, by question kind, pointing at the brand's own product page or a new guide page brew/ai-gap.js:1-32 brew/feed-service.js:1144.
Question kind Fix Source
compare A comparison section beside the rival the answers named brew/ai-gap.js:22
proof A proof block: what it does, how long, the reviews that say so brew/ai-gap.js:23
safe An ingredients FAQ answering in its first line brew/ai-gap.js:24
price An FAQ with price and pack sizes brew/ai-gap.js:25
howto A two-sentence answer block brew/ai-gap.js:26
best, other An FAQ answering in its first line brew/ai-gap.js:27-28
  • The Play: the playbook includes a Play on getting the brand cited in AI answers, written first for Arata brew/sources/moves/15 Getting Arata cited in AI answers.txt.
  • The Brand Book's AI files: every brand gets /<slug>/brand.md, /<slug>/brand.json and /<slug>/llms.txt, an index an AI agent reads first, plus project notes for Claude and ChatGPT in the kit brew/brand-kit.js:1-12 brew/brand-kit.js:101.
  • Cards say what the brand gains, such as "Show your star ratings in Google and AI answers", never the technical step brew/cards-gen.js:258 brew/plain.js:90.

Tomorrow

Item Version Tag
Real answers only, from the brand's market, sourced questions, one check per ring v1 Stays
Claude asked again once the provider is Anthropic v1 Changes
A draft of the fix itself, the FAQ block or comparison section, ready to paste v1 New
Publishing that fix to the brand's store on a yes v2 New
Measuring whether a fix moved the brand into the answers, week on week v3 New
Google AI overviews and AI mode added as a tool v2 New, Proposed

How we do it

  1. Check a brand's standing on its AI answers sheet, from the card's proof shield, GET /api/tenants/:t/ai-answers memory brew-proof-plain-make.
  2. Never mix two checks on one card and never add points to a measured ring; test/ai-ring-one-check.test.js guards it memory brew-ai-ring-one-check.
  3. A new AI tool goes into the ask map with its own error branch, and is named only when it answered brew/reader/stages/answers.js:99-110.
  4. Keep the questions stable so weeks compare; change them only through the sourced set, which marks old runs as stale brew/live-watch.js:232.

Numbers

Metric Definition Where measured Status
Named AI answers that name the brand, over answers ledger ai.named.of brew/reader/stages/answers.js:131 Live
Unbranded named Unbranded answers that name the brand, over unbranded answers ledger ai.named.unbranded brew/reader/stages/answers.js:132 Live
By tool Named over answers, per tool profile.ai.score.byTool brew/reader/stages/answers.js:130 Live
Gap closed Questions where the brand moved from not named to named within 4 weeks of a fix weekly runs Proposed

Open

  1. Claude in the check. Claude sits out while Brew runs on Gemini, so the check shows three tools. Proposal: ask Claude through the Anthropic key for this one check even while the rest runs on Gemini, about 8 short calls a week a brand.
  2. Weekly check across many brands. About $0.50 a brand a week. Proposal: keep it weekly for design partners and monthly for brands that only had a read.
  3. Google AI overviews. Not asked today. Proposal: probe one treg endpoint for AI overviews on one brand with your yes, then add it if it answers reliably.
Sources
  • brew origin/main b91e364: reader/stages/answers.js:1-180, ai-questions.js:51-108, live-watch.js:1-37, 149-170 and 183-251, ai-standing.js:1-80, ai-gap.js:1-32, feed-service.js:1144, brand-kit.js:1-12 and 101, treg.js:20-27, cards-gen.js:258, plain.js:90
  • brew origin/main: sources/moves/15 Getting Arata cited in AI answers.txt
  • memory brew-ai-ring-one-check, brew-proof-plain-make, treg-catalog-for-brew, brew-gemini-provider, brew-brand-book

Source file content/ai-and-models/ai-search-visibility.md · For agents: Markdown · JSON