Citation corpus

One corpus, built from every check, instead of a snapshot

15

auto-generated buyer questions per product, each checked on a schedule

maxAutoPrompts in geo/prompts.go, sized to fit the smallest plan's daily check budget

One visibility check is a snapshot, and snapshots in this category are noisy. Ask ChatGPT the same buying question twice in a week and you can get two different source lists. So the useful object is not a single answer, it is the corpus: every page the engines have retrieved for your questions, accumulated over runs, with the date each one was last cited.

That corpus is the thing the rest of the product reads from. The domain leaderboard, the rank overlap check, the writing plan and the Opportunity Report are all second readings of the same rows. No extra crawl, no second bill.

Where it lives: Sources in the dashboard, and underneath Citations, Analytics, and the writing plan.

What it does

Accumulates instead of replacing

Each check adds its retrieved URLs to the corpus rather than overwriting it. A page cited in three different weeks for two different questions is one row with a citation count, not three unrelated results.

Keeps the question attached

Every URL carries the question it was cited for and the engine that cited it. The same page can be the top source for one buying question and absent from the next, which is the difference between a category authority and a lucky match.

Resets when you reposition

Change your product's description, keywords, or competitor set and the baseline is invalidated: the prompt library is regenerated and the mirror ignores checks from before the change. A repositioned product showing the names its old positioning collected is worse than showing nothing.

How it works

  • Questions are generated once from your product context, then edited or added to by hand. The cap is fifteen so a product on the cheapest plan can actually spend the checks it was sold.
  • The library rotates by staleness, so the question checked longest ago goes next rather than the first one in the list.
  • Ungrounded answers are stored but excluded from the citation rate. An engine answering from its weights has no way to cite anyone, and counting that as a miss would score you down for a question we never really asked.
  • Each stored row records whether the engine searched the web, what it said about you, its sentiment, and the URLs it returned.

What it does not do

  • The corpus only covers questions in your library. A buying question nobody thought to add is invisible to it.
  • Engines differ. A page in your Perplexity corpus may never appear in ChatGPT's, and on Basic only Perplexity is checked.
  • It is not a web crawl. We see what the engines chose to retrieve, which is a much smaller and more opinionated set than "pages about your category".

Which plans have it

AI Visibility checks. Every plan builds a corpus. The check budget decides how fast it fills.

AI Visibility checks by plan
BasicGrowthAgency
450/mo (15/day)1,200/mo (40/day)3,600/mo (120/day)

Read the full plan comparison.

Live demo

See Source corpus on a real account, with no signup and nothing to configure.

Open the demo

Frequently asked questions

How many questions should I track?

Fifteen is the automatic ceiling and most products do not need all of them. Questions with real buying intent ("best X for Y", "alternatives to Z") produce a corpus you can act on; brand-name questions mostly confirm what you already know.

How often is it refreshed?

Checks run against your daily budget and rotate by staleness. Basic is fifteen checks a day, which covers a fifteen-question library once a day across one engine.

What happens to the old corpus when I change my positioning?

It stays stored but the baseline is reset, so the first-run mirror and the freshness reads ignore anything from before the change. New checks rebuild against the new positioning.

Related features

Every feature we publish

Run it on your own product

Start with the free visibility check to see whether the engines name you today, then run the scan that shows which pages they used instead.