# Where competitors get cited and you do not

> Where competitors get cited and you don't. One domain in, ranked list out.

Loop: `citation-gap`
Category: AI visibility
Autonomy: auto
License: MIT
Source: https://vibemarketers.ai/templates/citation-gap

## Not yet run by the lab that published it

This loop is written and ready to run. VibeMarketers has not run it.

This lab has no citation engine configured. Ahrefs was cut on 2026-09-17 and Perplexity Sonar by decision, so running it here would mean inventing citation data.

It carries no receipt. Every loop at https://vibemarketers.ai/loops has run on that
site and published what it found, including the unflattering parts. This has not, so
judge it on the prompts below rather than on anyone's word.

## What you need

An AI answer engine you can query programmatically and read citations from, plus a frozen query set and a named competitor list.

You cannot fix citation gaps you cannot see. This loop reads a fixed set of queries on
an answer engine, records which domains get cited in each answer, and ranks the queries
where a competitor appears and you do not.

**Use it when** you want to know which questions your market asks AI where someone else
is the answer.

**You need** an engine you can query programmatically and read citations from, a query
set you have frozen, and a list of competitors by domain.

**You get** a ranked list: the queries you lose, who wins them, and the raw response per
query so anyone can check the ranking.

**The gate** is nothing, because it publishes nothing. It reports.

## Freeze the query set first

This matters more than the loop. Write the query set in four buckets before you build
or change any page, and freeze it with a version and a date. Enough queries per bucket
that one odd answer does not move the result:

- **Brand:** your company name, your product name, name plus a qualifier
- **Problem:** what a buyer types when they have the problem and do not know you exist
- **Comparison:** you versus a competitor, and category-versus-category
- **Category:** the definitional questions your category owns

Freeze it because a query set edited after you build pages is a set written to the
pages. That makes any improvement unfalsifiable, which is the most common way this
measurement goes wrong.

## Goal prompt

```
Read <query-set-file> and <competitor-list>. For every query in the set, send
it to <engine> and store the complete raw response, including every citation
and the date it was collected.

For each query, record: which domains were cited, in what order, whether
<your-domain> appears at all, and whether any domain in <competitor-list>
appears.

Rank the queries where a competitor is cited and <your-domain> is not. Rank by
how many competitors appear, then by the position of the first competitor
citation.

Write the result to <output-file> with the raw response stored per query, the
engine name, and the collection date. Never substitute a ranking, a traffic
estimate, or any other metric for a citation. If the engine returns an error
for a query, record the error against that query rather than skipping it.
```

## Verifier prompt

```
Open the output file and the raw responses.

FAIL if any ranked query has no raw response stored.
FAIL if the ranking cannot be reproduced from the stored responses alone.
FAIL if any citation count has no collection date or no engine name.
FAIL if any query in the input set is missing from the output without a
recorded error.
FAIL if any metric other than a citation appears as evidence of a gap.
FAIL if the query set file changed during the run.

Otherwise PASS. Print the verdict and, on FAIL, the query and the reason.
```

## Stopping condition

> Every query in the frozen set has either a stored response or a recorded error, the
> ranking is derived from those responses alone, and the verifier printed PASS.

## What it may and may not do

**May:** read the query set, query the engine, store raw responses, write a ranked
report.

**May not:** edit the query set, substitute a proxy metric for a citation, publish
anything, or report a gap for a query it could not actually run.

## What this will not tell you

A citation gap is not a traffic gap and not a revenue gap. It tells you an engine cited
someone else for a question on one day. Answer engines vary run to run and reindex
without warning, so a single reading is a snapshot rather than a measurement.

Read the same set on a schedule and compare against your own earlier readings, not
against a competitor's claims. Two readings a week apart on different days will differ
for reasons that have nothing to do with anything you did.

---

MIT licensed. Copy it, change it, run it. No attribution required.
Retrieved from https://vibemarketers.ai/templates/citation-gap.md
