How to build a repeatable AI visibility scan
A practical protocol for recording engines, questions, locale, time, answers, and source links.
On this page
An AI visibility scan is useful when you can run it again without changing what the result means. Save the question, locale, engine scope, time, returned answer, and answer state. Then a later scan can be read as another observation of the same defined test.
Gistful currently checks ChatGPT, Gemini, Claude, and Perplexity. Its current scan record keeps the profile snapshot, exact question text, requested country and language, method, timestamps, answers, and cited sources when they are available. That is enough to inspect a result without treating it as a verdict on your work.
Freeze the question set before the first scan
Start with discovery questions a potential client could ask without knowing your name. A name-recognition question can diagnose what an engine associates with you, but it does not belong in discovery coverage. Give every discovery question one job: find an expert for a problem, compare fit for a buyer type, or investigate a decision.
Record the exact wording. Do not tidy it later and keep the old date. A word such as "independent," a buyer type, or a country can change who an engine treats as relevant.
For an illustrative pricing consultant, a small set could include:
| Question | Job |
|---|---|
| Which independent pricing strategists help B2B software teams choose packaging? | Find an expert for a service. |
| Who can help a US B2B software company prepare for a pricing change? | Test a geography-specific buyer situation. |
| What does Jordan Lee do in pricing strategy? | Separate recognition check. |
The first two questions can form a discovery series. The third belongs in a recognition report. The examples are prompts, not evidence of demand or a prediction that an engine will recommend anyone.
Record the scope before you run it
Use a record that another person can read without guessing what happened:
| Field | Record |
|---|---|
| Questions | Exact saved text and each question's purpose |
| Profile snapshot | The public facts supplied for the person at collection time |
| Engines | Which of ChatGPT, Gemini, Claude, and Perplexity were included |
| Requested locale | Country and language selected for the scan |
| Collection details | Date and time recorded with the scan |
| Answer state | Returned, missing, failed, or pending review |
| Evidence | Full answer text, cited links when present, and identity assessment |
The requested locale describes the scope you asked Gistful to use. Gistful records a US or GB English locale. That record does not establish a physical browser or search location for every engine. Keep that limit in the report instead of adding a location claim the evidence cannot support.
Run the same scope across the included engines
Run the saved questions without editing them during the scan. Keep engine rows separate. A ChatGPT answer and a Perplexity answer are two pieces of evidence, not votes in a contest. They may return different people, cite different pages, ask for clarification, or fail.
When a result arrives, preserve the full answer before you summarize it. Open any cited page and check what it supports. OpenAI warns that web search results and citations can be incomplete, outdated, or wrong, and advises checking cited sources when accuracy matters. OpenAI's guidance describes that review step for ChatGPT Search.
For discovery coverage, count confirmed identity-supported mentions against returned discovery answers. A short answer, refusal, or clarification response still belongs in the returned-answer denominator. A missing or failed check is unmeasured and stays outside that denominator. Keep recognition rows out of the discovery figure.
Mark exceptions instead of repairing them after the fact
Suppose eight discovery checks return answers. Two answers need a follow-up because the name could refer to someone else. One answer asks the user to narrow the request. One engine request fails. Your record should show eight returned discovery answers, the two unresolved identity assessments, the clarification response, and one unmeasured failure. Do not delete the thin response because it makes the percentage uncomfortable.
An exception log can stay short:
| Check | What happened | How to report it |
|---|---|---|
| Gemini, question 2 | Returned a clarification request | Returned discovery answer; no supported mention established. |
| Claude, question 1 | Name could match two people | Returned answer; identity review unresolved. |
| Perplexity, question 2 | No answer returned | Unmeasured check. |
The log preserves the reason a numerator or denominator looks the way it does. It does not explain why an engine returned that answer.
Compare only a matching later scan
On a later date, run the same saved discovery questions with the same requested locale, profile scope, engine scope, and collection method. If you add an engine, change country, revise the profile facts, or rewrite a question, begin a new series for the changed scope. Keep the older result visible beside it rather than drawing a trend line through two different tests.
Google says that its search results may vary with location, language, device type, and current searches. It describes Google Search, not every engine in this scan, but it is a sound reason to preserve the conditions of any observed answer. Read Google's explanation.
Save the scope record with the answers, then use it when you rescan. A later change can be worth investigating. The record tells you whether you are looking at a new observation of the same question or a different question altogether.
