Citation excerpt search — Reports tab

Find every AI answer that mentioned a term across the last 90 days, with two-color highlighting and day/scan-run grouping.

4 min read

The search box at the top of /dashboard/reports runs full-text search across every AI answer your domains received in the last 90 days. Type a term and you immediately see every scan_result that mentioned it, grouped by day and scan run, with the matched terms highlighted in context.

What you can type

The search uses Google-style operators. Examples below use brand names from the running example (deployment platforms — Vercel, Netlify) so you can plug in your own competitors and category words:

InputWhat it does
vercelSingle word — matches any answer that contains it (in prose or in cited domains).
"fast deployment"Quoted phrase — both words must appear together.
vercel -netlifyLeading dash excludes a term — answers that mention Vercel but not Netlify.
vercel OR netlifyMatch either term.

Filters next to the search box let you narrow by engine (ChatGPT / Perplexity / Google AI Mode) and by mention status (you mentioned / you NOT mentioned). Stack them with the search query — for example, "every Perplexity answer about pricing where you weren't mentioned" is one query plus two dropdowns.

Day + scan-run grouping

Results are bucketed by day (Today, Yesterday, then date) and within each day by scan run. A "scan run" collapses every scan_result that shares trigger (manual / pulse / deep) and started within five minutes of each other into one card — so a single "Run scan" click on 15 monitored questions renders as one line, not 45.

The newest run is auto-expanded; older runs stay collapsed until you click the chevron. Each run header shows:

  • Trigger type (Manual / Daily pulse / Weekly deep) with an icon.
  • Time range (14:22 if a single moment, 14:22–14:25 if a range).
  • Match count and number of distinct queries scanned.
  • Engine pills (ChatGPT, Perplexity, Google AI) for the run.

Highlight colors

Inside an expanded scan run, each individual hit shows a snippet anchored on the first match. Click Show full answer to expand the entire response in place — and the scroll inside the answer box jumps straight to the first match, so you don't land at character 0 of a 6 000-character response.

Two colors are used:

  • Yellow for terms you searched (same convention as Cmd+F in your browser).
  • Cyan for your own brand whenever it appears in the answer.

The pair is colorblind-safe — red+green isn't, which is why we don't use it.

Citations are searchable too

A Postgres generated column expands cited_domains and competitor_mentions into the search index with . replaced by space. Searching jellyfish finds answers that only ever cited jellyfish.co in their references — same brand match the Competitor tracking page shows.

Without this expansion, search would only see the prose. URLs become hostname tokens that don't tokenize the way you'd type them.

Pagination

Initial page is 20 hits, sorted newest-first. Load 20 more appends an older page via cursor pagination — the same query runs again from the timestamp of the last hit, no client-side re-rendering of already- loaded rows.

Hard cap is 200 hits per session; past that the page asks you to narrow the search instead of letting the result list balloon. With a clean query you'll rarely hit it.

Common recipes

GoalQuery + filters
All answers naming a competitor that didn't include youvercel, mention status: NOT mentioned
Where AI used a feature word you ship"instant rollback" (or whatever your feature is)
Pricing mentions across all enginespricing
Recent answers from one engine onlyterm + Engine: Perplexity (or another)
Drill into a specific scan run's answersscroll to the day, expand the run

What it doesn't do