218 lines
10 KiB
Markdown
218 lines
10 KiB
Markdown
# 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.
|