---
name: competitor-profiling
description: Research competitors from their URLs and produce structured, comparable profile documents backed by scraped pages, reviews, and SEO data. Use when the user says "competitor research", "competitor analysis", "profile this competitor", "competitive intelligence", or "competitor deep dive". Not for building comparison or alternative pages from profiles: use competitors. Not for sales battle cards: use a sales-enablement skill.
license: MIT
metadata:
  author: TechTide AI (Alex Cinovoj)
  provenance: rewritten from patterns in an open SaaS marketing skills pack (MIT)
  category: Marketing & Growth
---

# Competitor Profiling

Every claim in a profile traces to a source: a scraped page, a review, or a metric. Profiles follow one template so they compare side by side. Untraceable claims are opinions, label them or cut them.

## Workflow

1. **Confirm scope.** Read any product marketing context file (`.agents/product-marketing.md` or `.claude/product-marketing.md`) first. Then confirm: competitor URLs, quick scan or deep profile, focus areas. Default to quick scan unless the user asks for depth or gives 3 or fewer competitors.
   - Quick scan: homepage + pricing, domain-level SEO summary.
   - Deep profile: all key pages, review mining, full backlink and keyword data.
2. **Persist raw data first.** Save every scrape and API response to disk before synthesizing, so runs are auditable and repeatable without re-fetching:
   ```
   competitor-profiles/raw/<competitor-slug>/<YYYY-MM-DD>/scrapes/<page>.md
   competitor-profiles/raw/<competitor-slug>/<YYYY-MM-DD>/seo/<endpoint>.json
   competitor-profiles/raw/<competitor-slug>/<YYYY-MM-DD>/reviews/<source>.md
   ```
   Never overwrite a prior date's folder, snapshots enable diffing over time.
3. **Scrape key pages.** Map the site, then pull: homepage, pricing, features, about, customers, integrations, changelog. Extraction targets per page are in references/profile-template.md.
4. **Mine reviews** (deep profile). G2, Capterra, TrustRadius, Product Hunt. Extract rating, review count, praise themes, complaint themes, 3-5 representative quotes.
5. **Pull SEO data** if a data provider is available: domain rank, backlinks, referring domains, ranked keywords, top pages, estimated traffic. Pull identical metrics for every competitor or the comparison is worthless. No provider: skip and note the gap, do not estimate.
6. **Synthesize.** Build one profile per competitor using the template in references/profile-template.md. Cross-check claims: "10,000 customers" on the homepage should square with their traffic and backlink footprint. Include the generation date and a Raw Data Sources section pointing at the raw folder.
7. **Summarize across competitors.** After all profiles: `_summary.md` with a comparison table, positioning map, 3-5 strategic takeaways, and underserved gaps.

For 10+ competitors, propose profiling the top 5 first by market overlap.

## Verification

Run `ls competitor-profiles/raw/<slug>/$(date +%Y-%m-%d)/scrapes/` for each profiled competitor. Expect at least homepage.md and pricing.md. Missing files mean the profile was written from memory or assumption, re-scrape before delivering. Then pick 3 claims from any profile and trace each to a raw file. Any claim you cannot trace: label it as inference or delete it.

## Good vs Bad

**Bad:** "CompetitorX is weak on enterprise features and losing market share." No source, reads as wishful thinking, and the user will repeat it in a board deck.

**Good:** "CompetitorX: 14 G2 reviews in the last quarter mention missing SSO/SCIM (raw/competitorx/<date>/reviews/g2.md). Their changelog shows no enterprise-auth work in the pulled snapshot. Inference: enterprise readiness is a current gap."

## Footguns

- **Synthesizing before saving raw data.** The run cannot be audited or re-used, and re-scraping costs real money. Fix: raw files first, always.
- **Inconsistent metrics across competitors.** Traffic for one, backlinks for another, comparison table becomes fiction. Fix: same metric set for every competitor.
- **Stale snapshots presented as current.** Pricing pages change constantly. Fix: date every profile, flag anything that looks outdated, re-check pricing first on updates.
- **Exaggerating weaknesses.** Flattering-but-wrong profiles cause bad strategy. Fix: state competitor strengths plainly, the user needs accuracy, not comfort.

## Completion checklist

- [ ] Raw data saved under dated folders before synthesis
- [ ] Every profile uses the shared template with generation date
- [ ] Identical metric set across all competitors
- [ ] 3-claim trace test passed
- [ ] Cross-competitor summary delivered

Any box unchecked: not done. Fix or say so.
