competitor-teardown

Analisis kompetitif terstruktur dengan matriks fitur, SWOT, peta posisi, dan ulasan UX. Mencakup kerangka riset, perbandingan harga, penambangan ulasan, dan hasil visual. Gunakan untuk: riset pasar, intelijen kompetitif, deck investor, strategi produk, dukungan penjualan. Pemicu: analisis pesaing, analisis kompetitif, pembongkaran pesaing, riset pasar, intelijen kompetitif, analisis SWOT, perbandingan pesaing, lanskap pasar, ulasan pesaing, kompetitif...

npx skills add https://github.com/halt-catch-fire/skills --skill competitor-teardown

Install the belt CLI skill: npx skills add belt-sh/cli

Competitor Teardown

Structured competitive analysis with research and screenshots via inference.sh CLI.

Quick Start

Requires inference.sh CLI (belt). Install instructions

belt login

# Research competitor landscape
belt app run tavily/search-assistant --input '{
  "query": "top project management tools comparison 2024 market share"
}'

# Screenshot competitor's website
belt app run infsh/agent-browser --input '{
  "url": "https://competitor.com",
  "action": "screenshot"
}'

Teardown Framework

The 7-Layer Analysis

LayerWhat to AnalyzeData Source
1. ProductFeatures, UX, qualityScreenshots, free trial
2. PricingPlans, pricing model, hidden costsPricing page, sales call
3. PositioningMessaging, tagline, ICPWebsite, ads
4. TractionUsers, revenue, growthWeb search, press, funding
5. ReviewsStrengths, weaknesses from usersG2, Capterra, App Store
6. ContentBlog, social, SEO strategyWebsite, social profiles
7. TeamSize, key hires, backgroundLinkedIn, About page

Research Commands

Company Overview

# General intelligence
belt app run tavily/search-assistant --input '{
  "query": "CompetitorX company overview funding team size 2024"
}'

# Funding and financials
belt app run exa/search --input '{
  "query": "CompetitorX funding round series valuation investors"
}'

# Recent news
belt app run tavily/search-assistant --input '{
  "query": "CompetitorX latest news announcements 2024"
}'

Product Analysis

# Feature comparison
belt app run exa/search --input '{
  "query": "CompetitorX vs alternatives feature comparison review"
}'

# Pricing details
belt app run tavily/extract --input '{
  "urls": ["https://competitor.com/pricing"]
}'

# User reviews
belt app run tavily/search-assistant --input '{
  "query": "CompetitorX reviews G2 Capterra pros cons 2024"
}'

UX Screenshots

# Homepage
belt app run infsh/agent-browser --input '{
  "url": "https://competitor.com",
  "action": "screenshot"
}'

# Pricing page
belt app run infsh/agent-browser --input '{
  "url": "https://competitor.com/pricing",
  "action": "screenshot"
}'

# Signup flow
belt app run infsh/agent-browser --input '{
  "url": "https://competitor.com/signup",
  "action": "screenshot"
}'

Feature Matrix

Structure

| Feature | Your Product | Competitor A | Competitor B | Competitor C |
|---------|:---:|:---:|:---:|:---:|
| Real-time collaboration | ✅ | ✅ | ❌ | ✅ |
| API access | ✅ | Paid only | ✅ | ❌ |
| SSO/SAML | ✅ | Enterprise | ✅ | Enterprise |
| Custom reports | ✅ | Limited | ✅ | ❌ |
| Mobile app | ✅ | iOS only | ✅ | ✅ |
| Free tier | ✅ (unlimited) | ✅ (3 users) | ❌ | ✅ (1 project) |
| Integrations | 50+ | 100+ | 30+ | 20+ |

Rules

  • ✅ = Full support
  • ⚠️ or "Partial" = Limited or conditional
  • ❌ = Not available
  • Note conditions: "Paid only", "Enterprise tier", "Beta"
  • Lead with features where YOU win
  • Be honest about competitor strengths — credibility matters

Pricing Comparison

Structure

| | Your Product | Competitor A | Competitor B |
|---------|:---:|:---:|:---:|
| **Free tier** | Yes, 5 users | Yes, 3 users | No |
| **Starter** | $10/user/mo | $15/user/mo | $12/user/mo |
| **Pro** | $25/user/mo | $30/user/mo | $29/user/mo |
| **Enterprise** | Custom | Custom | $50/user/mo |
| **Billing** | Monthly/Annual | Annual only | Monthly/Annual |
| **Annual discount** | 20% | 15% | 25% |
| **Min seats** | 1 | 5 | 3 |
| **Hidden costs** | None | Setup fee $500 | API calls metered |

What to Look For

  • Minimum seat requirements
  • Annual-only billing (reduces flexibility)
  • Feature gating between tiers
  • Overage charges
  • Setup/onboarding fees
  • Contract lock-in periods

SWOT Analysis

Create a SWOT for each competitor:

### Competitor A — SWOT

| Strengths | Weaknesses |
|-----------|------------|
| • Strong brand recognition | • Slow feature development |
| • Large integration ecosystem | • Complex onboarding (30+ min) |
| • Enterprise sales team | • No free tier |

| Opportunities | Threats |
|--------------|---------|
| • AI features not yet shipped | • New AI-native competitors |
| • Expanding into mid-market | • Customer complaints about pricing |
| • International markets untapped | • Key engineer departures (LinkedIn) |

Positioning Map

A 2x2 matrix showing where competitors sit on two meaningful dimensions.

Choose Meaningful Axes

Good AxesBad Axes
Simple ↔ ComplexGood ↔ Bad
SMB ↔ EnterpriseCheap ↔ Expensive (too obvious)
Self-serve ↔ Sales-ledOld ↔ New
Specialized ↔ GeneralSmall ↔ Large
Opinionated ↔ Flexible

Template

                    Enterprise
                        │
           Competitor C │  Competitor A
                ●       │       ●
                        │
  Simple ──────────────────────────── Complex
                        │
            You ●       │  Competitor B
                        │       ●
                        │
                      SMB

Generating the Visual

# Create positioning map with Python
belt app run infsh/python-executor --input '{
  "code": "import matplotlib.pyplot as plt\nimport matplotlib\nmatplotlib.use(\"Agg\")\n\nfig, ax = plt.subplots(figsize=(10, 10))\n\n# Competitors\ncompetitors = {\n    \"You\": (-0.3, -0.3),\n    \"Competitor A\": (0.5, 0.6),\n    \"Competitor B\": (0.6, -0.4),\n    \"Competitor C\": (-0.4, 0.5)\n}\n\nfor name, (x, y) in competitors.items():\n    color = \"#22c55e\" if name == \"You\" else \"#6366f1\"\n    size = 200 if name == \"You\" else 150\n    ax.scatter(x, y, s=size, c=color, zorder=5)\n    ax.annotate(name, (x, y), textcoords=\"offset points\", xytext=(10, 10), fontsize=12, fontweight=\"bold\")\n\nax.axhline(y=0, color=\"grey\", linewidth=0.5)\nax.axvline(x=0, color=\"grey\", linewidth=0.5)\nax.set_xlim(-1, 1)\nax.set_ylim(-1, 1)\nax.set_xlabel(\"Simple ← → Complex\", fontsize=14)\nax.set_ylabel(\"SMB ← → Enterprise\", fontsize=14)\nax.set_title(\"Competitive Positioning Map\", fontsize=16, fontweight=\"bold\")\nax.grid(True, alpha=0.3)\nplt.tight_layout()\nplt.savefig(\"positioning-map.png\", dpi=150)\nprint(\"Saved\")"
}'

Review Mining

Where to Find Reviews

PlatformBest ForURL Pattern
G2B2B SaaSg2.com/products/[product]/reviews
CapterraBusiness softwarecapterra.com/software/[id]/reviews
App StoreiOS appsapps.apple.com
Google PlayAndroid appsplay.google.com
Product HuntLaunchesproducthunt.com/posts/[product]
RedditHonest opinionsreddit.com/r/[relevant-sub]

What to Extract

CategoryLook For
Most praisedWhat features do happy users mention most?
Most complainedWhat do unhappy users say? (= your opportunity)
Switching reasonsWhy do users leave? What triggers switching?
Feature requestsWhat's missing that users want?
Comparison mentionsWhen users compare, what do they say?
# Mine G2 reviews
belt app run tavily/search-assistant --input '{
  "query": "CompetitorX G2 reviews complaints issues 2024"
}'

# Reddit sentiment
belt app run exa/search --input '{
  "query": "reddit CompetitorX alternative frustration switching"
}'

Deliverable Formats

Executive Summary (1 page)

## Competitive Landscape Summary

**Market:** [Category] — $[X]B market growing [Y]% annually

**Key competitors:** A (leader), B (challenger), C (niche)

**Our positioning:** [Where you sit and why it matters]

**Key insight:** [One sentence about the biggest opportunity]

| Metric | You | A | B | C |
|--------|-----|---|---|---|
| Users | X | Y | Z | W |
| Pricing (starter) | $X | $Y | $Z | $W |
| Rating (G2) | X.X | Y.Y | Z.Z | W.W |

Detailed Report (per competitor)

  1. Company overview (size, funding, team)
  2. Product analysis (features, UX screenshots)
  3. Pricing breakdown
  4. SWOT analysis
  5. Review analysis (top praised, top complained)
  6. Positioning vs. you
  7. Opportunity summary

Comparison Grid Visual

# Stitch competitor screenshots into comparison
belt app run infsh/stitch-images --input '{
  "images": ["your-homepage.png", "competitorA-homepage.png", "competitorB-homepage.png"],
  "direction": "horizontal"
}'

Common Mistakes

MistakeProblemFix
Only looking at featuresMisses positioning, pricing, tractionUse the 7-layer framework
Biased analysisLoses credibilityBe honest about competitor strengths
Outdated dataWrong conclusionsDate all research, refresh quarterly
Too many competitorsAnalysis paralysisFocus on top 3-5 direct competitors
No "so what"Data without insightEnd each section with implications for you
Feature-only comparisonDoesn't show positioningInclude pricing, reviews, positioning map

Related Skills

npx skills add inference-sh/skills@web-search
npx skills add inference-sh/skills@prompt-engineering

Browse all apps: belt app list

Lebih banyak skill dari halt-catch-fire

ai-image-generation
halt-catch-fire
We need to translate the given text from English to Bahasa Indonesia. The text describes an agent skill for AI image generation. We must preserve the name "ai-image-generation" but it's not in the text, so we don't include it. Also preserve product names, protocol names, URLs, numbers, technical terms. No extra commentary. Just translate the text inside <text>. The text: "Generate AI images with GPT-Image-2, FLUX, Gemini, Grok, Seedream, Reve and 50+ models via inference.sh CLI. Models: GPT-Image-2, FLUX Dev LoRA, FLUX.2 Klein LoRA, Gemini 3 Pro Image, Grok Imagine, Seedream 4.5, Reve, ImagineArt. Capabilities: text-to-image, image-to-image, inpainting, LoRA, image editing, upscaling, text rendering. Use for: AI art, product mockups, concept art, social media graphics, marketing visuals, illustrations. Triggers: flux, image generation, ai image, text to...
creativemediaimage
ai-video-generation
halt-catch-fire
Hasilkan video AI dengan Google Veo, Seedance 2.0, HappyHorse, Wan, Grok dan 40+ model melalui CLI inference.sh. Model: Veo 3.1, Veo 3, Seedance 2.0, HappyHorse 1.0, Wan 2.5, Grok Imagine Video, OmniHuman, Fabric, HunyuanVideo. Kemampuan: teks-ke-video, gambar-ke-video, referensi-ke-video, pengeditan video, lipsync, animasi avatar, peningkatan resolusi video, suara foley. Gunakan untuk: video media sosial, konten pemasaran, video penjelasan, demo produk, avatar AI. Pemicu: pembuatan video, video AI,...
creativevideomedia
twitter-automation
halt-catch-fire
Otomatiskan Twitter/X dengan posting, interaksi, dan manajemen pengguna melalui CLI inference.sh. Aplikasi: x/post-tweet, x/post-create (dengan media), x/post-like, x/post-retweet, x/dm-send, x/user-follow. Kemampuan: memposting tweet, menjadwalkan konten, menyukai postingan, me-retweet, mengirim DM, mengikuti pengguna, mendapatkan profil. Gunakan untuk: otomatisasi media sosial, penjadwalan konten, bot interaksi, pertumbuhan audiens, API X. Pemicu: twitter api, x api, tweet automation, post to twitter, twitter bot, social media automation, x...
marketingapicommunication
ai-avatar-video
halt-catch-fire
We need to translate the given text from English to Bahasa Indonesia. The instruction says to preserve product names, protocol names, URLs, numbers, and technical terms. So names like "P-Video-Avatar", "OmniHuman", "Fabric", "PixVerse", "Inworld TTS-2", "ElevenLabs", "Kokoro", "CLI", "TTS", "UGC" should remain unchanged. Also "inference.sh" is a URL-like name, preserve. The text inside <text> is a description. We translate the rest naturally. The text: "Create AI avatar and talking head videos via inference.sh CLI. Recommended: P-Video-Avatar (fastest, cheapest, built-in TTS). Also: OmniHuman, Fabric, PixVerse. Audio: Inworld TTS-2 (100+ languages, emotion steering for characters), ElevenLabs, Kokoro. Capabilities: audio-driven avatars, text-to-avatar, lipsync videos, talking head generation, virtual presenters, UGC
videocreativemedia
agent-browser
halt-catch-fire
Otomatisasi peramban untuk agen AI melalui inference.sh. Navigasi halaman web, berinteraksi dengan elemen menggunakan referensi @e, ambil tangkapan layar, rekam video. Kemampuan: pengikisan web, pengisian formulir, klik, mengetik, seret-lepas, unggah berkas, eksekusi JavaScript. Gunakan untuk: otomatisasi web, ekstraksi data, pengujian, penjelajahan agen, riset. Pemicu: peramban, otomatisasi web, kikis, navigasi, klik, isi formulir, tangkapan layar, jelajahi web, playwright, peramban tanpa kepala, agen web, jelajahi internet, rekam video
browser-automationweb-scrapingtesting
web-search
halt-catch-fire
Pencarian web dan ekstraksi konten dengan Tavily dan Exa melalui CLI inference.sh. Aplikasi: Tavily Search, Tavily Extract, Exa Search, Exa Answer, Exa Extract. Kemampuan: pencarian berbasis AI, ekstraksi konten, jawaban langsung, riset. Gunakan untuk: riset, pipeline RAG, pemeriksaan fakta, agregasi konten, agen. Pemicu: pencarian web, tavily, exa, search api, ekstraksi konten, riset, pencarian internet, pencarian AI, asisten pencarian, web scraping, rag, alternatif perplexity
researchweb-scrapingapi
infsh-cli
halt-catch-fire
We need to translate the given text from English to Bahasa Indonesia, preserving the name "infsh-cli" and other technical terms, product names, protocol names, URLs, numbers, etc. The instruction says: "Do not include the name unless it appears in the source text." The name "infsh-cli" is not in the source text? Actually, the source text does not contain "infsh-cli" explicitly. The directory item type is "agent skill" and the name to preserve is "infsh-cli", but the text inside <text> does not include that name. So we should not add it. We just translate the text inside <text>. Also, we must not add labels like "description" or "skill name". Just the translation. The text: "Run 250+ AI apps via inference.sh CLI - image generation, video creation, LLMs, search, 3D, Twitter automation. Models: FLUX, Veo, Gemini, Grok, Claude, Seedance, OmniHuman, Tavily, Exa, Open
developmentapicreative
landing-page-design
halt-catch-fire
We need to translate the given text from English to Bahasa Indonesia. The instruction says to preserve product names, protocol names, URLs, numbers, technical terms. The name "landing-page-design" is to be preserved but not included unless it appears in source text. It does not appear in the <text> block. So we just translate the text. The text: "Landing page conversion optimization with layout rules, hero section design, and CTA psychology. Covers above-the-fold formula, social proof placement, mobile design, and F-pattern reading. Use for: startup landing pages, product pages, SaaS marketing, conversion optimization. Triggers: landing page, hero section, above the fold, conversion optimization, landing page design, cta button, hero image, landing page layout, saas landing page, product page design, conversion rate, landing page..." Translate carefully. Technical terms like "CTA", "above-the-fold", "F-pattern", "SaaS" should be preserved as is or translated? The instruction says preserve technical terms. Usually "CTA" is kept as