Verified against Claude · 2026-08-07
Turn a citation-check log into a verdict on whether your GEO fixes actually worked
Feeds in a dated log of citation checks alongside the GEO fixes you shipped, and returns a before/after verdict per fix — working, no effect yet, or inconclusive — with confounds flagged instead of crediting whichever change happened most recently.
The prompt
Ready to copy — highlighted parts are example details you can swap.
You are an AEO analyst evaluating causation over time, not running a fresh audit. Your job is to say, per fix, whether the evidence actually supports "this fix caused a citation" — and to say "not enough evidence yet" when that's the honest answer. DOMAIN: example.com GEO FIXES SHIPPED (dated): 2026-06-01: unblocked PerplexityBot in robots.txt 2026-06-15: published /llms.txt 2026-07-01: added FAQPage schema to the pricing page CITATION CHECK LOG (dated, one line per check): 2026-05-20 | Perplexity | best project management software | not cited 2026-06-25 | Perplexity | best project management software | cited - paraphrased pricing sentence 2026-07-10 | ChatGPT | best project management software | not cited OTHER CHANGES IN THE SAME WINDOW (content edits, new backlinks, PR — anything not itself a GEO fix): redesigned the pricing page layout on 2026-06-20; picked up 3 new backlinks from a roundup post in late June STEPS 1. Merge the fixes and the checks into one chronological timeline. 2. For each fix, find the nearest check before its ship date and the nearest check after it, for the same engine + query pair where possible. Classify the fix as one of: - WORKING — not cited in the nearest check before, clearly cited in a check after (allow re-crawl lag: give it at least 2-4 weeks before ruling out "no effect yet"). - ALREADY WORKING BEFORE — cited before the fix too, so this fix cannot be the cause of that citation. - NO EFFECT YET — still not cited after, and enough time has passed that re-crawl lag isn't a plausible excuse anymore. - TOO EARLY TO TELL — less time has passed since the fix than a reasonable re-crawl/reindex window. - INCONCLUSIVE — either too few check data points around this fix's ship date, or another fix shipped within roughly the same week, making individual attribution unreliable. 3. Explicitly call out any window where two or more fixes shipped close together — state plainly that a citation appearing after that window cannot be credited to one specific fix without more isolated data. 4. Note any gap in the check log itself that weakens the verdict (checks stopped right when a fix shipped, only one data point total for an engine/query pair, and so on). 5. Close with one honest sentence: which fix, if any, has evidence strong enough to act on (keep doing more of it), and which fixes still need more data before anyone should draw a conclusion. OUTPUT A table: Fix | Ship date | Nearest check before | Nearest check after | Verdict | Confidence (High/Med/Low). Then the confound notes and the closing sentence.
Customize the highlighted detailsoptional — the prompt above already works
Why this works
Different engines re-fetch and re-index on different cadences — Perplexity's live search can reflect a page change within days, Google AI Overviews grounding tracks the core Search index's own refresh cycle, and a citation sourced from a chat model's training data rather than a live browsing call won't move at all until its next knowledge cutoff — so "did the fix work" is fundamentally a time-series attribution question, not something a single before/after snapshot can answer honestly. Forcing a before-and-after check per fix, rather than one end-state citation count, is the structure that avoids the specific fallacy this category is most prone to: crediting whichever fix happened to ship most recently when a citation finally appears. The explicit confound flag for fixes shipped close together matters because that's the realistic case — teams ship several GEO changes in the same sprint — and a report that quietly picks a favorite without saying so is less useful than one that admits the data can't isolate it yet.
What you get back
| Fix | Ship date | Check before | Check after | Verdict | Confidence | |---|---|---|---|---|---| | Unblocked PerplexityBot in robots.txt | 2026-06-01 | 2026-05-20: not cited (Perplexity) | 2026-06-25: cited, paraphrased pricing line (Perplexity) | WORKING | High | | Published /llms.txt | 2026-06-15 | 2026-05-20: not cited (Perplexity) | 2026-06-25: cited (Perplexity) | INCONCLUSIVE | Low — shipped two weeks after the robots.txt fix in the same check window; can't isolate which one caused the 06-25 citation | | Added FAQPage schema to the pricing page | 2026-07-01 | 2026-06-25: not cited (ChatGPT) | 2026-07-10: not cited (ChatGPT) | TOO EARLY TO TELL | Low — only 9 days elapsed | The PerplexityBot unblock has the strongest standalone evidence. The llms.txt publish landed too close to it to credit separately — rerun the check in another 2-3 weeks isolating that variable before claiming it worked.
Verified against
Claude Claude Sonnet 5 · 2026-08-07
ChatGPT GPT-5.1 · 2026-08-05
Changelog
- 2026-08-07 — Initial publish, built as the measurement sequel to the fix-plan prompt — designed to stop teams from crediting whichever GEO change shipped most recently instead of the one the data actually supports.
Building this for real?
This is a free starting point. If you'd rather have SEO built and running for your business, that's Scult's day job.
EXPLORE SEO

