Competitors
One curated competitor list per project — grounded in real ranking data, corrected by you, and reused by Keyword Opportunities, AI Visibility and reports.
User goal
Trust the competitor list: see where each name came from, remove the wrong ones, and tell the tools which rivals actually matter.
- Tier
- Any plan (Local Rankings add-on adds the grounded source and per-location detail)
- Nav label
- Competitors
- Route
- /projects/{project}/competitors
- Gates
- —
Prerequisites
- A project (the list builds itself the first time you open the page)
- For grounded competitors: the Local Rankings add-on with at least one completed grid scan
- For AI suggestions: a generated Business Profile
QA focus
- Filters, sort and paging are server-side; typing in search never re-reads Local Rankings
- High priority sorts above everything, even a 0% coverage competitor
- Rejected competitors move to the Rejected view and can be restored
- A competitor you curated is kept and flagged when the sources stop reporting it
- Notes are account-visible and never appear in a report payload
- View-only members see no curation controls in the DOM at all
Overview
Competitors is one curated list per project. Every other tool that needs to know who you are up against reads it, so correcting it once fixes your keyword research, your AI Visibility tracking and your reports at the same time.
Where the names come from
Each row shows its source, because "why is this company in my list?" is the first question worth answering:
- Local Rankings — businesses that actually outrank you in the Google map pack. The strongest signal we have.
- Search — competitors that rank for your keywords.
- AI — suggested from your Business Profile. Useful, but unverified until you say so.
- Added by you — anything you typed in yourself.
Telling us what matters
Automated signals cannot see everything. A practitioner working from home with no advertising and barely a website can still be taking your business through word of mouth — and they will score near zero on every number we collect.
That is what priority is for:
- High — a key rival. Listed first, and used first by Keyword Opportunities, AI Visibility and reports, even if our data barely sees them. Capped, because these feed paid runs.
- Normal — tracked as usual, ranked by the data.
- Low — worth watching, not worth competing with. Stays on this page, left out of your other tools.
Add a note explaining why — how they win, who they take work from. Your team can read it; it never appears in a client report.
Competitors with no website
Some real competitors have no site. They still count for AI Visibility, which tracks brand names rather than domains. Tools that compare keywords or content need a domain, so those rows say so plainly on the page and on the run screen rather than quietly disappearing.
Keeping it honest
The list refreshes itself when your data changes, nightly as a safety net, and whenever you press Refresh. A competitor you curated is never deleted behind your back — if our sources stop reporting them, the row stays and is marked "not seen in your latest data".
Common issues & false alarms
- List looks thin → no Local Rankings add-on, so the grounded source is unavailable and only AI suggestions remain
- A competitor vanished → check the Rejected & removed view; Restore brings it back
- A High competitor is missing from a keyword run → they have no website; keyword comparison needs a domain
- Refresh says try again later → rate-limited per project, since a rebuild reads the Local Rankings tables
Interactive guide
Step of
All steps (reference)
-
Step 1. Open the competitor list
The list builds itself on your first visit. Each row shows where the name came from and how strong the evidence is.
What to do: Project sidenav → Search & Visibility → Competitors
Where: projects.competitors
Expected (pass)
- Rows show a status and a source
- Summary cards match the list
Negative cases (must fail safely)
- Brand-new project → empty state explaining the three ways competitors arrive
-
Step 2. Review what the AI suggested
Click the Needs review card to filter to unverified suggestions, then confirm the real ones and reject the rest. Rejections are per project and never affect another customer.
What to do: Click "Needs review" → Confirm / Not a competitor
Expected (pass)
- Rejected rows leave the active list
- Restore is available in the Rejected view
Negative cases (must fail safely)
- View-only member → no curation buttons rendered at all
-
Step 3. Open a competitor for detail
Click a name for provenance, coverage over time, and — with Local Rankings — which of your locations they beat you at.
What to do: Click a competitor name
Expected (pass)
- Panel opens immediately
- Location section fills in behind it
Negative cases (must fail safely)
- No Local Rankings → an upgrade note instead of the section
-
Step 4. Set priority and write down why
Mark your genuine rivals High, and note what our data cannot see. High competitors go first into Keyword Opportunities and AI Visibility.
What to do: Open a competitor → choose High / Normal / Low → Save notes
Expected (pass)
- High rows sort to the top regardless of coverage
Negative cases (must fail safely)
- Past the High cap → a message asking you to lower one first
Related guides
AI Business Profile & Keyword Assist
Let AI infer your market, audience, competitors, and priority keywords from your crawl — then reuse it in Keyword Research and AI Visibility (LLM Listening).
Market Intelligence
Discover nearby areas with Census demographics, Fit & Opportunity scoring, and a numbered map that matches the table — then send included areas to Keyword Research and AI Visibility.