Skill: competitor-mapper
Purpose
Understand what the user is actually competing against — not just other apps, but also spreadsheets, habits, free alternatives, and human services. The goal is not an exhaustive list but a strategic map: who owns the space, where the gaps are, and whether this idea can occupy a position that incumbents can't easily copy.
Input
- Idea slug
memory/ideas/<slug>/idea.md (app concept, key features, differentiator)
memory/market_insights/<niche>-*-<YYYY>-<MM>.md (trend analysis files — use all available platform files for this niche)
Using Market Insights
Trend analysis files are a primary research source for competitor mapping. Extract the following:
| Platform file |
What to extract for competitor mapping |
Apps (<niche>-apps-*.md) |
Category rankings, new entrants, top apps by downloads/revenue, review complaint patterns, pricing models in use |
Reddit (<niche>-reddit-*.md) |
Apps and tools users mention by name (both praised and hated), non-software workarounds users describe, recurring complaints about existing solutions |
TikTok (<niche>-tiktok-*.md) |
Apps featured in viral content (free marketing = distribution advantage), creator-promoted tools, "alternatives to X" content trends |
Web Search (<niche>-web-search-*.md) |
Top-ranking apps for category keywords, "best X apps" list winners, SEO-dominant competitors |
monetization_evidence (from any platform) |
Which competitors are actively monetizing (proves the market supports revenue, identifies pricing benchmarks) |
trend_velocity |
Rising-fast markets attract new entrants quickly — flag that emerging threats will increase |
If no market_insights files exist, note this as a gap and rely on direct research only.
Competitor Categories
| Category |
Definition |
Why it matters |
Examples |
| Direct |
Same solution, same audience |
Head-to-head competition for the same users |
Apps solving the exact same problem on the same platform |
| Indirect |
Different solution, same problem |
User might choose this instead, even though it works differently |
A meditation app competing with a journaling app for "stress relief" |
| Substitute |
Non-software solution the user currently employs |
The real baseline — what happens if the user never installs any app |
Spreadsheets, pen-and-paper, hiring a person, doing nothing, a WhatsApp group |
| Emerging |
New entrants, beta products, or announced features from incumbents |
Future competitive pressure — the landscape 6–12 months from now |
YC-backed startups, Product Hunt launches, Apple/Google adding native features |
Process
Step 1 — Research Checklist by Category
Direct competitors (find 3–8)
Search these sources in order:
- App Store / Play Store category browse: Search the primary category and 2–3 keyword variations. Record the top 10 results for each search.
- "Best X apps" articles: Search Google for
best [category] apps 2026. The top 3 listicle results typically capture the market leaders.
- Product Hunt: Search the category. Sort by most upvoted. Focus on launches from the past 18 months (recent entrants).
- Market insights (Apps file): If
<niche>-apps-*.md exists, extract any competitors named in the narrative.
- Market insights (Reddit file): If
<niche>-reddit-*.md exists, extract apps users mention by name in discussions.
- AlternativeTo.net: Search the closest existing app. Lists adjacent competitors you may have missed.
For each direct competitor, record:
- Name, platform(s), pricing model and price
- Estimated user base (from App Store ratings count × 50–100, or from market_insights narrative)
- App Store rating (stars + review count)
- Last updated date (stale = opportunity)
- Top 3 features
- Top 3 complaints (from review mining — see Step 3)
Indirect competitors (find 2–5)
Ask: "What else might someone use to solve the same underlying problem, even if the approach is completely different?"
Sources:
- Reddit threads where users describe their current workflow for this problem
- "How to [solve problem]" search results — the solutions that appear ARE the indirect competition
- Market insights narratives that describe alternative approaches to the same pain
Substitutes (find 2–4)
Ask: "What is the user doing RIGHT NOW, before they know this app exists?"
Common substitute categories:
- Manual process: Spreadsheet, notes app, pen-and-paper, calendar reminders
- Human service: Coach, therapist, accountant, personal trainer
- Social workaround: Group chat, Facebook group, Discord server
- Inaction: Doing nothing (this is the strongest competitor for low-urgency problems)
Record the estimated cost and friction of each substitute — this is the switching-cost baseline the app must beat.
Emerging threats (find 1–3)
Sources:
- Product Hunt launches in the past 6 months
- YC / startup accelerator demo day lists
- Apple WWDC / Google I/O feature announcements that could obviate the app
- If
trend_velocity = "rising-fast" in market_insights, note that new entrants are likely
Flag any emerging competitor that has raised funding — they have resources to move fast.
Step 2 — App Store Search Methodology
The App Store is the most important research surface for B2C apps. Use this systematic approach:
- Primary keyword search: The most obvious term a user would search (e.g., "habit tracker").
- Problem keyword search: The problem statement (e.g., "build better habits").
- Audience keyword search: The target user + need (e.g., "ADHD planner").
- Adjacent keyword search: Related but broader terms (e.g., "daily routine", "productivity").
For each search, record:
- Number of results that are clearly relevant (not spam/unrelated)
- Rating and review count of the top 3 results
- Whether the top result has > 50K ratings (signals an entrenched incumbent)
- Date of last update for top 5 results (stale apps = opportunity to displace)
Step 3 — Review Mining for Positioning Gaps
Competitor reviews are the richest source of positioning gaps. Mine them systematically:
1-star reviews (frustration signals)
These reveal what users hate about existing solutions. Look for patterns:
- Bugs and reliability complaints (opportunity: "the one that actually works")
- Missing features that users expected (opportunity: build the feature they want)
- Pricing complaints (opportunity: better value or different model)
- Privacy/data concerns (opportunity: privacy-first positioning)
- UX complexity complaints (opportunity: simpler alternative)
3-star reviews (unmet expectation signals)
These are often more valuable than 1-star reviews. 3-star reviewers liked the app enough to keep using it but something important is missing:
- "Great app BUT..." — the "but" is the positioning gap
- "Would be perfect IF..." — the "if" is the feature opportunity
- "Works for X but not for Y" — the "Y" is the underserved segment
5-star reviews (what's defensible)
Read competitor 5-star reviews to understand what they do well. These strengths are hard to compete against directly — don't try. Instead, find the orthogonal angle that the incumbent's strength doesn't cover.
Mining process
For each direct competitor (top 3–5):
- Read the 20 most recent 1-star reviews
- Read the 20 most recent 3-star reviews
- Read 10 recent 5-star reviews
- Categorize complaints into themes (max 5 themes per competitor)
- Identify the most common complaint shared across 2+ competitors — this is the strongest gap signal
Step 4 — Positioning Gap Analysis
A positioning gap is a real user need that no current competitor serves well. Classify each gap:
| Gap type |
Description |
Defensibility |
| Audience gap |
No competitor targets this specific user segment |
Medium — easy to copy if proven |
| Feature gap |
A commonly requested feature that no competitor has built |
Low — incumbents can add it |
| Experience gap |
Existing solutions work but the UX is painful |
Medium — hard for bloated incumbents to simplify |
| Price gap |
All competitors are expensive; a free or cheap alternative would win |
Low — race to the bottom |
| Philosophy gap |
Existing solutions have a fundamentally different worldview (e.g., "gamified" vs. "minimalist") |
High — incumbents can't pivot their core identity |
| Platform gap |
No good solution exists on a specific platform (e.g., iOS-only need, Apple Watch, visionOS) |
Medium — temporary, but first-mover advantage is real |
| Trust gap |
Users don't trust existing solutions (privacy, data ownership, ads) |
High — trust is hard to build retroactively |
Prioritize philosophy gaps and trust gaps — these are the hardest for incumbents to copy and the most defensible for an indie developer.
Step 5 — Market Saturation Scoring
Saturation reflects how crowded the space is and how difficult it will be to get noticed.
| Factor |
Low (1 pt) |
Medium (2 pts) |
High (3 pts) |
| Direct competitor count |
0–2 relevant apps |
3–6 relevant apps |
7+ relevant apps |
| Incumbent dominance |
No app has > 10K ratings |
1–2 apps have 10K–100K ratings |
An app has > 100K ratings |
| Funding in space |
No funded competitors |
1–2 funded startups |
Multiple funded companies or a FAANG player |
| App Store keyword saturation |
Primary keywords show few relevant results |
Moderate results, some quality variance |
Top results are all high-quality, well-maintained apps |
| Content saturation |
Few "best X apps" articles exist |
Some articles, moderate SEO competition |
Many SEO-optimized listicles, hard to rank |
Total score (5–15 points):
| Total |
Saturation level |
| 5–7 |
low — Blue ocean. Few competitors, clear opportunity to establish position. |
| 8–11 |
medium — Competitive but gaps exist. Success requires clear differentiation. |
| 12–15 |
high — Red ocean. Dominated by well-funded or well-established players. Indie success requires a genuinely novel angle or underserved niche. |
Output
Write to memory/ideas/<slug>/competitors.json:
{
"direct_competitors": [
{
"name": "",
"platform": "",
"estimated_users": "",
"app_store_rating": 0,
"review_count": 0,
"last_updated": "",
"pricing": "",
"pricing_model": "",
"top_features": [],
"top_complaints": [],
"complaint_themes": [],
"distribution_channels_observed": []
}
],
"indirect_competitors": [
{
"name": "",
"approach": "",
"why_users_choose_it": ""
}
],
"substitutes": [
{
"description": "",
"cost": "",
"friction_level": "low | medium | high",
"switching_cost_to_app": ""
}
],
"emerging_threats": [
{
"name": "",
"stage": "beta | launched | announced",
"funded": false,
"threat_level": "low | medium | high",
"notes": ""
}
],
"review_mining_summary": {
"most_common_complaint_across_competitors": "",
"strongest_gap_signal": "",
"competitors_mined": 0
},
"positioning_gaps": [
{
"gap_type": "audience | feature | experience | price | philosophy | platform | trust",
"description": "",
"defensibility": "low | medium | high",
"evidence": ""
}
],
"saturation_score": {
"direct_competitor_count": 0,
"incumbent_dominance": 0,
"funding_in_space": 0,
"keyword_saturation": 0,
"content_saturation": 0,
"total": 0
},
"market_saturation": "low | medium | high",
"differentiation_opportunities": [],
"market_insights_sources_used": []
}
Notes
- The
most_common_complaint_across_competitors from review mining is one of the highest-signal data points in the entire validation system. If the same complaint appears in 3+ competitor review sets, it's a validated pain point — the market is telling you what to build.
distribution_channels_observed for each competitor helps downstream skills (distribution-analysis, cac-modeler) understand which channels actually work in this category.
- If market_insights show
trend_velocity = "rising-fast", note in emerging_threats that the competitor landscape will shift quickly. Rising markets attract builders.
- Substitutes with
friction_level = "low" are the hardest to displace — if doing nothing or using a spreadsheet is easy enough, the app must provide dramatically more value to justify the download.
1---2name: competitor-mapper3description: Maps the full competitive landscape — direct, indirect, substitute, and emerging competitors — with positioning gap analysis, review mining, and market_insights-calibrated saturation scoring. Feeds into idea-scoring, cac-modeler, pricing-and-wtp, and tam-sam-som-builder.4---56<!-- version: 0.2.0 | outputs: memory/ideas/<slug>/competitors.json -->78# Skill: competitor-mapper910## Purpose1112Understand what the user is actually competing against — not just other apps, but also spreadsheets, habits, free alternatives, and human services. The goal is not an exhaustive list but a **strategic map**: who owns the space, where the gaps are, and whether this idea can occupy a position that incumbents can't easily copy.1314## Input1516- Idea slug17- `memory/ideas/<slug>/idea.md` (app concept, key features, differentiator)18- `memory/market_insights/<niche>-*-<YYYY>-<MM>.md` (trend analysis files — **use all available platform files for this niche**)1920### Using Market Insights2122Trend analysis files are a primary research source for competitor mapping. Extract the following:2324| Platform file | What to extract for competitor mapping |25|---|---|26| **Apps** (`<niche>-apps-*.md`) | Category rankings, new entrants, top apps by downloads/revenue, review complaint patterns, pricing models in use |27| **Reddit** (`<niche>-reddit-*.md`) | Apps and tools users mention by name (both praised and hated), non-software workarounds users describe, recurring complaints about existing solutions |28| **TikTok** (`<niche>-tiktok-*.md`) | Apps featured in viral content (free marketing = distribution advantage), creator-promoted tools, "alternatives to X" content trends |29| **Web Search** (`<niche>-web-search-*.md`) | Top-ranking apps for category keywords, "best X apps" list winners, SEO-dominant competitors |30| `monetization_evidence` (from any platform) | Which competitors are actively monetizing (proves the market supports revenue, identifies pricing benchmarks) |31| `trend_velocity` | Rising-fast markets attract new entrants quickly — flag that emerging threats will increase |3233If no market_insights files exist, note this as a gap and rely on direct research only.3435## Competitor Categories3637| Category | Definition | Why it matters | Examples |38|---|---|---|---|39| **Direct** | Same solution, same audience | Head-to-head competition for the same users | Apps solving the exact same problem on the same platform |40| **Indirect** | Different solution, same problem | User might choose this instead, even though it works differently | A meditation app competing with a journaling app for "stress relief" |41| **Substitute** | Non-software solution the user currently employs | The real baseline — what happens if the user never installs any app | Spreadsheets, pen-and-paper, hiring a person, doing nothing, a WhatsApp group |42| **Emerging** | New entrants, beta products, or announced features from incumbents | Future competitive pressure — the landscape 6–12 months from now | YC-backed startups, Product Hunt launches, Apple/Google adding native features |4344## Process4546### Step 1 — Research Checklist by Category4748#### Direct competitors (find 3–8)4950Search these sources in order:51521. **App Store / Play Store category browse**: Search the primary category and 2–3 keyword variations. Record the top 10 results for each search.532. **"Best X apps" articles**: Search Google for `best [category] apps 2026`. The top 3 listicle results typically capture the market leaders.543. **Product Hunt**: Search the category. Sort by most upvoted. Focus on launches from the past 18 months (recent entrants).554. **Market insights (Apps file)**: If `<niche>-apps-*.md` exists, extract any competitors named in the narrative.565. **Market insights (Reddit file)**: If `<niche>-reddit-*.md` exists, extract apps users mention by name in discussions.576. **AlternativeTo.net**: Search the closest existing app. Lists adjacent competitors you may have missed.5859For each direct competitor, record:60- Name, platform(s), pricing model and price61- Estimated user base (from App Store ratings count × 50–100, or from market_insights narrative)62- App Store rating (stars + review count)63- Last updated date (stale = opportunity)64- Top 3 features65- Top 3 complaints (from review mining — see Step 3)6667#### Indirect competitors (find 2–5)6869Ask: "What else might someone use to solve the same underlying problem, even if the approach is completely different?"7071Sources:72- Reddit threads where users describe their current workflow for this problem73- "How to [solve problem]" search results — the solutions that appear ARE the indirect competition74- Market insights narratives that describe alternative approaches to the same pain7576#### Substitutes (find 2–4)7778Ask: "What is the user doing RIGHT NOW, before they know this app exists?"7980Common substitute categories:81- **Manual process**: Spreadsheet, notes app, pen-and-paper, calendar reminders82- **Human service**: Coach, therapist, accountant, personal trainer83- **Social workaround**: Group chat, Facebook group, Discord server84- **Inaction**: Doing nothing (this is the strongest competitor for low-urgency problems)8586Record the estimated cost and friction of each substitute — this is the switching-cost baseline the app must beat.8788#### Emerging threats (find 1–3)8990Sources:91- Product Hunt launches in the past 6 months92- YC / startup accelerator demo day lists93- Apple WWDC / Google I/O feature announcements that could obviate the app94- If `trend_velocity` = "rising-fast" in market_insights, note that new entrants are likely9596Flag any emerging competitor that has raised funding — they have resources to move fast.9798### Step 2 — App Store Search Methodology99100The App Store is the most important research surface for B2C apps. Use this systematic approach:1011021. **Primary keyword search**: The most obvious term a user would search (e.g., "habit tracker").1032. **Problem keyword search**: The problem statement (e.g., "build better habits").1043. **Audience keyword search**: The target user + need (e.g., "ADHD planner").1054. **Adjacent keyword search**: Related but broader terms (e.g., "daily routine", "productivity").106107For each search, record:108- Number of results that are clearly relevant (not spam/unrelated)109- Rating and review count of the top 3 results110- Whether the top result has > 50K ratings (signals an entrenched incumbent)111- Date of last update for top 5 results (stale apps = opportunity to displace)112113### Step 3 — Review Mining for Positioning Gaps114115Competitor reviews are the richest source of positioning gaps. Mine them systematically:116117#### 1-star reviews (frustration signals)118119These reveal what users hate about existing solutions. Look for patterns:120- Bugs and reliability complaints (opportunity: "the one that actually works")121- Missing features that users expected (opportunity: build the feature they want)122- Pricing complaints (opportunity: better value or different model)123- Privacy/data concerns (opportunity: privacy-first positioning)124- UX complexity complaints (opportunity: simpler alternative)125126#### 3-star reviews (unmet expectation signals)127128These are often more valuable than 1-star reviews. 3-star reviewers liked the app enough to keep using it but something important is missing:129- "Great app BUT..." — the "but" is the positioning gap130- "Would be perfect IF..." — the "if" is the feature opportunity131- "Works for X but not for Y" — the "Y" is the underserved segment132133#### 5-star reviews (what's defensible)134135Read competitor 5-star reviews to understand what they do well. These strengths are hard to compete against directly — don't try. Instead, find the **orthogonal angle** that the incumbent's strength doesn't cover.136137#### Mining process138139For each direct competitor (top 3–5):1401. Read the 20 most recent 1-star reviews1412. Read the 20 most recent 3-star reviews1423. Read 10 recent 5-star reviews1434. Categorize complaints into themes (max 5 themes per competitor)1445. Identify the **most common complaint shared across 2+ competitors** — this is the strongest gap signal145146### Step 4 — Positioning Gap Analysis147148A positioning gap is a real user need that no current competitor serves well. Classify each gap:149150| Gap type | Description | Defensibility |151|---|---|---|152| **Audience gap** | No competitor targets this specific user segment | Medium — easy to copy if proven |153| **Feature gap** | A commonly requested feature that no competitor has built | Low — incumbents can add it |154| **Experience gap** | Existing solutions work but the UX is painful | Medium — hard for bloated incumbents to simplify |155| **Price gap** | All competitors are expensive; a free or cheap alternative would win | Low — race to the bottom |156| **Philosophy gap** | Existing solutions have a fundamentally different worldview (e.g., "gamified" vs. "minimalist") | High — incumbents can't pivot their core identity |157| **Platform gap** | No good solution exists on a specific platform (e.g., iOS-only need, Apple Watch, visionOS) | Medium — temporary, but first-mover advantage is real |158| **Trust gap** | Users don't trust existing solutions (privacy, data ownership, ads) | High — trust is hard to build retroactively |159160Prioritize **philosophy gaps** and **trust gaps** — these are the hardest for incumbents to copy and the most defensible for an indie developer.161162### Step 5 — Market Saturation Scoring163164Saturation reflects how crowded the space is and how difficult it will be to get noticed.165166| Factor | Low (1 pt) | Medium (2 pts) | High (3 pts) |167|---|---|---|---|168| **Direct competitor count** | 0–2 relevant apps | 3–6 relevant apps | 7+ relevant apps |169| **Incumbent dominance** | No app has > 10K ratings | 1–2 apps have 10K–100K ratings | An app has > 100K ratings |170| **Funding in space** | No funded competitors | 1–2 funded startups | Multiple funded companies or a FAANG player |171| **App Store keyword saturation** | Primary keywords show few relevant results | Moderate results, some quality variance | Top results are all high-quality, well-maintained apps |172| **Content saturation** | Few "best X apps" articles exist | Some articles, moderate SEO competition | Many SEO-optimized listicles, hard to rank |173174**Total score** (5–15 points):175176| Total | Saturation level |177|---|---|178| 5–7 | **low** — Blue ocean. Few competitors, clear opportunity to establish position. |179| 8–11 | **medium** — Competitive but gaps exist. Success requires clear differentiation. |180| 12–15 | **high** — Red ocean. Dominated by well-funded or well-established players. Indie success requires a genuinely novel angle or underserved niche. |181182## Output183184Write to `memory/ideas/<slug>/competitors.json`:185186```json187{188 "direct_competitors": [189 {190 "name": "",191 "platform": "",192 "estimated_users": "",193 "app_store_rating": 0,194 "review_count": 0,195 "last_updated": "",196 "pricing": "",197 "pricing_model": "",198 "top_features": [],199 "top_complaints": [],200 "complaint_themes": [],201 "distribution_channels_observed": []202 }203 ],204 "indirect_competitors": [205 {206 "name": "",207 "approach": "",208 "why_users_choose_it": ""209 }210 ],211 "substitutes": [212 {213 "description": "",214 "cost": "",215 "friction_level": "low | medium | high",216 "switching_cost_to_app": ""217 }218 ],219 "emerging_threats": [220 {221 "name": "",222 "stage": "beta | launched | announced",223 "funded": false,224 "threat_level": "low | medium | high",225 "notes": ""226 }227 ],228 "review_mining_summary": {229 "most_common_complaint_across_competitors": "",230 "strongest_gap_signal": "",231 "competitors_mined": 0232 },233 "positioning_gaps": [234 {235 "gap_type": "audience | feature | experience | price | philosophy | platform | trust",236 "description": "",237 "defensibility": "low | medium | high",238 "evidence": ""239 }240 ],241 "saturation_score": {242 "direct_competitor_count": 0,243 "incumbent_dominance": 0,244 "funding_in_space": 0,245 "keyword_saturation": 0,246 "content_saturation": 0,247 "total": 0248 },249 "market_saturation": "low | medium | high",250 "differentiation_opportunities": [],251 "market_insights_sources_used": []252}253```254255## Notes256257- The `most_common_complaint_across_competitors` from review mining is one of the highest-signal data points in the entire validation system. If the same complaint appears in 3+ competitor review sets, it's a validated pain point — the market is telling you what to build.258- `distribution_channels_observed` for each competitor helps downstream skills (distribution-analysis, cac-modeler) understand which channels actually work in this category.259- If market_insights show `trend_velocity` = "rising-fast", note in `emerging_threats` that the competitor landscape will shift quickly. Rising markets attract builders.260- Substitutes with `friction_level` = "low" are the hardest to displace — if doing nothing or using a spreadsheet is easy enough, the app must provide dramatically more value to justify the download.