Skill

Competitor Analysis

Produce a fact-led competitive intel brief on one or more competitors. Combines ZoomInfo firmographics, scoops, intent, and exec data with web search for sentiment and head-to-head comparisons, anchored on your defined positioning.

Overview

Competitor Analysis produces a fact-led competitive intel brief on one or many competitors. It pulls firmographics, recent scoops, intent signals, the exec team, and a similar-companies cohort from ZoomInfo, then runs web search for G2 sentiment, head-to-head comparisons, and verification of public-facing exec data. The output leads with a side-by-side Executive Comparison across all competitors, then drops into per-competitor sections with positioning, recent moves, ICP overlap, and discovery questions.

Positioning is pulled verbatim from your GTM context. Reasons they win, reasons they lose, and named customer wins come from your defined competitive matrix, not from the skill's interpretation. The skill explicitly avoids inventing threat rankings or whitespace synthesis. Those calls need win-rate and pipeline data the skill can't see.

Default behavior briefs every competitor you've configured. Pass specific names or IDs to brief a subset, or pass none and get the full set. Web search includes a cross-check on named execs, since CEO and leadership records can be stale.

What It Does

  • Executive comparison table: Side-by-side view of HQ, funding, revenue, exec team, and most recent strategic move across every competitor in scope.
  • Verbatim GTM positioning: Quotes your defined reasons they win, reasons they lose, and customer wins directly, never paraphrased.
  • Recent moves by competitor: Scoops, news, and web findings grouped under each competitor, dated and tagged with source.
  • G2 and web sentiment: Pulls ratings and review themes from G2, TrustRadius, and head-to-head comparison pages with verifiable URLs.
  • Discovery questions per competitor: Three or more questions per competitor, rooted in a specific weakness or surfaced gap.

Use Cases

Quarterly Competitive Review

For a leadership review across all configured competitors, run the skill with a "quarterly review, scannable" purpose. Output is a scannable Executive Comparison plus 90-day strategic moves per competitor. Light depth on each competitor keeps the brief readable for a busy exec audience.

AE Prep for a Head-to-Head Bake-Off

When an AE is heading into a competitive deal, run the skill in deep-dive mode on the specific competitor. The output includes G2 themes, recent product launches, exec commentary, and the exact products that map to your SKUs. Discovery questions are grounded in real product gaps and verified weaknesses.

Enablement Content for a Deal Cohort

When a competitor starts showing up in multiple deals, run the skill on that competitor with priority angles tied to where you're losing. The brief becomes the seed for a battle card: positioning verbatim from your matrix, recent moves dated and sourced, ICP overlap classified, and discovery questions reps can drop into a call.

Skill Definition

The raw markdown Claude uses when this skill is invoked.

---
name: competitor-analysis
description: Produce a fact-led competitive intel brief on one or more competitors — firmographics, recent strategic moves, product positioning, ICP overlap, and discovery questions. Defaults to your configured competitors from GTM context if none specified. Combines ZoomInfo data (account_research, scoops, intent, exec teams, similar companies) with web search for product/pricing/customer-sentiment intelligence. Identify competitors by ZoomInfo account/company ID (preferred) or name; include rich context on why the brief is being pulled and what decision it supports.
---

# Competitor Analysis

Produce a fact-led competitive intel brief. Lead with an executive comparison across competitors, then a per-competitor section. Pull positioning verbatim from the GTM context — don't invent your own opinions about who wins or who's the biggest threat.

## Input

The user will provide via `$ARGUMENTS`:

- **Competitor identifiers (optional)** — zero or more of:
  - **Preferred**: ZoomInfo account/company IDs (numeric). Use directly as `companyId`; skip the search step for that competitor.
  - **Fallback**: competitor names. Resolve via `search_companies` (use `companyWebsite` from GTM context's `url` field if present; otherwise `companyName`).
  - If omitted entirely, default to all competitors configured in your GTM context.
  - For named competitors NOT in GTM context, flag as "uncovered" — research proceeds, but pre-built positioning is missing.
- **Research context (strongly recommended)** — a free-form description of *why* this brief is being pulled and what decision it supports. Richer is better — flat depth enums and deal one-liners produce flat briefs. Capture as much as is true: the deal or situation in play, what you're losing or winning on, the offering or product line under pressure, the audience for the brief (AE prep / leadership review / enablement), how exhaustive the analysis needs to be, and any specific angles or hypotheses to test. Examples:
  - *"Losing the mid-market segment to Clay on data orchestration. Need to understand their recent product moves, pricing, and where their customer reviews show cracks. AE-facing — concrete discovery questions matter most."*
  - *"Quarterly competitive review for leadership. All configured competitors. Want a scannable Executive Comparison plus 90-day strategic moves. Depth on each is light."*
  - *"Deep dive on Acme before a head-to-head bake-off next month. Their security platform vs ours. Want G2/TrustRadius sentiment themes, recent CISO commentary, and the exact products they'd field against our SKUs."*

This context drives depth allocation (deep vs scan), the `account_research` query framing, scoops/news triage, web-search angles, and the discovery-question slant.

## Workflow

Parallelize aggressively — once each competitor's company ID is resolved, all per-competitor calls can fan out in parallel. When briefing multiple competitors, run all competitors' fan-outs in the same parallel batch.

1. **Anchor on purpose.** Read the research context from `$ARGUMENTS`.
   - If supplied, restate it in 1-2 sentences as the *brief purpose* and keep it as the framing lens for every downstream step.
   - If missing, ask the user once. If they decline or say "just general competitive intel", default to **general competitive scan across configured competitors** and state that assumption at the top.
   - From the context, derive: a **brief purpose** (1 line), **depth allocation** (which competitors get deep treatment vs lighter coverage), **priority angles** (3-5 — e.g., pricing, data orchestration, CISO-level positioning, G2 sentiment), and any **named hypotheses** to test (e.g., "test whether Clay's mid-market push is sustainable"). These drive the `account_research` query, scoops triage, and web-search angles.

2. **Get GTM context** — call `get_gtm_context` with `detailed: true`. This is the **anchor source**: it contains your defined competitors with `products`, `reasonsTheyWin`, `reasonsTheyLose`, `customersWeWon`, and `competitiveProducts`. Quote these verbatim in the output — they're pre-built positioning content, not your interpretation.

3. **Determine the competitor set** — match user-named competitors (or IDs) against the GTM-context list. If user named none, brief all configured. Flag uncovered competitors as noted in Input.

4. **For each competitor, fan out in parallel (retrieval, not filtering).** Treat each tool call as a context-retrieval step. Pull broadly now; decide what's relevant during synthesis.
   - **Resolve company ID** — if the user supplied a ZoomInfo ID, use directly; otherwise `search_companies` (use `companyWebsite` from GTM context's `url` field if present; fall back to `companyName`).
   - **Firmographics** via `enrich_companies` (full field set including `employeeCountByDepartment`, `companyFunding`, `recentFundingDate`, `totalFundingAmount`).
   - **Strategic narrative** via `account_research` — inject the brief purpose, priority angles, and named hypotheses into the query. Ask for go-to-market motion, recent moves, customer wins/losses, leadership changes, direct overlap with your products, and anything that bears on the specific angles named in the context.
   - **Recent scoops** via `enrich_scoops` (90 days, `pageSize: 15`) — no role filter. Triage in step 7.
   - **Their intent signals** via `enrich_intent` — call with the `companyId` only. Do **not** pre-filter by topic. The goal is to see what topics this competitor is actually expressing intent on. Filtering happens in step 7. Intent for competitors often returns sparse — note as a confidence indicator if so.
   - **Their executive team** via `search_contacts` (`managementLevel: "C Level Exec,VP Level Exec"`, sort by `-contactAccuracyScore`, `pageSize: 15`).
   - **Their similar companies** via `find_similar_companies` — apply the cohort-consistency check; if the top peers span inconsistent industries vs the target, flag as directional only.

5. **Web search per competitor** — `WebSearch` targeted to the priority angles from step 1. At minimum: G2 reviews / TrustRadius sentiment, head-to-head comparisons (`"[Competitor] vs [Your Org]"`), recent product launches, public earnings/CEO statements (if public). For deep targets, add angle-specific queries (e.g., pricing, specific product lines, customer churn stories). Capture verifiable quotes with URLs. **Cross-check exec data**: if `account_research` named a CEO, verify against web — stale CEO records have been observed.

6. **Date and currency checks** — if `account_research` surfaces dates in the past (renewal, contract end, exec tenure end, last activity), retain but flag for verification. If a CEO or other top exec named in `account_research` is contradicted by web search, lead with the corrected fact and note the source disagreement.

7. **Synthesize.** Each retrieval is raw context — now decide what makes the brief, framed by the brief purpose and priority angles. Apply these principles:
   - **Intent triage**: from `enrich_intent`, keep topics that map to the brief purpose, priority angles, or non-obvious competitive signals worth flagging. Drop noise. If nothing meaningful remains, say so explicitly — don't infer roadmap from absence.
   - **Scoops triage**: keep product launches, exec moves at VP+, partnerships, M&A, hiring patterns relevant to the priority angles. Drop generic press releases.
   - **Verbatim positioning**: pull `reasonsTheyWin`, `reasonsTheyLose`, `customersWeWon` **verbatim** from GTM context. Do not paraphrase or add your own opinions.
   - **Recent moves**: dated, sourced, described without interpretation ("Acquired Pocus on Mar 19" — not "Aggressive M&A signals confidence").
   - **ICP overlap**: classify each of your defined ICPs against the competitor's apparent reach (High / Partial / None) using firmographics and `customersWeWon` evidence.
   - **Discovery questions**: 3 per competitor (more for deep targets), anchored in a specific gap, priority angle, or surfaced fact. Not generic.
   - **Hypothesis check**: explicitly address each named hypothesis from step 1 — confirmed / contradicted / unresolved. Surface in the Executive Comparison preamble.
   - **Avoid** threat ranking, "biggest threat" calls, or whitespace synthesis — these require win-rate and pipeline data the skill doesn't have.

## Output Format

### Executive Comparison

*Brief purpose: [restate the user's research context in one line, or "general competitive scan (no context supplied)" if defaulted].*

**Hypothesis check** (one line per named hypothesis from the input): confirmed / contradicted / unresolved.

A single side-by-side table covering all competitors:

| | Competitor 1 | Competitor 2 | Competitor 3 |
|---|---|---|---|
| HQ / Founded | | | |
| Type / Funding | total raised + most recent round + date | | |
| Revenue (range) | | | |
| Employees (Eng / Sales / Mktg) | | | |
| CEO | | | |
| Most recent strategic move | one-line + date | | |
| Public G2 rating (if pulled) | | | |
| Defined by [Your Org] as primary competitor for | from GTM context `competitiveProducts` | | |

Below the table, a short **Recent product/strategy moves (last 90 days, all competitors)** bulleted list — one to three bullets per competitor, with `[scoops]` / `[web]` / `[CRM]` source tags.

Then a **⚠️ Data quality flags** block listing any failures or uncertain data — failed intent calls, weak similarity cohorts, stale exec records caught by web cross-check, framework errors. Be specific.

---

### [Competitor Name]

**Snapshot.** One-paragraph context — what they do, key exec team (CEO / CTO / CMO / CRO / CPO), department headcount weights from `employeeCountByDepartment`.

**Recent moves (last 90 days)** with `[source]` tags — bulleted, dated, no interpretation. Lead with M&A and exec moves; then product launches; then hiring patterns. Include URLs for web-sourced items.

**Product positioning (per [Your Org]'s defined competitive matrix):**

| Their product | Your product (per GTM context) |
|---|---|
| | |

Map their products to the items in GTM context's `competitiveProducts` field for this competitor.

**Per GTM context** `[GTM]`:
- *reasonsTheyWin*: [verbatim from GTM context — bulleted]
- *reasonsTheyLose*: [verbatim from GTM context — bulleted]
- *customersWeWon*: [verbatim from GTM context — bulleted]

**ICP overlap with [Your Org]'s defined ICPs:**
- High: [ICP names where the competitor competes hard]
- Partial: [ICP names where they touch but it's not their focus]
- None: [ICPs they don't compete in]

(Use firmographics + `customersWeWon` as evidence. If unclear, mark as "Partial".)

**G2 / web sentiment** `[web]` (if pulled): rating + N reviews. 1-2 themes from praise, 1-2 themes from criticism. Source URLs.

**Intent signal** `[intent]` (if returned): 1-line note. If 0 signals returned, say so explicitly — don't infer roadmap from absence.

**Discovery questions to ask in deal:**

1. [Question rooted in a specific `reasonsTheyLose` weakness or a verified gap]
2. [Question that surfaces a feature/capability they're missing]
3. [Question grounded in a recent move or specific deal-stage friction]

---

### [Next Competitor Name]

(Repeat the structure above per competitor.)

---

### Skill Issues to Fold Back

If anything failed or returned unreliable data during the run, list it here so the next iteration can pick it up:
- Tool errors (parameter type bugs, 400s)
- Weak `find_similar_companies` cohorts
- Stale `account_research` records caught by web search
- Empty `enrich_intent` results

This section can be omitted if everything ran cleanly.

## Notes on what NOT to do

- **Don't invent threat rankings** ("top threat", "fastest mover", "most displaceable"). The skill doesn't have win-rate or pipeline data to back these calls.
- **Don't paraphrase** `reasonsTheyWin` / `reasonsTheyLose` / `customersWeWon` — quote them verbatim. They're pre-built positioning your org has approved.
- **Don't interpret roadmap from absence of intent signals** — competitors often return sparse intent.
- **Don't synthesize a cross-competitor whitespace section** — that requires win/loss data this skill doesn't pull.
- **Don't pad** — if a section has thin data, say so explicitly rather than filling with interpretation.

Install Plugin

This skill runs via the ZoomInfo MCP plugin for Claude Code.

Get Plugin on GitHub

Created by

Rowan Bailey

Rowan Bailey

Senior Director, Product

Provided by

ZoomInfo

Capabilities

  • Side-by-side executive comparison across all named competitors
  • Verbatim positioning pulled from your defined competitive matrix
  • Web search for G2 sentiment, head-to-head comparisons, and exec verification
  • Recent strategic moves grouped by competitor with source tags
  • Discovery questions grounded in real gaps, not generic