How the audit works.
Every number in a Citeshare report comes from asking a fixed set of engine APIs a fixed set of buyer questions, more than once, and counting which sites they linked. This page lists the exact models, the run counts, the definitions and the error bars, so you can judge the numbers yourself.
- What happens when I paste a URL?
- Which models and search backends do you query?
- How many times is each question asked?
- What do "cited" and "mentioned" mean?
- Why is every number a frequency, and how wide is the error bar?
- Is an API answer the same as the app?
- What do the 14 site checks look at?
- What does an audit cost you to run?
- What do you keep?
What happens when I paste a URL?
The audit is a fixed pipeline; only three steps ask a language model for judgment, and none of those steps puts your brand name into the questions sent to the engines.
- Crawl. We fetch up to 10 pages of your site, homepage first, plus
robots.txt,sitemap.xmlandllms.txt. We read titles, headings, meta descriptions, JSON-LD, visible text, price strings and freshness signals. Nothing is executed; we read the HTML as a crawler would. - Identify the product. A model (see the table) turns the crawled facts into a name, a category, a one-line description, the buyer, and a handful of named competitors. Nothing outside the crawled text is used. On the full audit, the category and competitors you confirm at checkout override what the model extracted.
- Write the buyer questions. The same model drafts questions a buyer in that category would type into an assistant, spread evenly across five shapes: best-for, vs, alternatives, worth-it and how-do-i. Code enforces the rules: your own name never appears in a question, near-duplicates are dropped, shapes are balanced, and the list is cut to 5 (snapshot) or 20 (full audit).
- Ask the engines. Each question goes to each engine with web search on, as a plain single-turn message with no system prompt and no mention of you. Calls run in parallel, three per engine at a time, with retries on rate limits and a spend cap per audit. A cap hit keeps what ran and reports the rest as not run.
- Score. Deterministic code reads each saved answer: which hosts were linked, whether your brand name appears in the text, which rival won. Every cell of the matrix is a count over the runs that succeeded.
- Check the site. Fourteen deterministic checks on the crawl (below).
- Fixes pack (full audit only).
robots.txtandREADME.mdare generated by code.faq.md,jsonld.htmlandllms.txtcome from one model call constrained to the crawled facts and the questions you lost or nobody won.
Which models and search backends do you query?
Five engines, each through its official API or through OpenRouter, always with the provider's own web search switched on. These are the defaults in production on the date at the top of the page; a model ID changes when the provider retires one.
| Engine | Model ID | Route | Search backend |
|---|---|---|---|
| ChatGPT | gpt-4.1-mini | OpenAI Responses API | OpenAI web_search tool |
| Claude | anthropic/claude-haiku-4.5 | OpenRouter | Anthropic's own web search tool, via OpenRouter's native web plugin |
| Gemini | gemini-flash-latest | Google Gemini API | Google Search grounding; redirect links are resolved to the real domain |
| Grok | grok-4-1-fast | xAI Responses API | xAI web_search tool |
| Perplexity | perplexity/sonar | OpenRouter | Perplexity's own search |
The plain-language steps that do not search the web use a separate model: identifying the product and writing the buyer questions run on muse-spark-1.3 through OpenCode Zen; the fixes pack, a long prompt that the free model stalls on, runs on gpt-4.1-mini through OpenAI. None of these calls has web search, and none of them decides a score.
How many times is each question asked?
The snapshot asks each question once per engine; the full audit asks ChatGPT, Claude and Perplexity three times and Gemini and Grok once, which keeps the audit under its spend cap: per call, measured in production, Grok costs about five times a ChatGPT call and Gemini about the same as Claude.
| Tier | Questions | Engines | Runs per engine | Engine runs |
|---|---|---|---|---|
| Snapshot (free) | 5 | ChatGPT, Claude, Gemini, Perplexity | 1 | 20 |
| Full audit | 20 | ChatGPT, Claude, Gemini, Grok, Perplexity | 3 · 3 · 1 · 1 · 3 | 220 |
Grok is skipped on the snapshot because a Grok call runs about three searches and costs roughly five times a ChatGPT call. A run that fails after retries is counted as failed, shown in the report header, and left out of every rate's denominator.
What do "cited" and "mentioned" mean?
Cited means the engine's answer carried a link whose host is your site, a subdomain of it, or (if you pasted a subdomain) its parent domain. Mentioned means your brand name appears as a whole word in the answer text. A run can be either, both, or neither; only cited sends a visitor.
- Links are the citations each API attaches to its answer (OpenAI and xAI annotations, Anthropic citation blocks, Gemini grounding chunks, Perplexity citations). Search results the model looked at but did not cite do not count.
- Hosts are normalised (
www.stripped, lower-cased).docs.example.comcounts forexample.com. - A rival is any other host that was cited, except aggregators (Reddit, Wikipedia, YouTube, G2, Capterra, Medium and about thirty more), which are counted separately because they are cited for everything.
- Nobody is a run where neither you nor any rival was cited: the engine answered from aggregators, or without links at all.
- A question is losing only when it is open-ended (best-for, alternatives, how-do-i), a rival the question did not name wins at least half the runs, and you appear in at most a third. "You vs Rival" citing the rival is not a loss.
- The winner of a cell is the host cited in the most runs; a cell is stable when that host won at least two of three runs. Stability is only reported where there are repeated runs to judge.
Why is every number a frequency, and how wide is the error bar?
An engine gives a different answer each time it is asked, so a single answer proves nothing. Every rate in a report is cited runs ÷ completed runs over the cell, engine or audit it describes; we never show a one-run verdict as a percentage.
The error bar follows from the number of runs. With three runs per cell, a cell rate can only be 0, 33, 67 or 100%, and its 95% interval is about ±50 points: a single cell tells you a direction, not a size. The roll-ups are where the precision is. On the full audit, an engine's rate over 20 questions × 3 runs (60 runs) carries an interval of about ±13 points near 50%; the audit-wide citation share over 220 runs about ±7. On the snapshot the per-engine rate is over 5 runs (about ±40) and the total over 20 (about ±20): read a snapshot as "roughly never, sometimes, usually", and the full audit as a number you can track between re-runs.
These are binomial intervals and assume runs are independent; they say nothing about the engines changing between one week and the next, which they do. That is why the report ends with a re-check date.
Is an API answer the same as the app?
No. The engine APIs with web search are a proxy for the consumer apps, not a recording of them. The app adds a system prompt, your chat history, personalisation, sometimes a different model, and its own retrieval settings; the API call we make is a single message with none of that. The direction of the results carries over (a site the API never cites is unlikely to be cited in the app), the exact percentages do not. We do not scrape consumer apps, and we do not claim the report reproduces what a given person sees.
What do the 14 site checks look at?
Fourteen deterministic checks on the crawl, each pass, warn or fail with the value we found. They are the cheap, on-page part of being citable; the guide ranks them against the levers that matter more.
| Check | What it reads |
|---|---|
| Homepage reachable | HTTP 200 on the homepage; the audit fails outright if not |
| AI crawlers allowed | robots.txt rules for GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, PerplexityBot, Google-Extended, CCBot |
| llms.txt present | A non-HTML /llms.txt with a 200 status |
| sitemap.xml present | A /sitemap.xml with a 200 status |
| JSON-LD Organization / WebSite | Any crawled page carries one of those types |
| JSON-LD Product / Offer | Any crawled page carries Product, Offer, SoftwareApplication or Service |
| Answer-first FAQ block | A crawled page with question-and-answer structure |
| Content without JavaScript | Visible text length in the raw HTML and the share hidden by inline styles until scripts run |
| Title and H1 | A non-empty title and at least one H1 on the homepage |
| Meta description | Present on the homepage |
| Canonical URL | Present on the homepage |
| Freshness signal | A dateModified or modified_time on any crawled page |
| Brand name consistent | The extracted name appears in the title, H1 or description of at least half the crawled pages |
| Pricing visible in HTML | Price strings found in the raw text of any crawled page |
What does an audit cost you to run?
In engine spend, a snapshot costs us about $0.36 and a full audit about $4.60, measured on production audits. The spend is dominated by the search calls: per call Grok is the dearest at about $0.06, Claude and Gemini about $0.03 each, ChatGPT about $0.01 and Perplexity under that. Each audit runs under a hard cap in code ($0.60 snapshot, $8 full audit); a cap hit is reported, never hidden. The price of the full audit is on the FAQ.
What do you keep?
The audit record (URL, email, crawled facts, questions, answers with their links, fixes pack) is kept so the report link keeps working, until you ask us to delete it. The hash of your IP address is deleted after 24 hours; failed free snapshots are deleted after 30 days. On a deletion request a free audit is deleted outright and a paid one is anonymised, keeping only the payment record for the bookkeeping period. The engines only ever see the generated questions, which do not name you or your site. Details, recipients and your rights are in the privacy notice.