Projects
Opportunities and stages
The four project stages, the six opportunity families and their thresholds, the foundation flag, and how a finding becomes a task.
Audit lists everything that is true about a site. Opportunities answers the next question: of everything that is true, what should be worked on now, and what is it worth?
Every project is placed in one of four stages, and each stage carries a short playbook. Under the playbook sit six detector families that turn stored Search Console, crawl, and link evidence into findings, and each finding becomes a task when it is worth working.
The four stages
The stage is derived from evidence after every sync, in order. A site is only ready for the next kind of work once the previous kind has stopped holding it back.
- Foundation — a data source is not connected, no page has earned a search impression yet, a critical issue blocks crawling or indexing, or three or more foundation issues are open. Nothing else pays off until these are fixed.
- Authority — the pages are sound but the domain sits below the middle of its own competitor set on referring domains or domain rank. Ranking work is capped until the link profile catches up.
- Growth — the site wins page-one queries and has at least as many more sitting in striking distance. This is where ranking work compounds fastest.
- Established — no stage-level blocker. Work the opportunity backlog in priority order.
The stage always shows the numbers behind it: "12 referring domains against a competitor median of 48", "3 critical issues block crawling or indexing".
Pinning a stage. The derived stage can be overridden per project. The pinned stage drives the playbook, and the derived stage stays visible beside it so the disagreement is never hidden.
The six families
Each family is a detector with stable thresholds. A repeat run updates the same finding rather than creating a new one, and a finding that stops being detected resolves itself after the usual grace runs.
Content decay (opportunity)
Pages whose clicks over the last three months fell by at least 30% against both the three months before and the same three months a year earlier, from a baseline of at least 50 clicks. The year-over-year leg is what separates decay from seasonality; it is required whenever the stored 16 months of history reach that far back.
Evidence carries the baseline and current clicks, the drop, the top queries lost, and a 16-month monthly click series.
Keyword cannibalization (issue)
One non-branded query where two or more of the site's own pages each hold at least 10% of its impressions and the top two rank within 20 positions of each other. Branded queries are excluded: a brand term legitimately returns several pages at once.
Evidence carries each page's clicks, impressions, position, and impression share, the query's totals, and whether the query is the top query for every competing page.
Striking distance (opportunity)
Queries averaging position 4–15 with at least 50 impressions, grouped into one finding per page. The upside is what the same impressions would earn at position 3 on the click-through benchmark, minus what they earn now.
Click-through gap (opportunity)
Page-one queries with at least 100 impressions whose click-through rate is at least three percentage points below the benchmark for their position. The benchmark runs from 27.6% at position 1 to 2.4% at position 10 and is interpolated for fractional positions, because Search Console reports an impressions-weighted average rank rather than an integer.
One finding per page, since the title and description are edited once. Evidence carries the missed clicks and, when the page has been crawled, its title length and whether the title or meta description is missing.
Authority gap and lost links (opportunity, issue)
Authority gap opens when the site's referring domains or domain rank sit below the median of its competitor set. The median, not the leader, is the floor: being below it is a measurable deficit with a known shopping list — the top 20 domains that already link to competitors and not to this site, carried in the evidence.
Lost links opens one finding per referring domain of real standing (rank 20 or higher) that dropped its link in the last 90 days. These are usually the cheapest links to win back.
Measurement not connected (issue)
When Search Console or Google Analytics is not bound to the project, that is a finding in its own right, not an empty state buried in Settings. Search Console missing is critical: without it there are no queries, positions, or click history, and every search family stays empty.
Plain-language explanations
Every finding carries three lines written for a reader who does not speak SEO: what it is costing today, what fixing it is worth, and what to do next. The lines use the finding's own evidence numbers — "Google shows this page 2,400 times a quarter and about 1 in 100 people click" — and are refreshed whenever that evidence materially changes.
They are written by the internal analysis model in one batched pass after each detector run, and fall back to a per-family template when no model is configured or a response cannot be validated. The template is always correct; the model only makes it read better. Nothing waits on the model: a sync finishes and the explanations follow.
Explanations appear as the summary line on every Audit row, on the expanded row, on the task created from the finding, and in chat.
The foundation flag
Findings that describe the site's base — missing robots.txt or XML sitemap, noindex on a page that earns impressions, canonical problems, missing Organization schema or structured data, thin content, and an unconnected data source — are marked as foundation findings. The mark is derived after every audit run and whenever a binding changes; it is what the Foundation stage counts.
How a finding becomes a task
- A sync or audit run detects the finding and reconciles it: new findings open, repeat findings update in place, findings that stop being detected resolve after the usual consecutive misses.
- The finding is scored on impact, confidence, effort, risk, and fit with the active goal, producing its priority score.
- Choosing Create task moves the whole family into one task with every affected page attached. Later pages joining the same family join the existing task.
- A finding you do not want to act on yet can be snoozed for 7 or 30 days: it leaves the Open lens and returns on its own when the date passes. Ignore removes it until its evidence materially changes.
- Resolving the task does not erase the finding. The evidence trail stays, and the finding reopens if the problem returns.
When the numbers refresh
- Content decay, cannibalization, striking distance, and click-through gaps run at the end of every Search Console sync.
- The authority families run at the end of every link sync.
- The foundation rollup and the measurement family run at the end of every audit and whenever an integration binding changes.
At the end of every audit run, the open-issue counts per department and severity are stored as one history point, so the Audit page can show whether the site is getting better over the last runs.
Everything above is read from stored evidence. Opening the page never starts a crawl and never spends provider credit.
In chat
Ask "what should we work on next" or "where are the quick wins" and the assistant reads the same model: the stage and its reasons, the playbook, and the families with the clicks at stake. Ask for one family by name to get its actual rows with pages, queries, and numbers.
