Evidence you can check

Reproduce an AI visibility rate from its evidence

A percentage becomes useful when you can see which answers count. This worked example keeps the question, captured text, engine, date, exclusions and file checks together.

By the Broadcastwell team. Updated 6 November 2026.

Start with one fixed question

Kalvenor Systems is a fictional company. This example uses question 1 from its retained sample and includes scheduled answers only. These are not customer results or a current engine test.

What is field service management software?

The example contains 15 records: 15 valid answers and 0 excluded records. The results are separated by engine below. Collection timestamps and model labels remain on every record; the page update date does not change those dates.

Scheduled answers
EngineValid / retainedExcludedBrand namedOwn domain cited
ChatGPT3 / 301 of 3, 33.3%; 95% interval 6.1% to 79.2%0 of 3, 0%; 95% interval 0% to 56.2%
Claude3 / 302 of 3, 66.7%; 95% interval 20.8% to 93.9%0 of 3, 0%; 95% interval 0% to 56.2%
Google AI Mode3 / 300 of 3, 0%; 95% interval 0% to 56.2%0 of 3, 0%; 95% interval 0% to 56.2%
Google AI Overviews3 / 301 of 3, 33.3%; 95% interval 6.1% to 79.2%0 of 3, 0%; 95% interval 0% to 56.2%
Perplexity3 / 301 of 3, 33.3%; 95% interval 6.1% to 79.2%1 of 3, 33.3%; 95% interval 6.1% to 79.2%

Open the first complete receipt, or inspect all 15 records in the explorer.

Count the denominator first

  1. Select the same question, collection group and engine. Keep adaptive follow-up answers separate from the scheduled observations.
  2. Count records with usable answer text and no engine error. This is the denominator. Retain failures in the file, but leave them out of the rate.
  3. For the mention rate, count valid answers whose brand_named value is 1. For the own-domain citation rate, count valid answers whose domain_cited value is 1.
  4. Divide the relevant numerator by the valid-answer denominator, then multiply by 100. A zero denominator produces no rate.

For the whole 15-record example, the mention calculation is 5 divided by 15, multiplied by 100: 33.3 percent. Its own-domain citation calculation is 1 divided by 15, multiplied by 100: 6.7 percent. These totals describe this example only. Use the engine rows for a comparison within one answer surface.

How the uncertainty interval is calculated

The check record uses a 95 percent Wilson interval. With p = k / n and z = 1.96, the centre is (p + z² / (2n)) / (1 + z² / n). The margin is z × √(p(1 − p)/n + z²/(4n²)) / (1 + z²/n). The lower and upper bounds are the centre minus and plus that margin.

Repeated answers can be dependent. The interval describes these recorded binary outcomes under the method's assumptions; it does not measure traffic, revenue or a guaranteed future response. An engine change or a changed question set can break comparability.

Check that the files belong together

The check record contains the observation count, unique IDs, exclusions and two SHA-256 checksums. A checksum detects a changed file; it does not establish that an answer is true.

  1. For CSV, calculate SHA-256 on the exact downloaded bytes. Compare the result with csv_sha256. The file uses UTF-8 and CRLF line endings, so resaving it in a spreadsheet can change its checksum.
  2. For JSON, parse the file and serialize only its observations array with JavaScript's JSON.stringify. Hash that UTF-8 text and compare it with observations_json_sha256. Preserve array order.
  3. Check that every observation ID is present and unique. A filtered export contains only the selected records and has its own checksum. It cannot stand in for the complete baseline.

CSV quotes multiline answers and appends the stable observation ID as its final column. Potential spreadsheet formulas receive a leading apostrophe. The JSON file retains original values and array structure, so it is the right format for an exact raw-data comparison.

Read the evidence columns

Identity and scope
id, baseline_id, run_id, question_id, question_text, slot and contract_version connect the observation to its receipt and agreed question set.
Collection
engine, model_string, instrument_scope, repeat_index, repeat_reason and observed_at say what was captured and when. A missing model label stays missing.
Recorded answer
answer_full, answer_len and engine_error retain the answer or the reason it could not be scored. Missing records are counted separately from retained failures when a planned count is available.
Names and citations
brand_named, domain_cited, competitors_checked, competitors_found, cited_urls, cited_urls_count and cited_urls_truncated keep the observed evidence and any source-list truncation explicit.
Position
position_rank, position_band and position_basis retain the recorded position and its basis. A mention alone does not establish a recommendation.

Use the same check on an account export

The existing baseline export route keeps its access rules. A public fictional baseline is open; a private baseline still requires the account's existing access. No new credential is needed for this example.

For a baseline you can already export, replace the final .json or .csv with .manifest.json to download its check record. JSON exports also include the same record under export_integrity. This reads retained evidence and does not run an engine.

Keep the complete export when handing work to another person. A CSV can be convenient for analysis, while the original JSON retains arrays and raw answer values. Record any filters and the collection dates beside a derived figure.

Compare competitor mentions and cited sources, then check two periods or record a recommendation decision beside the exact answer.

Return to the full evidence explorer or choose another free tool.