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(usecompanyWebsitefrom GTM context'surlfield if present; otherwisecompanyName). - 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.
- Preferred: ZoomInfo account/company IDs (numeric). Use directly as
- 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.
-
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_researchquery, scoops triage, and web-search angles.
-
Get GTM context — call
get_gtm_contextwithdetailed: true. This is the anchor source: it contains your defined competitors withproducts,reasonsTheyWin,reasonsTheyLose,customersWeWon, andcompetitiveProducts. Quote these verbatim in the output — they're pre-built positioning content, not your interpretation. -
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.
-
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(usecompanyWebsitefrom GTM context'surlfield if present; fall back tocompanyName). - Firmographics via
enrich_companies(full field set includingemployeeCountByDepartment,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 and intent via
enrich_company_signals(signalTypes: ["SCOOP", "INTENT"]) — one call returns their recent scoops and intent topics, with no role or topic pre-filtering. Triage 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.
- Resolve company ID — if the user supplied a ZoomInfo ID, use directly; otherwise
-
Web search per competitor —
WebSearchtargeted 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: ifaccount_researchnamed a CEO, verify against web — stale CEO records have been observed. -
Date and currency checks — if
account_researchsurfaces 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 inaccount_researchis contradicted by web search, lead with the corrected fact and note the source disagreement. -
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 the
enrich_company_signalsintent topics, keep those 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,customersWeWonverbatim 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
customersWeWonevidence. - 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.
- Intent triage: from the
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:
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):
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:
- [Question rooted in a specific
reasonsTheyLoseweakness or a verified gap] - [Question that surfaces a feature/capability they're missing]
- [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_companiescohorts - Stale
account_researchrecords caught by web search - Empty
enrich_company_signalsintent 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.


