How MentionFlow handles missing data
The rule behind every em-dash. Null is not zero, unscored is not neutral, and a sample is always labelled.
MentionFlow shows you an honest gap before it shows you a made-up number. That one rule shapes the whole interface.
Null is not zero
When a metric has an empty denominator (no runs yet, no citations, no scored mentions), the metric is null. Null renders as an em-dash (—), not 0.
A 0 is always a measured zero. It means "we looked and the answer was zero". An em-dash means "we don't have enough to say yet". Mix the two up and a blank week could pass for a bad week.
Em-dashes turn up in specific places, all on purpose:
- Citation share: until at least one run in the window carried citations.
- Sentiment: until at least one scored brand mention exists in the window. ("— means no scored brand mention yet," not "neutral".)
- Average position: until your brand has appeared at least once.
- Estimated impressions: when a prompt has no measurable demand signal.
- Content coverage: until enough prompts have run. Coverage counts only prompts with at least three runs.
- Shopping average slot: on days a product's carousel appeared but your product wasn't in it. The share is an honest
0, but the average slot stays—, because there is no average of nothing. - Shopping merchant / price: when the engine's payload carried none. A merchant name is only ever read off the product link, never guessed.
Unscored is not neutral
Sentiment has three real values, positive, neutral and negative, plus a fourth state: unscored. When the language-model extraction pass fails for a run, its mentions are marked unscored instead of folded into "neutral". Receipts show this as its own badge. A neutral mention is a judgement the system made. An unscored mention is one it declined to make.
Deltas never lie about direction or magnitude
A period-over-period change is null, shown as "new", when there is no prior window, or when the previous value was zero. MentionFlow never prints an infinite or invented percentage to fill the cell. Deltas are computed on unrounded inputs, so a rounded display can't create a change that isn't there.
Chart markers show only changes we can date
The Overview trend chart flags the days your prompt set changed, so a visibility move caused by adding prompts isn't misread as real movement. Only prompt additions get a marker, because those carry a real creation date. Edits, pauses, resumes, and archives aren't timestamped, so they get no marker rather than an invented date. An unmarked day means "no prompt-set change we can date happened here", never a promise that nothing changed at all.
Confidence is labelled, not hidden
- A metric built from fewer than five runs carries a low-confidence flag. You still see the number, but you are told not to over-read it. Day-to-day movement inside a window is expected noise. Judge trends, not ticks.
- Volume estimates are approximate bands, never exact counts. AI-search demand cannot be measured to the unit, and a precise-looking number would imply otherwise.
Demand confidence tiers
Where MentionFlow estimates how often a prompt is asked, it labels how it knows:
- measured: a query behind this prompt appears in your own Google Search Console data.
- anchored: a search an assistant actually ran for this prompt matched real Google demand.
- modeled: only the prompt's head keyword matched.
- —: no measurable demand signal yet. Which is information, not zero.
The Methodology page has the full derivation.
Samples are always labelled
When a screen shows data that is not yours, it says so:
- Preview — sample data. Gated features, like agent analytics before you're on a qualifying plan, render a dimmed, non-interactive mock behind this badge.
- Demo data. Signed-out or empty workspaces get a fixed demo dataset, badged on every page. Demo boards say that changes aren't saved.
- Preview before import. CSV and feed imports show you a parsed preview and write nothing until you confirm. The preview is client-side, and the import boundary re-checks on the server, because "nothing is imported until you confirm" has to be enforced, not promised.
Denominators differ on purpose — and we name them
A few surfaces use different denominators. These are design decisions, not bugs:
- Every headline metric, Share of Voice included, blends only the eight search-grounded engines. So a knowledge-only engine's missing citations, or its memory-only mentions, can't distort the blended numbers. DeepSeek and Mistral still appear in per-engine views. Filter to a single engine and you see that engine unblended. The same scope feeds the dashboard and the API, so the two never disagree.
- The collection config's numbers use that same blended scope over one config's runs. That covers the monitors CSV export and the Monitor scope chip a legacy multi-config workspace sees on the brand pages. So a config's number can never disagree with the headline for the same runs. Per-engine views still show every engine collected, knowledge-only ones included, because a per-engine view honestly shows that engine.
- On a prompt's detail page, headline visibility uses a fixed 7-day window and the per-engine sentiment strip uses 28 days. The prompt list follows your selected range. These fixed windows keep the detail view steady.
Prose says less, never something vaguer
An absent number renders an em-dash and everybody understands it. An absent sentence usually gets replaced by a vaguer sentence, and a vaguer sentence is a claim nobody measured. So the same rule applies to prose: a claim whose precondition fails is dropped, not softened.
The Briefing is where you see this most. Every sentence on it is composed from measured values by a pure function. No model writes it. Each hedge names the numeric threshold it was tested against, and nothing is pinned on a cause the product cannot observe. Every claim it declined to make is listed at the foot of the page under "What this briefing does not say", beside the measured reason.
Why this matters
The whole product is an audit trail. Every metric traces back to a receipt you can open and read. Faking a zero anywhere in that chain would break the trust the receipts are meant to earn. When MentionFlow doesn't know, it says so. That is the feature.