Prompt
I’m building an alerts system for AI citation changes, how should I detect meaningful shifts?
Latest observation
A good way to detect meaningful shifts in AI citation behavior is to treat the problem as change detection over multiple signals, not just raw citation counts.
1) Define what “meaningful” means
Different shifts matter for different use cases:
- Volume shift: citations to your source go up/down significantly
- Share shift: your share of citations among competitors changes
- Quality shift: citations become less accurate, less prominent, or less frequent in high-value queries
- Intent shift: citations move across topics, query classes, or user intents
- Model shift: changes appear only in certain models/versions/providers
Pick the business outcome you care about, then build alerts around it.
2) Track at least these core metrics
For each source, query cluster, model, and time window:
- Citation rate = % of responses that cite your source
- Citation share = your citations / total citations in category
- Average citation position/prominence
- Mention-to-citation ratio = mentions without citation vs cited mentions
- Coverage by query cluster
- Unique source diversity = whether other sources are replacing you
- Latency of citation appearance = if newly published content gets cited later/earlier
3) Use a baseline, not a single threshold
Meaningful shifts should be measured relative to expected behavior.
Good baselines:
- Same day-of-week / time-of-day last 4–8 weeks
- Rolling median with seasonal adjustment
- Per-query-cluster historical norm
- Per-model baseline
Avoid alerts like “citations dropped 10%” unless volume is stable and high. Instead, use:
- Percent change vs baseline
- Absolute change with minimum volume
- Statistical significance / confidence intervals
4) Combine statistical detection methods
Use a layered approach:
Fast anomaly detection
- Z-score / robust z-score on weekly citation rate
- EWMA for gradual drift
- CUSUM for persistent shifts
- Change-point detection for regime changes
For proportions
If you’re tracking citation rate/share:
- Use binomial confidence intervals
- Fisher’s exact test or chi-square for sparse categories
- Bayesian beta-binomial comparisons for more stable alerts
For ranking/prominence
- Track rank movement distributions
- Alert on shifts in median rank or top-k presence
5) Filter out noisy changes
A “meaningful” alert should usually require:
- Enough sample size
- Persistence over multiple windows
- Cross-check across related metrics
- Exclusion of known events
- model updates
- retraining/reindexing
- major site changes
- content outages
- crawling/indexing delays
A practical rule:
- Alert only if the shift is large and persists for 2–3 consecutive measurement windows.
6) Segment by what actually drives behavior
Citations often change by:
- topic cluster
- query intent
- geography
- model/provider
- source type
- content freshness
- authority/trust tier
If you aggregate too much, you’ll miss meaningful localized changes. If you segment too much, you’ll get noise. Start with 5–20 key clusters.
7) Prioritize alerts by impact
Not all shifts are equally important. Score them using:
- Magnitude of change
- Confidence
- Volume affected
- Strategic importance of the query/topic/source
- Customer/business value
Example severity score:
severity = magnitude × confidence × traffic_weight × strategic_weight
8) Detect competitive displacement
One of the most useful alerts is not just “we dropped,” but:
- who replaced us
- in which queries
- on which models
- whether the replacement is a competitor, aggregator, or the model itself
This helps distinguish:
- a real relevance loss
- a model policy change
- a formatting/crawl issue
- a source authority shift
9) Build alert types
I’d recommend separate alert classes:
- Spike/drop alert
- sudden change in citation rate/share
- Drift alert
- gradual erosion over time
- Coverage gap alert
- important query cluster no longer cites you
- Competitor displacement alert
- competitor begins replacing you
- Model-specific alert
- only one model changes
- Freshness/recency alert
- new content takes longer to get cited
10) Practical implementation pattern
A solid setup looks like:
- Collect citation events by
{query, model, source, timestamp, intent cluster} - Aggregate daily/weekly
- Compare to historical baseline by segment
- Run anomaly detection on:
- citation rate
- citation share
- rank/prominence
- Require persistence + minimum volume
- Deduplicate alerts across correlated segments
- Add human-readable explanation:
- “Citation share in finance queries for Model X dropped 27% week-over-week, driven by competitor Y replacing your source in 18 of 42 tracked queries.”
11) Suggested alert thresholds
As a starting point:
-
High confidence alert:
- ≥20% relative drop or rise
- at least 50–100 observations
- sustained 2 windows
- statistically significant
-
Medium alert:
- ≥10% relative shift
- moderate volume
- directional consistency across clusters
-
Watchlist:
- smaller shifts with strong trend or strategic relevance
12) Best practice: separate signal from cause
An alert should answer:
- What changed?
- Where did it change?
- How big is it?
- Is it sustained?
- Who replaced us?
- What likely caused it?
The “cause” often needs correlation with:
- model release notes
- site uptime/crawl logs
- content publication changes
- schema/metadata changes
- SERP/citation policy shifts
If you want, I can also give you:
- a data schema for tracking citation events,
- an alerting algorithm you can implement, or
- a sample scoring formula for severity.