Method · updated 2026-09-19

How we measure AI visibility

This page describes the process as it runs today. Where a step is manual, it says so. Where something is planned but not built, it is labelled.

What we measure

Every metric comes from the same raw material: the full text of an assistant’s answer to a buyer question, kept as an unedited screenshot.

Visibility

In reports today

Whether the company is named when a buyer asks a category question without using its name. Scored 0 to 100 across the question set, with a letter grade per assistant.

Position in answer

In reports today

Where in the answer the company appears: first name, later in the list, or absent. Reports name who holds the first slot.

Branded accuracy

In reports today

When a buyer asks about the company by name, whether the address, services, hours and people in the answer are correct.

Competitor risk

In reports today

Which competitors are named on the questions where the client is missing, and how often the same names recur.

Share of voice

Live in the research pipeline

Mentions of one company divided by all company mentions across the same question set.

Citation rate

Live in the research pipeline

The share of answers that link to or cite a given domain.

Source influence

Live in the research pipeline

Which third-party sources (directories, review sites, press) an assistant cites when it names a company.

Sentiment

Not built yet

Whether the wording around a company mention is positive, neutral or negative.

Prompt sets

Questions are written the way a buyer types them, not the way a marketer would. Each set has two groups:

  • Discovery questions name a category and a place, never the client. Example from the sample report: “heat pump installer Devon”.
  • Branded questions ask about the client by name, to check that the facts are right.

A full audit uses a set of about 12 questions. The set is written once per client and stored with the scan. The monthly monitor re-runs the same set, word for word, so a change in the answers is not caused by a change in the questions.

Question sets are written by hand today. They are not generated or clustered automatically.

Collection

Answers are collected from the consumer web interfaces of ChatGPT, Gemini and Claude, in a browser. This is what a buyer sees, including local results and web search. It is not the same as calling the model APIs.

  • A browser agent types each question into each assistant and captures the full answer.
  • Each question runs in a fresh session with no chat history and no personalisation.
  • Captures are taken logged out where the assistant allows it, with no sidebar or account details in frame.
  • Sessions run from the client’s market. The US scans ran from US servers.
  • An audit is one run. The monitor repeats the run monthly.

The research pipeline collects differently. Studies and the demo dashboard call the vendor APIs with web search switched on and the user location set to the market. Every question runs twice per model. Each answer is stored with its full API response in an append-only SQLite database, so any published number can be traced to the raw answer. Cited URLs are reduced to domains and classified by a readable rule list, and a stability score reports how much the cited sources overlap between the two repeats. The first study is who AI assistants cite for health questions.

For client audits, run-to-run variance is not yet averaged out. Each question is asked once per assistant per run. See Limits.

Extraction

The agent reads each answer and records which companies were named, in what order, and what was said about the client. The result is one structured file per scan, scan.json, with a fixed schema: score, grade, per-assistant findings, named competitors and a fix list.

Accuracy is checked by a person. Every recorded company name and quote is compared with the screenshot it came from before the report is built. There is no automated accuracy score yet.

Reporting

A build script turns scan.json and its screenshots into a static report page and a PDF. The script only binds data to a fixed template. It does not write findings.

  • Automated: schema validation, image checks, page build, PDF render, publishing through a GitHub Action.
  • Agent-drafted, human-reviewed: the findings, the competitor notes and the fix list.
  • Human only: the decision to publish, and every email to a client.

The monthly monitor uses the same process and the same question set. It has no separate automation in the codebase yet.

Controls

  • A person approves every report before it is published or sent.
  • The build fails if a required field is missing or a screenshot file is corrupt. A broken report cannot be published by accident.
  • Agents upload screenshots through a write-only store. They cannot read, list or delete files, and they have no server access.
  • Client report pages are not indexed and use slugs that cannot be guessed.
  • Companies named in an answer are not contacted and are not told they were named.
  • Agents do not send email, do not log in to client accounts and do not spend money.

Every change to a scan or a report is a git commit, so there is a dated record of what was published and when.

Architecture

How a report is producedSix steps in order: question set, collection by a browser agent in ChatGPT, Gemini and Claude, evidence stored as screenshots and a scan file, human review, build with validation, and the finished report page and PDF.Question setbuyer questions per clientCollectionbrowser agent, fresh sessionsEvidencescreenshots + scan.jsonHuman reviewanswers checked, scoredBuildvalidate, render templateReportprivate page + PDFOutlined step = human approval point. Nothing reaches a client without it.
Question set, collection, evidence, review, build, report.

Stack

  • Assistants measured: ChatGPT, Gemini, Claude, through their web interfaces.
  • Collection: a browser agent.
  • Data: one JSON file per scan, versioned in git. Screenshots in a write-only store on our own server.
  • Build: a Node.js script with no dependencies, an HTML template, GitHub Actions.
  • Research pipeline: Python, SQLite, the OpenAI, Gemini and Anthropic APIs with their web search tools, CSV and JSON exports read by the site at build time.
  • Site: Next.js 16, React 19, TypeScript, Tailwind CSS 4, hosted on Vercel.
  • Development: agent-based, with Claude Code, reviewed by one person.

Limits

  • Assistants give different answers to the same question. A single run is a sample, not a fixed ranking.
  • Answers depend on location, session state and model version. We fix what we can and record the date of every run.
  • A web interface answer can differ from an API answer. We measure the interface because that is what buyers use.
  • A question set of about 12 covers the main buying questions. It does not cover every way a buyer might ask.
  • We can show who an assistant names. We cannot see why, and we cannot see how many people asked.
  • A fix list is based on what the named competitors have in common. It is advice, not a guarantee of being named.

Related: the sample report · research · who runs this · blog