Skip to content
SearchDone

Knowledge base

How the detectors actually work.

Everything below describes code that runs today, with the real thresholds. A finding you cannot interrogate is a finding you have to take on faith, and this product is not asking for faith.

Working today

This documents the shipped analysis engine. Thresholds are the defaults and are configurable per site.

The input

Every detector runs over normalised Google Search Console data for one site over one window: a set of page-and-query aggregates with clicks, impressions, click-through rate and average position, plus optional daily figures per page where decay detection is wanted.

Rows below 50 impressions are discarded before anything else happens. Below that, click-through rate is statistically meaningless and a single click swings it wildly.

The click-through model

Two detectors need to know what a position is normally worth. The engine uses a blended desktop-and-mobile baseline anchored at integer positions, interpolating linearly in between because an average position is rarely a whole number:

PositionExpected CTR
128%
215.5%
310%
55%
101.7%
200.5%
Beyond 200.4% floor

This is deliberately a heuristic, not a claim of precision. Its job is to rank opportunities against each other consistently, not to predict absolute clicks. Your actual curve depends on your industry, your brand strength and what else is on the results page — so treat the estimates as ordering, not forecasts.

Striking distance

Flags a page whose average position is between 3 and 20 on a query with real impression volume. Upside is calculated as the additional clicks the page would earn if it reached position 3, using the curve above against its current impressions.

Position three rather than one is deliberate. Modelling every opportunity as if it will reach the top spot produces flattering numbers and a badly ordered list.

CTR underperformance

Flags a page ranking at position 10 or better whose actual click-through rate is at least 50% below what the curve expects for that position. Upside is the clicks recovered by reaching the expected rate.

These are usually the best findings on a site, because the ranking is already earned — the listing is simply failing to convert it, and a title and description rewrite is cheap and reversible.

Cannibalisation

Flags a query where two or more of your pages each hold at least 10% of that query's impressions. The impression-share floor matters: without it, every query with an incidental second URL would be reported as a conflict.

The finding lists each competing page with its clicks, impressions and position, so the decision about which page should win is made on evidence rather than instinct.

Content decay

Splits the window in half and compares them. Flags a page whose clicks fell by at least 30% from the first half to the second, provided it had at least 10 clicks in the first half so that very small pages cannot dominate the list.

Detection is not diagnosis. The engine tells you a page is declining and by how much; establishing why — a SERP change, a competitor, staleness, self-inflicted cannibalisation — is currently a human judgement.

Ranking and severity

All findings from all detectors are pooled and sorted by estimated click upside, highest first. Severity is assigned from the same number: high at 100 or more estimated clicks, medium at 25 or more, otherwise low.

This is honest but incomplete, and worth stating plainly: the current ranking uses upside alone. Confidence, effort and risk are part of the intended prioritisation model and are not yet factored in. See the product page for where that sits.

What no model decides

Whether a finding exists is determined entirely by the deterministic rules above. Language models are used to explain and narrate findings, never to produce them. Running the same data through the engine twice gives the same answer both times.

Find out what's holding your site back.

Free during early access. Connect Google Search Console and see your own list in minutes.