238 lines
Market Intelligence

Solution Page

Head to Head

Profile two companies in parallel, synthesize a competitive battle card, and enrich the comparison with recent news.

Strategy
Product marketing
Founders
Company profiles
Battle card
Recent news

Overview

For Strategy, Product marketing, Founders

Integrations: Company profiles, Battle card, Recent news

Head-to-head comparison

Battle card

Recent news context

Improves consistency in competitive positioning.

Speeds up preparation for strategy and sales conversations.

Keeps comparisons grounded in up-to-date research inputs.

What It Solves

Head-to-head company comparisons are usually assembled manually and lose freshness as soon as the market moves.

Workflow

1

Profile both companies in parallel.

2

Pull recent external context and compare the two across common themes.

3

Publish a battle card the team can reuse in strategy and field settings.

Implementation

Review the underlying plan definition, inspect the template when available, and see how the workflow is encoded for repeatable execution.

Plan Code

Markdown Report

head_to_head.yaml

238 lines

## HEAD TO HEAD - COMPETITIVE BATTLE CARD
## Takes two companies and produces a full competitive analysis:
## parallel profiles → head-to-head synthesis → recent news enrichment

parameters:
  - name: company_one
    schema:
      type: string
      description: "The primary company — the one we are positioning to win"
  - name: company_two
    schema:
      type: string
      description: "The competitor company — the one we are positioning against"

components:
  schemas:
    news_item:
      type: object
      properties:
        title: { type: string, description: "Headline of the news item" }
        url: { type: string, description: "URL of the news item" }
        source: { type: string, description: "Publication or outlet name" }
        date: { type: string, description: "Publication date" }
        summary: { type: string, description: "One sentence takeaway and why it matters competitively" }

    company_profile:
      type: object
      required: [name]
      properties:
        name: { type: string, description: "Name of the company" }
        website_url: { type: string, description: "Official website URL" }
        general_information: { type: string, description: "Short overview of what the company does" }
        founded_year: { type: integer, description: "Year the company was founded" }
        hq_location: { type: string, description: "Headquarters location" }
        stage: { type: string, description: "Company stage: seed, Series A, growth, or public" }
        headcount: { type: string, description: "Approximate employee count or range" }
        category: { type: string, description: "Primary market category or business type" }
        business_model:
          type: string
          enum: [b2b, b2c, b2b2c, marketplace, enterprise, smb, developer, hybrid, unknown]
        target_customer: { type: string, description: "Core buyer or customer segment" }
        tam_estimate: { type: string, description: "Estimated total addressable market" }
        funding: { type: string, description: "Known funding status, rounds, or investors" }
        key_investors:
          type: array
          items: { type: string }
        revenue_signals:
          type: array
          description: "Observable signals related to monetization, pricing, or revenue scale"
          items: { type: string }
        growth_signals:
          type: array
          description: "Observable signals of momentum: hiring, launches, partnerships, expansion"
          items: { type: string }
        moat: { type: string, description: "Potential competitive advantage or defensibility" }
        risk_flags:
          type: array
          description: "Material concerns, execution risks, or competitive weaknesses"
          items: { type: string }

    dimension_comparison:
      type: object
      description: "A single dimension compared across both companies"
      properties:
        dimension: { type: string, description: "The dimension being compared (e.g. Pricing Model, GTM Motion)" }
        company_one_position: { type: string, description: "How company one stands on this dimension" }
        company_two_position: { type: string, description: "How company two stands on this dimension" }
        advantage: { type: string, enum: [company_one, company_two, neutral], description: "Which company has the edge here" }
        notes: { type: string, description: "Context or nuance on this dimension" }

    positioning_move:
      type: object
      description: "A concrete action company one should take to win against company two"
      properties:
        move: { type: string, description: "Short label for the strategic move" }
        rationale: { type: string, description: "Why this move wins given the competitive landscape" }
        target_segment: { type: string, description: "Which customer segment this move targets" }
        urgency: { type: string, enum: [immediate, near-term, long-term], description: "When to execute this move" }

    battle_card:
      type: object
      description: "Full head-to-head competitive synthesis"
      properties:
        summary: { type: string, description: "2-3 sentence executive summary of how these two companies stack up" }
        overlap:
          type: array
          description: "Specific areas where both companies compete directly for the same customer or use case"
          items: { type: string }
        commonalities:
          type: array
          description: "Shared characteristics — similar business model, tech approach, go-to-market, etc."
          items: { type: string }
        company_one_strengths:
          type: array
          description: "Where company one meaningfully outperforms or differentiates from company two"
          items: { type: string }
        company_one_weaknesses:
          type: array
          description: "Where company one lags, is exposed, or is vulnerable relative to company two"
          items: { type: string }
        company_two_strengths:
          type: array
          description: "Where company two meaningfully outperforms or differentiates from company one"
          items: { type: string }
        company_two_weaknesses:
          type: array
          description: "Where company two lags, is exposed, or is vulnerable relative to company one"
          items: { type: string }
        key_differentiators:
          type: array
          description: "The most decisive points of differentiation that will determine who wins"
          items: { type: string }
        dimension_comparisons:
          type: array
          description: "Structured dimension-by-dimension breakdown across key competitive vectors"
          items:
            $ref: "#/components/schemas/dimension_comparison"
        positioning_playbook:
          type: array
          description: "Concrete moves company one should make to beat company two"
          items:
            $ref: "#/components/schemas/positioning_move"
        win_themes:
          type: array
          description: "The 3 most compelling narratives company one should lead with when competing against company two"
          items: { type: string }
        risk_of_inaction: { type: string, description: "What happens if company one does nothing differently — what does company two's trajectory suggest?" }

sessions:
  # Run both company profiles in parallel — no dependsOn
  profile-company-one:
    prePrompt: |-
      Research {{ .params.company_one }} thoroughly.
      Find the official website, what the company does, its market category, recent funding,
      and all standard VC diligence fields: founded year, HQ location, stage, headcount,
      business model, target customer, TAM estimate, key investors, revenue signals,
      growth signals, moat, and risk flags.
    prompt: |-
      Return a company_profile JSON object for {{ .params.company_one }}.
    tools:
      - type: internet_search

  profile-company-two:
    prePrompt: |-
      Research {{ .params.company_two }} thoroughly.
      Find the official website, what the company does, its market category, recent funding,
      and all standard VC diligence fields: founded year, HQ location, stage, headcount,
      business model, target customer, TAM estimate, key investors, revenue signals,
      growth signals, moat, and risk flags.
    prompt: |-
      Return a company_profile JSON object for {{ .params.company_two }}.
    tools:
      - type: internet_search

  # Synthesis session — depends on both profiles
  synthesize-battle-card:
    dependsOn:
      - session: profile-company-one
      - session: profile-company-two
    context: true
    prePrompt: |-
      Using the profiles for {{ .params.company_one }} and {{ .params.company_two }} already in context,
      do additional research to fill any gaps and sharpen the competitive picture:
      - Look for head-to-head comparisons, analyst takes, customer reviews, or G2/Capterra pages
      - Identify which customer segments each company is winning and losing
      - Find any public evidence of the two companies competing for the same deals or customers
      - Look for pricing pages, case studies, or partnership announcements that reveal GTM strategy
    prompt: |-
      Using both company profiles in context plus the additional research above,
      produce a battle_card JSON object comparing {{ .params.company_one }} vs {{ .params.company_two }}.
      The positioning_playbook must be written from the perspective of {{ .params.company_one }} — 
      concrete, actionable moves to beat {{ .params.company_two }}.
      Cover at least 6 dimension_comparisons across: product, pricing, GTM, target customer, 
      technology/moat, and brand/market presence.
    tools:
      - type: internet_search

  # News enrichment — runs in parallel for both companies after profiles exist
  fetch-news-company-one:
    dependsOn:
      - session: profile-company-one
    context: "{{ .context.company_one_profile }}"
    prePrompt: |-
      Find the 4 most recent material news updates for {{ .params.company_one }}.
      Focus on: product launches, funding rounds, partnerships, acquisitions, executive changes,
      customer wins, or major strategy shifts. Prioritize news from the last 90 days.
    prompt: |-
      Return an array of news_item objects for {{ .params.company_one }}.
      Each summary should note why the news item is competitively relevant.
    tools:
      - type: internet_search

  fetch-news-company-two:
    dependsOn:
      - session: profile-company-two
    context: "{{ .context.company_two_profile }}"
    prePrompt: |-
      Find the 4 most recent material news updates for {{ .params.company_two }}.
      Focus on: product launches, funding rounds, partnerships, acquisitions, executive changes,
      customer wins, or major strategy shifts. Prioritize news from the last 90 days.
    prompt: |-
      Return an array of news_item objects for {{ .params.company_two }}.
      Each summary should note why the news item is competitively relevant.
    tools:
      - type: internet_search

schema:
  type: object
  required:
    - company_one_profile
    - company_two_profile
    - battle_card
    - company_one_news
    - company_two_news
  properties:
    company_one_profile:
      x-session: profile-company-one
      $ref: "#/components/schemas/company_profile"

    company_two_profile:
      x-session: profile-company-two
      $ref: "#/components/schemas/company_profile"

    battle_card:
      x-session: synthesize-battle-card
      $ref: "#/components/schemas/battle_card"

    company_one_news:
      x-session: fetch-news-company-one
      type: array
      items:
        $ref: "#/components/schemas/news_item"

    company_two_news:
      x-session: fetch-news-company-two
      type: array
      items:
        $ref: "#/components/schemas/news_item"