# Competitor Analysis — Research Patterns ## Contents - [Overview](#overview) — two research contexts (self vs target) - [Self-Research (User's Company)](#self-research-users-company) — sub-questions, page discovery, synthesis output (precise_category, include keywords, exclusion list) - [Competitor Research — 4 Research Lanes](#competitor-research--4-research-lanes) — Marketing / External / Benchmarks / Strategic Diff - [Depth Mode Behavior](#depth-mode-behavior) — quick / deep / deeper budgets and scope - [Finding Format (per lane)](#finding-format-per-lane) — JSON shape, confidence levels - [Research Loop Rules](#research-loop-rules) — 7 meta-rules for the research phase - [Synthesis Instructions](#synthesis-instructions) — turn findings into matrix cells ## Overview Two research contexts: 1. **Self-Research** (Step 1) — Deep research on the user's company so we know what "competitor" means for this run. 2. **Competitor Research** (Step 4) — For each discovered/seeded competitor, run the 4-lane enrichment below. Both use the Plan → Research → Synthesize pattern. Self-research is identical in shape to the one in `company-research`, so profiles can be reused across skills. ## Self-Research (User's Company) ### Sub-Questions - "What does {company} sell and what specific problem does it solve?" - "Who are {company}'s existing customers? What industries, company sizes, use cases?" - "Who are {company}'s known competitors? What category do they compete in?" - "What pricing model does {company} use?" - "What features, integrations, and differentiators does {company}'s marketing emphasize?" ### Page Discovery Dynamic via sitemap — do NOT hardcode `/about` or `/pricing`: 1. `browse cloud fetch --allow-redirects "{company website}/sitemap.xml"` — primary source 2. Scan for URLs with keywords: `pricing`, `customer`, `compare`, `vs`, `about`, `features`, `integrations` 3. Optionally fetch `/llms.txt` for page descriptions 4. Pick 3-5 most relevant URLs ### External Research - `browse cloud search "{company} alternatives competitors vs"` - `browse cloud search "{company} review comparison"` - Fetch 1-2 most informative third-party pages ### Synthesis Output Produce a profile with: - **Company**, **Product**, **Existing Customers**, **Competitors** (seed list), **Use Cases** - **precise_category** — one clear sentence that describes what category this product competes in. Avoid fuzzy words like "tools" or "platform". Good: "AI web search API for agents with neural + keyword retrieval". Bad: "search tools". This becomes the anchor for discovery queries and the gate. - **category_include_keywords** — 8-15 phrases that a *direct competitor's* marketing would very likely contain (title or hero). Include semantic variants. e.g. for Exa: `web search api`, `search api`, `neural search`, `semantic search`, `retrieval api`, `search for ai agents`, `search for llms`, `serp api`, `embeddings search`, `live crawling`, `answer api`, `research api`. - **exclusion_list** — phrases that indicate a *different* category, used by the gate to reject false positives. e.g. `vector database`, `enterprise search appliance`, `site search widget`, `observability`, `analytics platform`, `data warehouse`, `scraping platform` (full ETL/scraping suites, not retrieval APIs), `internal knowledge base`. The same `profiles/{company-slug}.json` shape used by `company-research`, extended with the three new fields. The `competitors` array becomes the seed list and the first inputs to the comparison-graph expansion in Step 3. --- ## Competitor Research — 4 Research Lanes For each competitor, run these four lanes (depth-gated): ### Lane 1 — Marketing Surface (ALL depth modes) Goal: extract what the competitor says about themselves from their own site. **Sub-questions**: - "What does {competitor} sell, who is it for, and how is it positioned?" - "What are {competitor}'s pricing tiers and pricing model?" - "What key features, integrations, and platforms does {competitor} list?" **Pages to fetch** (via sitemap discovery — do NOT hardcode): 1. Homepage 2. `/pricing` (or equivalent from sitemap) 3. `/features`, `/product`, `/platform`, `/solutions` 4. `/integrations`, `/customers`, `/case-studies` **Extract into frontmatter fields**: `tagline`, `positioning`, `product_description`, `target_customer`, `pricing_model`, `pricing_tiers`, `key_features`, `integrations`. ### Lane 2 — External Signal (deep + deeper) Goal: what the rest of the internet says about them. **Sub-questions**: - "What third-party comparison pages mention {competitor}?" - "What do users say on Reddit, HN, G2, Capterra?" - "What recent news, launches, or announcements?" - "Who is talking about them on LinkedIn or YouTube?" **Search queries**: ``` "{competitor} vs" "{competitor} alternatives" "{competitor} review" "{competitor} G2" / "{competitor} Capterra" "site:reddit.com {competitor}" "site:news.ycombinator.com {competitor}" "site:linkedin.com/posts {competitor}" "site:youtube.com {competitor}" "{competitor} launch 2025 OR 2026" "{competitor} funding announcement" ``` **Extraction rule**: From search results, harvest each hit as a `Mentions` entry. Classify source type from the URL: - `reddit.com` → `Reddit` - `news.ycombinator.com` → `HN` - `linkedin.com` → `LinkedIn` - `youtube.com` / `youtu.be` → `YouTube` - `g2.com` / `capterra.com` / `trustradius.com` → `Review` - `*vs*` in path or title → `Comparison` - news domains (techcrunch, theverge, venturebeat, forbes, businesswire, globenewswire) → `News` - `twitter.com` / `x.com` → `X` - `spotify.com/episode` / transistor/simplecast → `Podcast` For LinkedIn and YouTube, the snippet + URL from `browse cloud search` is enough. Do NOT try to deep-fetch individual LinkedIn posts (auth walls) — list them with title/snippet. ### Lane 3 — Public Benchmarks (deeper only) Goal: find third-party benchmarks that measured this competitor's product. **Sub-questions**: - "Has {competitor} been included in any public benchmark?" - "Are there GitHub repos, PRs, or blog posts comparing {competitor} head-to-head on a measured axis (speed, accuracy, cost, pass rate)?" **Search queries**: ``` "{competitor} benchmark" "{competitor} performance test" "site:github.com {competitor} benchmark" "site:github.com {competitor} vs" "{competitor} vs {seed_competitor} benchmark" # pairwise, use another known competitor as the seed "{category} benchmark {competitor}" # e.g. "web search api benchmark {competitor}" ``` **Extraction**: Add each hit to `Benchmarks` section with: title, source, URL, key finding (one line). Also mirror into `Mentions` with type `Benchmark`. **Known benchmark repos to check directly** (if domain is on-topic): - Public retrieval-quality leaderboards (e.g. BEIR / MTEB-style repos) when a vendor publishes scores - Category-specific benchmark repos discovered via the first search wave ### Lane 4 — Strategic Diff vs User's Company (deeper only) Goal: explicitly compare this competitor to the user's company. **Inputs**: `{user_company_profile}` (from Step 1) — specifically `product`, `use_cases`, `key_features` if available. **Sub-questions**: - "What features does {competitor} have that {user_company} does not?" - "What features does {user_company} have that {competitor} does not?" - "Who does {competitor} serve that {user_company} does not (and vice versa)?" - "Where does each one win on the marketing surface (price, feature depth, DX, ecosystem)?" **No new fetches required** for this lane — it's a synthesis step over Lane 1 + 2 + 3 findings plus the user's profile. Write as: ```markdown ## Comparison vs {user_company} - **Overlaps**: ... - **Gaps**: ... - **Where they win**: ... - **Where you win**: ... ``` Also populate the `strategic_diff` frontmatter field with a one-line summary for the overview table. --- ## Depth Mode Behavior ### Quick Mode (~lots of competitors, cheap) - **Lanes**: 1 only - **Budget**: 2-3 tool calls per competitor (homepage + pricing page) - **Fields populated**: tagline, product_description, pricing_tiers, key_features - **Mentions / Benchmarks / Comparison**: skipped ### Deep Mode (balanced, default) - **Lanes**: 1 + 2 - **Budget**: 5-8 tool calls per competitor - **Everything in quick** + 5-10 mentions across source types ### Deeper Mode (full intel) - **Lanes**: 1 + 2 + 3 + 4 - **Budget**: 10-15 tool calls per competitor - **Everything in deep** + benchmarks section + strategic diff section --- ## Finding Format (per lane) Every finding is a factual statement tied to a source: ```json { "lane": "marketing | external | benchmark | strategic", "fact": "Rival Co charges $99/mo for 10K search requests", "sourceUrl": "https://rivalco.com/pricing", "confidence": "high" } ``` **Confidence**: - `high`: Directly stated on the competitor's own website or official press - `medium`: Inferred from third-party articles, reviews, or job posts - `low`: Speculative / outdated sources ## Research Loop Rules 1. **Lane 1 first** — always start with the competitor's own site 2. **Use sitemap, not hardcoded paths** — `/pricing` might be `/plans` or `/pricing-plans` 3. **Rephrase, don't retry** — if a search returns generic junk, switch keywords 4. **Fetch selectively** — pick the 1-2 most promising URLs per query 5. **For LinkedIn/YouTube: search only, don't fetch** — snippet is enough, avoid auth walls 6. **Respect step budget** per depth mode 7. **Deduplicate mentions** — same URL should only appear once in `## Mentions` ## Synthesis Instructions After the research loop completes for a competitor: 1. Fill frontmatter fields from Lane 1 findings 2. Write body sections: Product, Pricing, Features, Positioning (all from Lane 1) 3. Append `## Mentions` from Lane 2 classified hits 4. Append `## Benchmarks` from Lane 3 (deeper only) 5. Append `## Comparison vs {user_company}` from Lane 4 synthesis (deeper only) 6. Append `## Research Findings` as a raw-findings appendix with confidence tags No ICP score. No threat score. Pure intel. If a field has no supporting findings, leave it empty rather than guessing.