Competitive Positioning logo

Competitive Positioning

Community
MikeFishbeinAtherial
competitive-positioning

Run a full competitive positioning exercise for any company or product. Produces competitive battle cards and a positioning canvas. Use when the user wants to research competitors, build battle cards, identify positioning gaps, create a category name, define an ICP, or develop a messaging strategy. Trigger when the user says things like 'help me position X', 'who are my competitors', 'what should our messaging be', 'help me figure out what makes us different', or 'scrape competitor websites'.

Overview

PublisherMikeFishbeinAtherial
Repositoryinfinite-headcount
Skill namecompetitive-positioning
Stars
50
Forks
5
Bundled files
1
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by MikeFishbeinAtherial on GitHub. Read the source before you install it.

Installation

Install the Competitive Positioning AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/MikeFishbeinAtherial/infinite-headcount/tree/main/competitive-positioning
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/MikeFishbeinAtherial/infinite-headcount.git /tmp/infinite-headcount
mkdir -p .claude/skills
cp -r /tmp/infinite-headcount/competitive-positioning .claude/skills/competitive-positioning
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Competitive Positioning in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Competitive Positioning on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Competitive Positioning is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Competitive Positioning

Run a structured competitive intelligence and positioning exercise. Produces:

  1. Competitive battle cards for each competitor (scraped from live sites)
  2. A positioning canvas (category name, ICP, problem, messaging pillars, headline options, and other positioning elements)

Work through the three phases in order. Do not skip Phase 1 — the grilling is what makes the canvas sharp.


Phase 1: Context Gathering (interview the User)

Before touching competitor research, interview the user to build a full picture of their business. Ask one question at a time, provide a recommended answer hypothesis with each question, and resolve each before moving on.

Ask these questions in order, one at a time:

Q1 — ICP

"When you picture the ideal customer, the one you'd clone 10 times, what do they do and what's the specific pain that makes them come to you?"

Offer a hypothesis based on what you already know. Ask them to confirm or correct.

Q2 — Primary Transformation

"When a customer finishes with your product or service and they're thrilled, what specifically changed for them?"

Offer multiple choice options tailored to what you know. General options:

  • They saved significant time or eliminated manual work
  • They finally have visibility or data they didn't have before
  • Their product or service now has a new capability
  • They unlocked a new channel or revenue stream
  • They reduced risk or avoided a costly problem

Q3 — Delivery Model

"How does your company actually deliver value?"

  • Physical product
  • Software / SaaS
  • Service — project-based
  • Service — retainer / ongoing
  • Service — embedded
  • Marketplace or platform
  • Hybrid

Q4 — Key Differentiator

"What's the one thing you do better than everyone else in your space?"

  • Senior expertise or deeper experience
  • Strategy and execution from the same team
  • Speed
  • Custom or bespoke approach vs. templated solutions
  • Niche domain expertise
  • Price / value

Q5 — Sales Conversation Intelligence

"Walk me through the last two or three customers you closed. What was the moment they said yes? What phrase did they use that told you they were sold?"

This is the most important question. The answer almost always contains the positioning idea.

Q6 — Category Name

"Do you have a category name — how you describe what you do in a few words — or are you open to inventing one?"

  • I have one I want to refine
  • I'm open to your recommendation
  • I want to invent a new category name entirely

Q7 — Pricing / Deal Size

"What's the typical price or deal size? This informs how premium the positioning should feel."

Q8 — Customer Size

"What's the revenue range or profile of the companies or people you sell to best?"


After completing the grilling, summarize back in a brief "Here's what I heard" recap. Get confirmation before moving to Phase 2.


Phase 2: Competitive Research & Battle Cards

Step 1: Collect Competitor URLs

Ask the user: "Give me your top 3–5 competitors — names and URLs if you have them. If you only have names, I'll find the URLs."

For each competitor without a URL, use WebSearch to find it.

Step 2: Scrape Each Competitor Site

For each competitor, use WebFetch to retrieve:

  • The homepage
  • The About or How It Works page
  • Any services or pricing page

Extract from each site:

  • Hero headline and subheadline
  • Category name or how they describe themselves
  • ICP signals (who they say they serve)
  • Problem framing
  • Delivery model
  • Key differentiators or unique claims
  • Proof signals (case studies, logos, testimonials, numbers)
  • Pricing signals
  • Memorable lines or ownable language

Step 3: Build Battle Cards

For each competitor, produce a battle card. See references/example-battle-card.md for a quality example.

COMPETITOR NAME
Category: [how they describe themselves]
ICP: [who they target]
Delivery: [how they work]

WHAT THEY DO WELL
- [bullet]
- [bullet]

WEAKNESSES / GAPS
- [bullet]
- [bullet]

MEMORABLE LINES
- "[exact quote from site]"

BADGES: [label] [label] [label]

Step 4: Comparison Table

Side-by-side across all competitors + the user's company as the target column:

DimensionComp 1Comp 2Comp 3[User's Company]
Category name
Primary ICP
Delivery model
Core differentiator
Proof / credibility
Positions vs. what?
Pricing signals

Step 5: Gap Analysis

Write a 2–3 paragraph "The Gap [Company] Can Own" insight. Name:

  • What all competitors share (the angle they all cluster around)
  • What none of them credibly own
  • The specific territory the user's company can claim

Phase 3: Positioning Canvas

Use everything from Phase 1 and Phase 2 to build the canvas. Produce all 11 sections in order.


1. Category Name

3–4 options. Each should be 2–5 words that communicate what kind of company or product this is. Signal the most important differentiator. Avoid labels every competitor also uses — if "agency," "platform," or "solution" are invisible in this space, find a more ownable label.


2. ICP — Company Profile

Describe the ideal company to sell to:

  • Company type and ownership structure
  • Revenue range or headcount
  • Industry / vertical (or "any vertical" if truly broad)
  • Internal capabilities they have and don't have (be specific — not "no team" but "no dedicated [function]")
  • Buying trigger: what just happened in their business that makes them ready to buy now

3. ICP — Buyer Persona

Describe the individual who champions and closes the purchase:

  • Job title and level
  • What they're responsible for
  • What they're measured on (what makes them look good or bad)
  • Their relationship to the problem (do they feel it daily, or is it a strategic concern?)
  • Decision-making role: sole buyer, champion, committee member

4. Use Cases

List the specific scenarios where this product or service gets used. Each use case should be a one-sentence job: "When [situation], the customer uses [product] to [outcome]."

Aim for 1–6 use cases. These should be distinct — don't list the same use case in different words.


5. Capabilities

What the product or service can do — the functional abilities that enable the use cases. Write as active statements ("Scrapes competitor sites and extracts positioning signals") not feature labels ("Competitor scraping").

Capabilities are broader than features — they describe what becomes possible, not just what exists.


6. Competitive Alternatives

What does the buyer do instead of using this? List all real alternatives — these may include:

  • Direct competitors (named companies in the same category)
  • Category alternatives (a different type of solution solving the same problem)
  • Legacy processes (spreadsheets, email, manual workflows)
  • In-house approaches (hiring someone, building it internally)
  • Doing nothing (the status quo)

For each alternative, name it specifically. This list is the foundation for differentiation.


7. Shortcomings of Competitive Alternatives

For each alternative listed in section 6, identify the key shortcoming — the specific reason a buyer who has tried or considered it would still be looking for something better. Pull from Phase 2 battle card research where possible. Focus on shortcomings the target buyer actually experiences and cares about, not theoretical weaknesses.


8. First-Order Benefits

The direct, immediate benefits a customer experiences after starting to use the product or service. These are felt quickly — within the first session, week, or engagement. Frame from the customer's perspective.

Examples: "Stops spending 3 hours manually researching each competitor." "Gets a clear positioning statement instead of a blank page."


9. Business Outcomes

The higher-order results the customer achieves over time — what changes in their business, career, or competitive position as a result of the first-order benefits compounding. These are the outcomes a buyer is actually buying, even if they describe the product in functional terms.

Examples: "Faster time to market on new products." "Sales team closes at a higher rate because messaging resonates." "Attracts higher-quality leads who are pre-sold on the value."


10. Features / Services

The specific, nameable things the product or service includes. More concrete than capabilities — these are the deliverables or modules a customer would list if describing what they got.

Format each as: [Feature/Service Name] — one-sentence description of what it is and what it does.


11. Differentiators

What makes this product or service meaningfully better than the competitive alternatives on the dimensions that matter most to the buyer. Differentiators must be:

  • True (you can back it up)
  • Relevant (the buyer actually cares about this dimension)
  • Provable (you have evidence, not just a claim)
  • Owned (competitors can't credibly make the same claim right now)

For each differentiator, name it, explain why it matters to the buyer, and state why the competition can't match it.


Output Format

Always render as a self-contained HTML file with all styles inlined in a <style> block. No external dependencies. Use the design spec below exactly.

Save as [company-name]-positioning-canvas.html and share with the user.


HTML Design Spec

Page layout:

  • Background: #0a0a0a
  • Font: system-ui, -apple-system, sans-serif
  • Max content width: 1100px, centered with auto margins
  • Fixed left sidebar (240px wide, #111, full height) with section nav links
  • Main content area with 32px padding

Color palette:

  • Background: #0a0a0a
  • Surface (cards): #141414
  • Surface elevated: #1a1a1a
  • Border: #2a2a2a
  • Text primary: #f0f0f0
  • Text secondary: #888
  • Accent: #c8f135 (lime green) — swap this accent for your own brand color

Sidebar:

html
<aside style="position:fixed;top:0;left:0;width:240px;height:100vh;background:#111;border-right:1px solid #2a2a2a;padding:32px 20px;overflow-y:auto;">
  <div style="font-size:11px;font-weight:700;letter-spacing:0.1em;color:#888;text-transform:uppercase;margin-bottom:4px;">[Company Name]</div>
  <div style="font-size:13px;color:#f0f0f0;margin-bottom:32px;">Positioning Canvas</div>
  <a href="#competitors" style="display:block;font-size:12px;color:#888;text-decoration:none;padding:6px 0;border-bottom:1px solid #1e1e1e;">01 — Competitors</a>
  <a href="#canvas" style="display:block;font-size:12px;color:#888;text-decoration:none;padding:6px 0;border-bottom:1px solid #1e1e1e;">02 — Canvas</a>
</aside>
<main style="margin-left:240px;padding:48px 40px;max-width:860px;">

Section divider:

html
<div style="display:flex;align-items:center;gap:12px;margin:48px 0 24px;">
  <div style="width:3px;height:16px;background:#c8f135;"></div>
  <span style="font-size:11px;font-weight:700;letter-spacing:0.12em;color:#888;text-transform:uppercase;">Section Title</span>
</div>

Battle card (use a two-column grid for multiple cards: display:grid;grid-template-columns:1fr 1fr;gap:16px):

html
<div style="background:#141414;border:1px solid #2a2a2a;padding:24px;border-radius:2px;">
  <div style="font-size:13px;font-weight:700;color:#f0f0f0;letter-spacing:0.05em;text-transform:uppercase;margin-bottom:4px;">COMPETITOR NAME</div>
  <div style="font-size:11px;color:#888;margin-bottom:20px;">Category · ICP · Delivery model</div>

  <div style="font-size:10px;font-weight:700;letter-spacing:0.1em;color:#c8f135;text-transform:uppercase;margin-bottom:8px;">What they do well</div>
  <ul style="margin:0 0 16px;padding-left:16px;font-size:12px;color:#ccc;line-height:1.7;">
    <li>...</li>
  </ul>

  <div style="font-size:10px;font-weight:700;letter-spacing:0.1em;color:#888;text-transform:uppercase;margin-bottom:8px;">Weaknesses</div>
  <ul style="margin:0 0 16px;padding-left:16px;font-size:12px;color:#ccc;line-height:1.7;">
    <li>...</li>
  </ul>

  <div style="font-size:10px;font-weight:700;letter-spacing:0.1em;color:#888;text-transform:uppercase;margin-bottom:8px;">Memorable lines</div>
  <div style="font-size:12px;color:#888;font-style:italic;margin-bottom:16px;">"exact quote"</div>

  <div style="display:flex;flex-wrap:wrap;gap:6px;margin-top:4px;">
    <span style="font-size:10px;font-weight:600;padding:3px 8px;border:1px solid #c8f135;color:#c8f135;letter-spacing:0.05em;">BADGE</span>
    <span style="font-size:10px;font-weight:600;padding:3px 8px;border:1px solid #2a2a2a;color:#888;letter-spacing:0.05em;">BADGE</span>
  </div>
</div>

Comparison table:

html
<div style="overflow-x:auto;margin:24px 0;">
  <table style="width:100%;border-collapse:collapse;font-size:12px;">
    <thead>
      <tr style="border-bottom:2px solid #c8f135;">
        <th style="text-align:left;padding:10px 12px;color:#888;font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:0.08em;">Dimension</th>
        <th style="text-align:left;padding:10px 12px;color:#888;font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:0.08em;">Competitor A</th>
        <th style="text-align:left;padding:10px 12px;color:#c8f135;font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:0.08em;">[Your Company]</th>
      </tr>
    </thead>
    <tbody>
      <tr style="border-bottom:1px solid #1e1e1e;">
        <td style="padding:10px 12px;color:#888;">Dimension label</td>
        <td style="padding:10px 12px;color:#ccc;">Value</td>
        <td style="padding:10px 12px;color:#f0f0f0;font-weight:500;">Value</td>
      </tr>
    </tbody>
  </table>
</div>

Canvas section block (use for each of the 11 canvas elements):

html
<div style="background:#141414;border:1px solid #2a2a2a;padding:24px;border-radius:2px;margin-bottom:12px;">
  <div style="font-size:10px;font-weight:700;letter-spacing:0.12em;color:#c8f135;text-transform:uppercase;margin-bottom:8px;">Section Title</div>
  <div style="font-size:13px;color:#f0f0f0;line-height:1.7;">Content here</div>
</div>

For canvas sections with multiple items (like category name options or use cases), use a subtle inner list:

html
<ul style="margin:8px 0 0;padding-left:18px;font-size:13px;color:#ccc;line-height:1.9;">
  <li>Item one</li>
  <li>Item two</li>
</ul>

Gap insight card (for the gap analysis between Phase 2 and Phase 3):

html
<div style="background:#0f1a00;border:1px solid #c8f135;padding:24px;border-radius:2px;margin:24px 0;">
  <div style="font-size:10px;font-weight:700;letter-spacing:0.12em;color:#c8f135;text-transform:uppercase;margin-bottom:8px;">The Gap [Company] Can Own</div>
  <div style="font-size:13px;color:#e0f0a0;line-height:1.8;">Insight text here</div>
</div>

Scroll + nav highlight script (include before </body>):

html
<script>
document.querySelectorAll('a[href^="#"]').forEach(a => {
  a.addEventListener('click', e => {
    e.preventDefault();
    document.querySelector(a.getAttribute('href')).scrollIntoView({behavior:'smooth'});
  });
});
window.addEventListener('scroll', () => {
  ['competitors','canvas'].forEach(id => {
    const el = document.getElementById(id);
    const link = document.querySelector(`a[href="#${id}"]`);
    if (!el || !link) return;
    const active = window.scrollY >= el.offsetTop - 80;
    link.style.color = active ? '#f0f0f0' : '#888';
  });
});
</script>

Reference Files

  • references/example-battle-card.md — Annotated example of a completed battle card

Common Mistakes to Avoid

  • Don't skip Phase 1. The Q5 answer (what made customers say yes) almost always contains the positioning idea.
  • Don't invent competitor claims. Only use copy scraped from live sites. If a site is inaccessible, note it and move on.
  • Don't list verticals unless asked. Broad positioning usually outperforms narrow for multi-sector companies.
  • Don't make the category name sound like everyone else's. If every competitor uses "agency" or "platform," those words are invisible.
  • Don't try to say three things in one headline. Pick the most resonant single idea.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Competitive Positioning AI skill do?

Run a full competitive positioning exercise for any company or product. Produces competitive battle cards and a positioning canvas. Use when the user wants to research competitors, build battle cards, identify positioning gaps, create a category name, define an ICP, or develop a messaging strategy. Trigger when the user says things like 'help me position X', 'who are my competitors', 'what should our messaging be', 'help me figure out what makes us different', or 'scrape competitor websites'.

Why use Competitive Positioning on TypingMind?

Because you install it once and use it with any model. Competitive Positioning is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Competitive Positioning in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/MikeFishbeinAtherial/infinite-headcount/tree/main/competitive-positioning. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Competitive Positioning?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Competitive Positioning?

As many as you like. As long as a model supports skills, you can use Competitive Positioning with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Competitive Positioning AI skill free?

Yes. It is published on GitHub by MikeFishbeinAtherial under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇