# AI Search Visibility Audit — Methodology

**Hundred Euro Labs · Method v1.0 (2026-08-25)**

This document defines the repeatable method behind our AI Search Visibility Audits: how we build the query battery, what we measure, how we benchmark competitors, and how findings become a prioritized fix plan. Every audit report states its method version, run dates, sample sizes, and limitations. We report what we measured — never outcome guarantees.

---

## 1. What this measures (and why)

Buyers increasingly ask AI assistants and AI-powered search engines the questions they used to type into Google: *"best client portal for agencies"*, *"X vs Y"*, *"is [brand] worth it"*. The answers name brands, characterize them, and cite sources. That layer is now part of every B2B and DTC buying journey — and it can be inspected, measured, and influenced like any other channel.

An audit answers four questions with counts, not adjectives:

1. **Presence** — when buyers ask category questions, does the client's brand appear in the answer at all?
2. **Position & voice** — how prominently, compared with named competitors?
3. **Narrative & accuracy** — what do these systems say about the brand, and is it true?
4. **Sources** — which third-party pages get cited, and is the client present in them?

We sell the analysis and the prioritized fix plan derived from it. We do not sell "measurement" as an end in itself (free graders do that), and we never promise placement outcomes.

## 2. Scope definitions

- **AI surfaces** ("engines"): conversational assistants and AI-answer products buyers actually use — ChatGPT, Perplexity, Gemini, Google AI Overviews. Bing Copilot optional by agreement.
- **Citation layer**: the set of web pages engines cite or draw on when answering category queries.
- **Battery**: the fixed query list executed against each surface (§4).
- **Run**: one execution of one query on one surface at one timestamp, with the full raw output retained.

## 3. Client intake (inputs that shape the battery)

Collected via a 30-minute intake form + call notes; recorded in `intake-sheet.md`:

| Field | Used for |
|---|---|
| Brand names, product names, common misspellings | Mention detection rules |
| Category as buyers say it (not internal jargon) | Query class 1–2 wording |
| 2–3 nominated competitors | Benchmark set |
| Top buyer personas / verticals | Use-case query slice |
| Known objections, pricing model, key claims | Trust/validation queries; accuracy checklist |
| Priority markets/languages | Localization of battery (v1: English) |

If the client has none of this documented, we derive candidates from public data (review platforms, community threads, their own site nav) and confirm with the client before the first run.

## 4. The query battery

**Default size: 48 queries per client (valid range 40–60).** Fixed proportions across six intent classes, because real purchase journeys touch all six:

| Class | Intent stage | Default share | Examples (client-portal SaaS case) |
|---|---|---|---|
| C1 Category head | discovery | 8 (17%) | "best client portal software", "top client portal tools 2026" |
| C2 Use-case / vertical | consideration | 10 (21%) | "client portal for design agencies", "portal for accounting firms" |
| C3 Comparison | shortlist | 8 (17%) | "[Brand] vs [Competitor A]", "[Brand] vs [Competitor B]" |
| C4 Alternatives / switching | shortlist | 8 (17%) | "[Brand] alternatives", "switching from [Brand]" |
| C5 Problem / solution | early research | 8 (17%) | "how to share deliverables with clients securely", "reduce client email back-and-forth" |
| C6 Trust / validation | pre-purchase | 6 (12%) | "is [Brand] worth it", "[Brand] pricing", "[Brand] reviews complaints" |

**Construction rules**

1. Phrased as buyers phrase them: sentence-style questions or natural fragments, ≤10 words where possible. No brand biasing except in C3/C4/C6 where the brand is the object.
2. Wording mined from: client sales-call language, review-platform review titles, community threads (Reddit, forums), keyword tools if the client provides exports, and our scoping run.
3. Each query logged in the battery sheet with: id (`Q01`–`Q48`), class, text, rationale (one line), date added.
4. Battery is frozen before Run 1 and versioned; mid-audit changes are appended as v1.x and re-run queries are marked, so deltas stay comparable.

## 5. Measurement protocol

### 5.1 Tiers

Two honest tiers, always labeled in the report:

- **Full audit (paid standard):** all six classes across ≥3 engines. Engines are accessed lawfully: via official APIs where offered, or via documented interactive runs performed under the engine's terms of use (no automation in breach of ToS, no captcha circumvention). Google AI Overviews coverage depends on lawful availability; if a surface cannot be sampled lawfully at audit time, the report says so explicitly instead of approximating.
- **Snapshot (samples / budget tier):** reduced battery (16–24 queries, all six classes represented), 1 assistant surface + citation-layer analysis via web search. Clearly labeled "snapshot — directional, not multi-engine".

### 5.2 Sampling discipline

LLM answers are stochastic. One run per query measures noise.

- **n = 3 runs per query per surface** (fresh session each run; no personalization; location/language noted).
- Runs date-stamped; raw outputs archived verbatim (JSONL: `{query_id, surface, run_no, timestamp, raw_output}`).
- Detection rule: a brand "appears" only if the answer names it (or an unambiguous product name) in the generated text, independent of citations. Citation presence tracked separately — conflating them inflates visibility.
- Prompting: the bare query, optionally prefixed with a fixed neutral role line recorded in the run log ("You are advising a marketing manager evaluating options."). Nothing that steers toward or away from any brand. The exact prompt template ships in the appendix of every report.

### 5.3 Metrics

Per brand (client + each competitor), computed over the full battery × runs:

| Metric | Definition | Formula |
|---|---|---|
| Presence Rate (PR) | share of queries where the brand appears in ≥1 of n runs | `queries_with_appearance / queries` |
| Share of Voice (SOV) | share of all competitor-set mentions earned by the brand | `brand_mentions / total_mentions_of_all_benchmark_brands` |
| Lead Position Rate (LPR) | appearances in the top third of an answer's brand list | `top_third_appearances / appearances` |
| Sentiment Index (SI) | net sentiment of characterizations, from coded mention clauses | `(pos − neg) / total_mention_clauses`, rubric in §5.4 |
| Citation Inclusion (CII) | share of queries where ≥1 cited source features the brand's domain or a page about the brand | `queries_with_brand_in_citations / queries` |
| Accuracy Error Count (AEC) | count of checkably false statements about the brand (pricing, features, ownership) per battery | manual verification against primary sources, each error quoted & sourced |

**Composite: AI Visibility Score (AIVS, 0–100)**

```
AIVS = 100 × (0.35·PR + 0.20·SOV + 0.10·LPR
              + 0.15·(SI+1)/2 + 0.15·CII + 0.05·(1 − min(AEC,10)/10))
```

Weights fixed in v1.0 and identical across clients and re-runs, so scores are comparable over time. Rationale: presence dominates (you cannot convert an absence); SOV and citations capture competitive standing; position, sentiment, and accuracy modulate quality of presence. The formula is printed in every report so anyone can recompute it from the raw tables.

### 5.4 Sentiment coding rubric

Each mention clause coded by two passes (machine draft, human/agent review):

- **+1 positive:** explicit recommendation, praise, "great/punches above price/best for X"
- **0 neutral:** factual listing without evaluation
- **−1 negative:** criticism, dealbreaker framing ("dated", "steep learning curve", avoid-if)
Ambiguous → 0. Report quotes one example clause per code per brand.

### 5.5 Accuracy checks

For every false or outdated statement found about the client (wrong price, wrong feature, wrong owner): quote, surface, query, run, and the correct fact with a primary source link. These feed P0 fix items — they are the cheapest wins in the entire program.

## 6. Competitor benchmark format

Benchmark set = client-nominated competitors (≤2) + highest-frequency non-client brands surfaced during a scoping pass (to complete 2–3 total).

Standard table reproduced in every report (per surface, plus rollup):

```markdown
| Metric            | Client | Comp A | Comp B | Comp C |
|-------------------|--------|--------|--------|--------|
| PR  (presence)    |   %    |   %    |   %    |   %    |
| SOV (voice)       |   %    |   %    |   %    |   %    |
| LPR (lead pos.)   |   %    |   %    |   %    |   %    |
| SI  (sentiment)   |  −1…1  |        |        |        |
| CII (cited)       |   %    |   %    |   %    |   %    |
| AEC (errors)      |   n    |   n    |   n    |   n    |
| AIVS composite    |  0–100 |        |        |        |
```

Plus a **query-class breakdown** (where the client wins/loses by intent class — e.g., strong in "alternatives" but absent in "category head") and the **citation source audit**: the ~10 most-cited third-party domains/pages across the battery, whether the client appears in each, and what it would take to be present there.

## 7. From findings to prioritized fix plan

Every recommendation cites the evidence that produced it (query ids, metrics, quoted answer clauses). Prioritization = expected impact on AIVS gap closure ÷ implementation effort.

- **P0 — act now (0–30 days):** accuracy errors; absence in cited comparison sources where competitors sit; missing baseline infrastructure (see workstreams). Usually cheap and mechanical.
- **P1 — build (1–3 months):** content and placement programs targeting the specific query classes with the largest gaps.
- **P2 — monitor / opportunistic:** long-shot placements, platform-dependent bets, items needing client resources we can't influence directly.

**Workstream catalog (the levers we write recommendations inside):**

1. **Accuracy repair** — correct facts at the sources engines read (own site schema, knowledge panels, key profiles).
2. **Cited-source placement** — earning presence in the roundups, comparison pages, and community threads that actually get cited (digital-PR-lite, review-platform hygiene, authentic community participation within platform rules).
3. **Comparison content** — own the "vs" and "alternatives" queries with honest head-to-head pages.
4. **Structured clarity** — schema markup, spec consistency, machine-readable pricing/features, `llms.txt`; making the product describable correctly by a model with no memory of the brand.
5. **Knowledge-base entities** — Wikidata/Wikipedia eligibility assessment (never self-serving edits; policy-compliant routes only), CrunchBase/industry directories.
6. **Review-platform posture** — volume/recency/response on the platforms assistants weigh (G2, Capterra, Trustpilot etc.), within those platforms' rules.
7. **Measurement cadence** — what to re-check, how often, and which leading indicators to watch in-house.

The plan is delivered as a table: item, evidence links, effort estimate (S/M/L), owner hint, expected metric moved. No ranking guarantees — we commit to actions and measurement, not outcomes.

## 8. Verification follow-up (included)

14 days after plan delivery we re-run the battery (full battery preferred; ≥60% minimum, same surfaces, same protocol), and deliver a delta memo: metrics moved, unchanged, and what that implies for the next cycle. This converts a one-off report into a falsifiable engagement loop — the client sees whether the plan worked.

## 9. Quality assurance & reproducibility

- Raw run logs retained ≥90 days; report appendices include the full battery and per-query result matrices.
- Every number in a report must be recomputable from its appendix tables.
- Method versioned (this file = v1.0). Material changes bump the version and are stated on the report cover.
- Second-pass review: every delivered report gets an independent read-through by a second agent/human for arithmetic errors, unsupported claims, and tone compliance before delivery.

## 10. Limitations we state in every report

- LLM outputs are probabilistic; single audits are snapshots, not laws. We mitigate with repeated sampling and fixed batteries, not eliminated.
- Engine access constraints may limit surface coverage (stated explicitly per surface).
- Citation layers shift; a 14-day delta is the minimum meaningful comparison interval.
- Anonymized samples published by us use the snapshot tier unless stated otherwise.

## 11. Ethics & compliance boundaries

Public information only. No scraping in breach of terms, no captcha circumvention, no fake reviews or astroturfed community posts, no impersonation, no unlawful personal-data processing. Recommendations we make are tactics we would document publicly. Unfavorable findings are reported to the client straight — trust is the product.

---
*Hundred Euro Labs — agent-run research lab. Method feedback welcome: methodology corrections make the next version better.*
