Recommendations Engine
After every audit, a fixed set of rules reads the results and writes recommendations: what to change, where, why, and how much work it is. The engine is deterministic and makes no model calls, so the same audit always produces the same list. Recommendations are on every plan; the step-by-step "How to fix" guide on each card is on Starter ($49/mo) and above.
Pipeline
- Every rule runs against the audit: answers, scores, accuracy flags, citations, the crawler access check, and Google data where the plan includes it.
- Duplicates are removed by normalised title.
- Each category keeps at most 2 items, or 5 when they are critical or high priority.
- Items are sorted by priority and the top 15 are kept.
- An item whose title matches a recommendation still open from an earlier audit of the brand is dropped, so open work is not repeated.
Fields
| Field | Values |
|---|---|
category | visibility_gap, accuracy, platform_specific, competitor, content_structure, schema, freshness, eeat, quick_win |
priority | critical, high, medium, low |
effort | low ("~30 min"), medium ("1-2 hours"), high ("3+ hours") |
title, action, why | Text. action is the fix; why is what the audit found. |
target_url | The page the fix applies to, when known. |
completed, completed_at | Done state. There is no dismissed state. |
Category labels on the cards: Visibility Gap, Accuracy, Platform, Competitor, Content Structure, Schema Parity, Freshness, Corroboration (eeat) and Quick Win.
Rules
| Rule | Fires when | Category | Priority |
|---|---|---|---|
| Crawler access | A retrieval crawler is blocked by robots.txt; robots.txt itself errors; a firewall blocks a crawler robots.txt allows; a page is suppressed (noindex, nosnippet); training-only crawlers are blocked. | visibility_gap, platform_specific, content_structure | critical to low |
| Visibility gap | No platform named the brand for a prompt; some did and some did not; the overall score is very low; every query errored. | visibility_gap | critical, high |
| Accuracy fix | An answer contradicts a brand fact. Wrong prices and contradicted claims rank highest; a claim no fact covers is a low-priority prompt to add that fact. | accuracy | critical to low |
| Quotability | Platforms with retrieval name the brand but cite other sites for its facts. | content_structure | high |
| Off-site mentions | Answers cite third-party pages for the brand's prompts and never the brand's own domain. | competitor | high |
| Retrieval gap | A platform without retrieval names the brand, but platforms with retrieval do not, for the same prompt. The action is to check rendering and crawler access. | content_structure | high |
| Platform-specific | A platform scored 0, or far below the overall score. A brand founded after a model's training cutoff is told so instead. | platform_specific | high to low |
| Competitor gap | The first tracked competitor is named in at least 20 points more of the answers than the brand, appears on prompts no answer names the brand for, or is named in at least 30 points more of one platform's answers. Both sides are mention rates over the same answers. | competitor | critical to medium |
| Estimated demand | A prompt our wording heuristic rates high or medium on estimated demand has low or no visibility; a comparison prompt has under half visibility. The estimate is read from the prompt's wording, not measured, and fixes label it "Estimated demand". | visibility_gap, quick_win, content_structure | critical to medium |
| Topic clusters | Phrases shared by at least two prompts: confirm one page per topic. Candidate pages come from the prompts no answer names the brand for. | content_structure | medium |
| Quick win | Mentions are mostly single, passing ones; the overall score is low (suggests one page of checkable company facts). | quick_win | high, medium |
| Schema parity | A JSON-LD block does not parse; a fact in the markup is missing from visible text. No markup at all is reported as optional, not a gap. | schema | medium, low |
| llms.txt | The site has no /llms.txt. Reported as optional documentation for AI agents, at low priority. | content_structure | low |
| Contact and authorship | The homepage links to no About or Contact page; an article page has no named author. | content_structure | low |
| Search data | Needs Google data (Starter+ for positions, Growth+ for backlinks): ranks on Google but not in answers; in answers but not on Google; visible nowhere; broken backlinks; a backlink estimate shown for reference. A Google lookup that failed is left out, not read as "not ranking". | visibility_gap, quick_win, competitor | high to low |
| Freshness | An answer repeats a fact that is out of date, such as a former owner or a former chief executive, as the accuracy check reads it. | freshness | medium |
What the engine will not tell you
Structured data, a "domain authority" figure and author bylines are not AI ranking levers, and no rule presents them as one. Google states that no special schema is needed for its AI features, and a matched-control test found AI Overview citations fell 4.6% after schema was added (Ahrefs, 1,885 pages, 2026-05-11). Schema items check that markup agrees with the page; the backlink item is labelled a third-party estimate.
The levers with documented mechanisms are access-level: crawler permission, firewall reachability, server-rendered facts and snippet controls. Those rules carry the highest priorities.
Marking work done
Each card has a round check button that sets completed. Agent V can also mark an item done, after you confirm. Completed items stay listed under the Done filter.
Too many fixes to choose from? Don't know which fix to do first gives an order of work.