10 KiB
Competitor Analysis — Research Patterns
Contents
- Overview — two research contexts (self vs target)
- Self-Research (User's Company) — sub-questions, page discovery, synthesis output (precise_category, include keywords, exclusion list)
- Competitor Research — 4 Research Lanes — Marketing / External / Benchmarks / Strategic Diff
- Depth Mode Behavior — quick / deep / deeper budgets and scope
- Finding Format (per lane) — JSON shape, confidence levels
- Research Loop Rules — 7 meta-rules for the research phase
- Synthesis Instructions — turn findings into matrix cells
Overview
Two research contexts:
- Self-Research (Step 1) — Deep research on the user's company so we know what "competitor" means for this run.
- 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:
browse cloud fetch --allow-redirects "{company website}/sitemap.xml"— primary source- Scan for URLs with keywords:
pricing,customer,compare,vs,about,features,integrations - Optionally fetch
/llms.txtfor page descriptions - 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):
- Homepage
/pricing(or equivalent from sitemap)/features,/product,/platform,/solutions/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→Redditnews.ycombinator.com→HNlinkedin.com→LinkedInyoutube.com/youtu.be→YouTubeg2.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→Xspotify.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:
## 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:
{
"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 pressmedium: Inferred from third-party articles, reviews, or job postslow: Speculative / outdated sources
Research Loop Rules
- Lane 1 first — always start with the competitor's own site
- Use sitemap, not hardcoded paths —
/pricingmight be/plansor/pricing-plans - Rephrase, don't retry — if a search returns generic junk, switch keywords
- Fetch selectively — pick the 1-2 most promising URLs per query
- For LinkedIn/YouTube: search only, don't fetch — snippet is enough, avoid auth walls
- Respect step budget per depth mode
- Deduplicate mentions — same URL should only appear once in
## Mentions
Synthesis Instructions
After the research loop completes for a competitor:
- Fill frontmatter fields from Lane 1 findings
- Write body sections: Product, Pricing, Features, Positioning (all from Lane 1)
- Append
## Mentionsfrom Lane 2 classified hits - Append
## Benchmarksfrom Lane 3 (deeper only) - Append
## Comparison vs {user_company}from Lane 4 synthesis (deeper only) - Append
## Research Findingsas 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.