TL;DR: Pick twenty questions your buyers actually ask, run each several times, and record whether you were named, where in the answer, how you were described, and which sources the model cited. Running each prompt once is the mistake: the same prompt returns different answers on different runs, so a single result is noise.
Step 1: build the prompt list from real signal
Do not brainstorm. Start from things you can verify:
- Search Console queries you already get impressions for. Real demand, in your buyers' words.
- Head terms for your category from the SERP.
Then expand each across the patterns buyers actually use:
| Pattern | Example | Intent |
|---|---|---|
| Comparison | "Acme vs Bonsai" | Highest |
| Alternative | "alternatives to Bonsai" | Very high |
| Alternative (defensive) | "alternatives to Acme" | Your churning users |
| Category | "best invoicing tool for freelancers" | High |
| Pricing | "cheapest invoicing software" | High |
| Review | "is Acme worth it" | Medium |
| Use case | "invoicing tool for design studios" | Medium |
| Objection | "problems with invoicing software" | Lower |
Twenty prompts is enough to start. Include your own alternatives query, being absent from it is the most expensive gap there is.
Step 2: run each prompt more than once
This is the part people skip. Ask ChatGPT the same question five times and you will often get four different lists. SparkToro documented this variability publicly.
The consequence: a tool showing one number from one run is showing you sampling error dressed as a metric. You need a rolling mean and a visible confidence band, "34.2, ± 1.4 across 5 runs", otherwise you cannot tell a real improvement from a noisy Tuesday.
Step 3: record more than presence
For each run, capture:
- Were you named?
- Where in the list? Third beats seventh.
- How were you described? Being named badly is worse than being absent, and almost nobody reports sentiment.
- Did anyone get a clickable link? An attached link is a click you won or lost, stronger signal than a citation.
- Which sources were cited? This is the most actionable field. It tells you which specific pages decide your answers.
- Did a search actually fire? If not, no article will ever fix that prompt.
Step 4: use logged-out results
Measure the logged-out surface. No memory, no custom instructions, no personalisation, which means results are comparable across time and between brands. It is what a new visitor sees, which is the population you care about.
Be precise about this in your own reporting: "what a new visitor sees," never "what every user sees."
Step 5: watch for model swaps
When OpenAI changes the underlying model, scores shift for reasons that have nothing to do with you. Record which model answered each run so a platform change is annotated rather than mistaken for decay.
First-person view
If you do this manually, do it once properly and then stop. The manual version is valuable for the shock, reading the actual answer where three competitors are named and you are not is more motivating than any dashboard. But five runs across twenty prompts weekly is a hundred manual queries a week, and nobody sustains that.
Key takeaways
| Step | Why |
|---|---|
| Seed from real queries | Invented prompts measure nothing |
| Multiple runs per prompt | Single runs are noise |
| Record citations | Tells you which pages to get onto |
| Record whether search fired | Decides whether content can work |
| Record the model | Explains shifts that aren't yours |
FAQ
How often should I measure?
Weekly for the full set, daily for your top five. More often than that is cost with no signal.
Do I need to track competitors?
Yes, your score is meaningless without knowing who is winning the answers you lose.
Can I automate this myself?
Yes, with scraping infrastructure and a parser. Budget more time for the parsing than the fetching.