---
name: competitive-research
description: Scrape target + competitors for features, pricing, and market positioning. Produce structured comparison reports with pricing tables, feature matrices, and strategic recommendations.
---

# Competitive Research & Analysis

Systematic scraping and comparison of a target company against its competitors — features, pricing, positioning — producing a structured markdown report.

## Triggers

- "Scrape X and competitors for features/pricing/market positioning"
- "Build a competitive comparison report for Y"
- "Analyze competitors in the Z space"
- "Produce a market landscape / competitive analysis"
- Any request to research a company + N named competitors and output a report

## Workflow

### Phase 1: Parallel Scrape (web_extract)

1. Build the URL list: target homepage + ~8 competitor homepages.
2. Scrape all homepages in a single `web_extract` call (up to 5 URLs per call).
3. In parallel, scrape pricing/product pages for target + competitors.
4. Look for: `/pricing/`, `/features/`, `/plans/`, `/business/`, `/plansandpricing.html`.

**Key pitfall:** Many enterprise VoIP/SaaS sites render pricing tables via JavaScript. `web_extract` will return page chrome but not the actual dollar figures. When you see truncated pricing pages with no numbers, move to Phase 2.

### Phase 2: Fill JS-Rendered Gaps (web_search)

For each competitor where pricing didn't come through:
1. `web_search` for `"[Company] pricing plans per user 2025 2026"`
2. Use third-party aggregator pages (Nextiva blog pricing comparisons, Forbes Advisor, G2, Quo, Cloudtalk, etc.) — they extract and publish competitors' prices.
3. Cross-reference 2-3 sources per competitor for accuracy.

### Phase 3: Check Target Site Quality

Before investing in a full report, verify the target site is real:
- Browse the target with `web_extract` on multiple subpages (`/features/`, `/pricing/`, `/about/`).
- If pages return 404s or placeholder/Lorem Ipsum content, flag this prominently in the report. Don't fabricate data — report the actual state.

### Phase 4: Compile the Report

Write the report to a markdown file. Use this structure:

1. **Target Current State Assessment** — honest assessment of what the target actually has (or doesn't have)
2. **Side-by-Side Pricing Table** — all providers, entry/mid/top/enterprise plans, target audience
3. **Pricing Visualization** — ASCII chart showing where each competitor sits on price spectrum
4. **Feature Comparison Matrix** — 15-20 features across all providers, with indicators for included/tiered/add-on/missing
5. **Market Positioning Map** — ASCII chart + positioning summary table (Primary Positioning + Differentiator)
6. **Competitor Deep Dives** — per competitor: tagline, pricing tiers, key features, notable clients, target market, compliance, strengths, weaknesses
7. **Key Findings & Strategic Recommendations** — where the target could position, recommended pricing, MVP feature set, competitive threats, urgent actions

### Phase 5: Flag Report as Subagent Output

The report is a synthesis of scraped + searched data. Label it clearly:

```
*Report generated by Hermes Agent subagent. All data current as of [DATE].*
```

No fabricated pricing, no invented testimonials. When data is unavailable, say so.

## Pitfalls

- **JS-rendered pricing:** RingCentral, Dialpad, 8x8, and similar use React/Next.js with pricing behind JS. Don't waste time with the browser tool for these — go straight to `web_search` for third-party pricing writeups.
- **Stub/placeholder sites:** If the target has 404s, Lorem Ipsum, or stock WordPress themes, report it honestly. Don't pretend it's a real service.
- **Browser tool failures:** Chrome may fail to start in headless environments (missing dbus, missing display). Fall back to `web_extract` + `web_search`. Don't retry the browser.
- **Parallel scraping limits:** `web_extract` takes max 5 URLs per call. Batch independent URLs together. When pricing pages depend on homepage context, scrape homepages first, then pricing pages.
- **Source attribution:** When using third-party pricing data (e.g., Nextiva's blog about RingCentral pricing), cite it as "per third-party analysis" rather than presenting it as primary source data.

## Template

See `templates/competitor-report.md` for the full report skeleton.
