How to read this tab
Two views of the competition, from two different free data sources - no paid API, no Ahrefs (still blocked, see below).
Ranking share-of-voice answers "for the searches DOMA already cares about, which real businesses out-rank us, and by how much" -
built from live search results, filtered to exclude generic platforms (Facebook, LinkedIn, YouTube, etc) that show up for almost any search and aren't real competitors.
New competitor content answers "what did AADOM/Dental A Team just publish" - a small, hand-picked watchlist, not auto-discovered.
Ranking share-of-voice (real businesses that out-rank DOMA on our own target searches - live snapshot, not a purchased authority score)
No ranking comparison data yet - run scripts/sync_serp_competitors.py. Note: the free DuckDuckGo-based method this uses can get temporarily rate-limited after a burst of checks; if it's been failing, wait a while and retry.
| Domain | Shows up on | Avg. position | Best position | Beats DOMA on |
Recently updated competitor content (most recently updated/published pages per competitor, by their own sitemap dates - currently AADOM and Dental A Team)
No competitor content data yet - run scripts/sync_competitors_content.py.
Competitor marketing stack (detected live from each competitor's own public homepage - same technique as a Wappalyzer-style checker)
No tech-stack data yet - run scripts/sync_competitor_intel.py.
Site activity · Wayback Machine (how often each competitor's homepage has been archived - a rough proxy for how actively they maintain it, not traffic or revenue)
No Wayback data yet - run scripts/sync_competitor_intel.py.
| Competitor | Total snapshots | Last snapshot | Last 90 days |
Ad Spy · paid ads intelligence (manually researched from Meta/Google/TikTok/LinkedIn ad libraries - no public API for any of them, see README.md "Ad Spy")
No ad intelligence logged yet.
| Competitor | Platform | Found | Format | Hook | Offer | CTA | Hypothesis |
Waiting on Ahrefs (blocked account-side, not fixable from here - see README.md "Ahrefs")
Ahrefs API access isn't working yet for this account (every request returns
Unauthorized, tested with 4 different keys, confirmed on their end). Once that's
resolved and scripts/sync_ahrefs.py runs, the two panels below will
show domain rating / organic traffic & keywords / backlinks per competitor,
and Ahrefs' own Site Audit issue list.
DOMA vs. competitors (domain rating, organic traffic & keywords, backlinks - via Ahrefs, competitors auto-discovered)
No competitor data yet.
| Domain | Domain Rating | Organic traffic | Organic keywords | Backlinks | Referring domains |
Site Audit issues (Ahrefs crawl of dentalofficemanagers.com - separate from this dashboard's own on-page audit above)
No Ahrefs Site Audit data yet.
| Issue | Severity | Affected pages | Change |
Recent posts (latest published - hover a row for more detail)
No recent-post data yet. Run scripts/sync_gsc.py and scripts/sync_ga4.py.
| Post | Published | Sessions | Clicks |
Top pages (hover a row for more detail)
Audience details (country, device, gender & age)
Visitors by country (last 180 days, independent of the range above)
| Country | Active users | Sessions |
Sessions by device (last 180 days, independent of the range above)
| Device | Active users | Sessions | Share |
Audience · gender & age (requires Google Signals - not retroactive, may take a day to populate)
No demographics yet - Google Signals was just enabled, check back in a day.
Content Suggestions
Pulls together signals already in other tabs - SEO content gaps, top-performing ebooks/posts (GA4), and best posting times (Social) - so planning what to write or promote next doesn't mean hopping between tabs.
No suggestions yet - needs at least one of Search Console, GA4, or Social data synced.
Content gap opportunities (real searches, weak current ranking - see SEO tab)
| Search query | Best-ranking page | Position | Impressions |
Top-performing ebooks (GA4 sessions)
Top-performing blog posts (GA4 sessions)
Best time to publish/post (Instagram engagement by day & time, UTC - see Social tab)
Not enough Instagram post history yet.
| Time of day | Avg. engagement | Posts |
No content scheduled yet - add one below, or use a suggestion from the Content Suggestions tab.
Suggested topics (from Content Suggestions - click to prefill the form below)