
Competitive Cartographer
- 127 installs
- 178 repo stars
- Updated July 14, 2026
- erichowens/some_claude_skills
Map rival products, feature matrices, pricing tiers, and positioning gaps when exploring a new SaaS, marketplace, or content product concept.
About
Helps Claude chart the competitive landscape for a new venture: identify direct and indirect rivals, compare capabilities and pricing, visualize positioning maps, and surface differentiation opportunities to inform product strategy and validation plans.
- Competitor inventory and segmentation
- Feature and pricing comparison grids
- Positioning and ICP overlap analysis
- Whitespace and moat hypotheses
- Source-linked research summaries
Competitive Cartographer by the numbers
- 127 all-time installs (skills.sh)
- Ranked #1,261 of 3,282 Productivity & Planning skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/erichowens/some_claude_skills --skill competitive-cartographerAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 127 |
|---|---|
| repo stars | ★ 178 |
| Last updated | July 14, 2026 |
| Repository | erichowens/some_claude_skills ↗ |
What it does
Map rival products, feature matrices, pricing tiers, and positioning gaps when exploring a new SaaS, marketplace, or content product concept.
Files
Competitive Cartographer
A strategic analyst who maps competitive spaces to reveal positioning opportunities, white space, and differentiation strategies. Creates "you are here" maps in crowded markets.
Quick Start
User: "How do I stand out as a senior frontend engineer?"
Cartographer:
1. Define space: "Professional portfolios for senior frontend engineers"
2. Identify players:
- Direct: Other senior frontend engineers in similar tech stacks
- Adjacent: Full-stack engineers, design engineers
- Aspirational: Apple's minimal aesthetic
3. Map on axes: Technical Depth (x) vs Design Polish (y)
4. Find white space: High tech + high design (rare combination)
5. Recommend positioning: "Engineer who thinks like a designer"Key principle: Don't just list competitors - map them spatially to reveal positioning opportunities.
When to Use
Use when:
- User asks "how do I stand out?" or "what makes me different?"
- Launching product/service and need positioning strategy
- Feeling lost in crowded market
- Considering pivot or repositioning
Do NOT use when:
- User needs market size or TAM estimates
- Financial projections or fundraising strategy
- Specific feature-by-feature comparison
- User already has clear positioning
The 6-Step Process
| Step | Action |
|---|---|
| 1. Define Space | Domain, user's offer, background, goals |
| 2. Identify Players | Direct, adjacent, aspirational competitors |
| 3. Analyze Positioning | Extract taglines, visual strategy, content strategy |
| 4. Create Map | Plot on 2D axes, identify clusters |
| 5. Find White Space | Viable, defensible, sustainable, aligned gaps |
| 6. Recommend Strategy | Headline, differentiators, visual/content direction |
Common Anti-Patterns
Me-Too Positioning
| What it looks like | Why it's wrong |
|---|---|
| "We're like Airbnb but for X" | Invites comparison where you'll lose |
| Instead: Find unique angle that makes comparison irrelevant |
Swiss Army Knife Syndrome
| What it looks like | Why it's wrong |
|---|---|
| "We do everything for everyone" | In crowded markets, specialists beat generalists |
| Instead: Pick one thing you'll be known for |
Feature Parity Race
| What it looks like | Why it's wrong |
|---|---|
| "All competitor features plus one more" | Mature competitors will always out-feature you |
| Instead: Different approach/philosophy, not more features |
Ignoring Your Constraints
| What it looks like | Why it's wrong |
|---|---|
| Positioning as enterprise when solo founder | Can't deliver on promise, credibility destroyed |
| Instead: Position where constraints become advantages ("boutique", "founder-led") |
Types of White Space
| Type | Example |
|---|---|
| Intersection | "Technical depth + warm personality" (most pick one) |
| Under-served Audience | "Mid-market companies" (everyone targets enterprise or startups) |
| Contrarian | "Slow and thoughtful" (when everyone races to launch fast) |
Best Practices
Start with User, Not Market 1. What's genuinely unique about user? 2. What do they do better than anyone? 3. What do they want to be known for? 4. Then find where that fits in competitive landscape
Be Ruthlessly Honest
- Point out crowded positioning
- Identify genuine weaknesses
- Recommend against poor strategic fit
Provide Evidence
- "Here are 15 portfolios using exact same layout"
- "Here are 8 products with nearly identical taglines"
- "Here's how competitors cluster around this position"
Reference Files
| File | Contents |
|---|---|
references/mapping-process.md | Detailed 6-step methodology, TypeScript interfaces, axis pairs |
references/domain-positioning.md | Portfolio, SaaS, consulting-specific positioning + examples |
references/troubleshooting.md | Common issues, validation methods, best practices checklist |
Integration with Other Skills
| Skill | Integration |
|---|---|
| design-archivist | Visual pattern database informs differentiation strategy |
| vibe-matcher | Translate positioning into emotional/visual direction |
| career-biographer | Competitive context informs personal brand positioning |
---
Transform competitive chaos into strategic clarity.
Changelog
[2.0.0] - 2024-12-XX
Changed
- SKILL.md restructured for progressive disclosure (407 → ~125 lines)
- TypeScript interfaces and examples extracted to reference files
Added
references/mapping-process.md- Detailed 6-step methodology, CompetitorProfile/CompetitiveMap interfaces, dimension pairsreferences/domain-positioning.md- Portfolio, SaaS, consulting-specific positioning strategies with example mapsreferences/troubleshooting.md- Common issues (no white space, user resists differentiation), validation methods- 6-step process summary table
- Types of white space (intersection, under-served audience, contrarian)
Migration Guide
- No changes to frontmatter or activation triggers
- Full example competitive maps now in domain-positioning.md
- Troubleshooting guide provides solutions to common blockers
Domain-Specific Positioning
Different domains have different positioning dynamics.
Professional Portfolios
Common Positions (Crowded)
- "Full-stack engineer with X years experience"
- "Passionate about clean code"
- "Blockchain/AI/ML specialist"
White Space Opportunities
- "Engineer who explains technical decisions to non-technical stakeholders"
- "Specialist in legacy system modernization"
- "Technical leader who builds teams, not just code"
Example Map
User: Senior frontend engineer, 8 years experience, strong design sense
Axes:
- X: Technical Depth (Low → High)
- Y: Design Polish (Functional → Beautiful)
Findings:
- Cluster 1 (high tech, low design): Backend engineers, functional portfolios
- Cluster 2 (low tech, high design): Designers with code, beautiful but shallow
- White space: High tech + high design (rare combination)
Recommended Positioning:
"Engineer who thinks like a designer - deep technical expertise with an eye for aesthetics."
Differentiation tactics:
- Visual: Showcase code AND design process
- Content: Write about intersection of engineering and UX
- Projects: Highlight both technical architecture and user experience
---
SaaS Products
Common Positions (Crowded)
- "The simple alternative to [big competitor]"
- "All-in-one platform for [broad category]"
- "AI-powered [generic tool]"
White Space Opportunities
- "Opinionated tool that does one thing perfectly"
- "Premium tier of [commodity category]"
- "Integration layer between [specific tools]"
Example Map
User: Task management tool for remote teams
Axes:
- X: Simplicity (Minimal → Feature-rich)
- Y: Integration (Standalone → Hub)
Findings:
- Cluster 1: Simple, standalone (Todoist, Things)
- Cluster 2: Feature-rich, standalone (Asana, Monday)
- Cluster 3: Feature-rich, hub (Notion, ClickUp)
- White space: Simple + hub (minimal UI but connects everything)
Recommended Positioning:
"The calm center of your workflow chaos - simple task management that connects your entire toolkit."
Differentiation tactics:
- Features: Deep integrations, minimal interface
- Messaging: Anti-feature-bloat, pro-integration
- Visual: Clean, spacious UI that fades into background
---
Consulting/Freelance Services
Common Positions (Crowded)
- "Full-service agency"
- "Affordable freelancer"
- "10+ years experience"
White Space Opportunities
- "Specialist in [specific vertical/problem]"
- "Productized service with fixed scope"
- "Teaching/training alongside delivery"
---
Positioning Evolution Timeline
| Era | Positioning Trend |
|---|---|
| 2000-2010 | Features Race - "we have 47 features!" |
| 2010-2015 | Simple Alternative - "Simpler than [big competitor]" |
| 2015-2020 | All-in-One - "Replace 10 tools with one" |
| 2020-Present | Specialization - "We do one thing better than anyone" |
Warning: Generic "AI-powered" positioning is 2023's "blockchain-powered" - avoid unless AI is genuinely core differentiator.
Competitive Mapping Process
Detailed methodology for mapping competitive landscapes.
Step 1: Define the Space
Clarify the competitive landscape to map:
| Question | Examples |
|---|---|
| Domain | Portfolio sites? SaaS products? Consulting services? |
| User's offer | What are they selling/showcasing? |
| User's background | Strengths, constraints, unique assets |
| Goals | Brand awareness? Lead generation? Thought leadership? |
Step 2: Identify Players
Find three types of competitors:
Direct Competitors
Same domain, same audience, same offering
- Portfolio: Other senior engineers in same tech stack
- SaaS: Other project management tools for design teams
- Service: Other freelance designers in same city
Adjacent Competitors
Nearby domains, overlapping audience
- Portfolio: Engineers in adjacent stacks, designers with similar aesthetic
- SaaS: Adjacent tools (time tracking, team chat) that solve related problems
- Service: Agencies or in-house teams user competes against for work
Aspirational References
Different domain but desired positioning/vibe
- Portfolio: Apple's minimal aesthetic (though not a portfolio)
- SaaS: Notion's community-driven growth (though different product)
- Service: Patagonia's values-driven brand (though different industry)
Step 3: Analyze Positioning
For each competitor, extract:
interface CompetitorProfile {
name: string;
url: string;
positioning: {
tagline: string; // How they describe themselves
primaryMessage: string; // Main value prop
differentiation: string; // How they claim to be different
};
visualStrategy: {
aestheticStyle: string; // Minimal, maximal, corporate, edgy
colorPalette: string[];
typography: string;
layout: string;
};
contentStrategy: {
tone: string; // Professional, casual, technical, friendly
depth: string; // Surface-level or deep technical content
focus: string; // Process, results, personality, credentials
};
strengths: string[];
weaknesses: string[];
audience: string;
}Step 4: Create Competitive Map
Plot competitors on 2D space using strategic dimensions.
Common Dimension Pairs
| Pair | Best For |
|---|---|
| Technical depth ↔ Accessibility | Portfolios |
| Feature-rich ↔ Simple | Products |
| Enterprise ↔ Individual | Tools |
| Conservative ↔ Innovative | Agencies |
| Low-touch ↔ High-touch | Services |
Map Structure
interface CompetitiveMap {
axes: {
x: { name: string; low: string; high: string };
y: { name: string; low: string; high: string };
};
players: Array<{
name: string;
position: { x: number; y: number }; // 0-100 scale
size?: number; // Optional: market presence
}>;
clusters: Array<{
name: string;
members: string[];
characteristics: string;
}>;
whiteSpace: Array<{
position: { x: number; y: number };
description: string;
why: string;
}>;
}Step 5: Identify White Space
Criteria for Good White Space
| Criterion | Question |
|---|---|
| Viable | Does target audience exist and is reachable? |
| Defensible | Does user have unique advantage to claim this space? |
| Sustainable | Is it a lasting gap, not temporary? |
| Aligned | Does it match user's strengths and goals? |
Types of White Space
Intersection Spaces
- "Technical depth + warm personality" (most engineers pick one)
- "Enterprise features + indie pricing"
- "Conservative trust + innovative approach"
Under-served Audiences
- "Mid-market companies" (everyone targets enterprise or startups)
- "Non-technical founders"
- "Legacy system maintainers"
Contrarian Positions
- "Slow and thoughtful" (when everyone races to launch fast)
- "Expensive and exclusive" (when market races to bottom)
- "Opinionated and prescriptive" (when everyone offers flexibility)
Step 6: Strategic Recommendations
interface Strategy {
positioning: {
headline: string; // One-line positioning statement
differentiators: string[];
messaging: string;
};
visualStrategy: {
aestheticDirection: string;
avoid: string[]; // Crowded visual patterns
embrace: string[]; // Underutilized patterns
};
contentStrategy: {
topics: string[];
tone: string;
depth: string;
};
risks: string[];
validation: string[];
}Validation Questions
Before finalizing, check: 1. Credible? Can user actually deliver on this positioning? 2. Memorable? Will people remember how user is different? 3. Defensible? Can user protect this from copycats? 4. Sustainable? Will this work long-term? 5. Authentic? Does it match user's genuine strengths?
Troubleshooting Guide
Common issues when doing competitive mapping and positioning.
Issue: Can't Find Any White Space
Cause: Market is genuinely saturated OR looking at wrong dimensions
Fixes: 1. Zoom out to adjacent categories 2. Zoom in to micro-niches 3. Try different axis pairs for mapping 4. Consider positioning on intangibles (values, personality, process)
---
Issue: User Resists Differentiation
Example: "But I can do everything they do!"
Fix: Explain positioning vs capability.
You can DO many things, but you're KNOWN for one thing. Choose what you want to be known for.
The goal isn't to limit what you offer - it's to create a memorable first impression that gets you in the door.
---
Issue: White Space Has No Audience
Example: Found gap but no one wants that position
Fix: Validate before committing.
White space can be empty because:
- It's genuinely overlooked (opportunity!)
- It's bad space no one wants (trap!)
Validation methods:
- Search for content/discussions in that space
- Look for failed attempts to occupy that space
- Ask potential audience if they'd value that positioning
---
Issue: Recommended Positioning Feels Inauthentic
Example: Strategy is sound but doesn't match user's personality
Fix: Positioning must be authentic.
Don't force a positioning that doesn't fit who you actually are. Instead: 1. Start with user's genuine strengths and values 2. Find white space that aligns with those 3. If no alignment exists, look at different competitive dimensions
---
Issue: Too Many Competitors to Map
Example: 50+ players in the space
Fix: Tier and filter.
1. Primary (5-8): Direct competitors user most often loses to 2. Secondary (10-15): Adjacent players worth watching 3. Aspirational (3-5): Reference points for positioning
Map primary tier in detail; note secondary and aspirational for context.
---
Issue: Competitors Keep Shifting Position
Example: Market moving too fast to map
Fix: Map trends, not just current state.
- Where are competitors moving TO?
- What positions are being abandoned?
- What new entrants are claiming?
The valuable white space is often where the market is heading, not where it currently is.
---
Issue: User's Positioning Gets Copied
Example: Differentiation works but competitors follow
Fix: Build defensible positioning.
Defensibility sources:
- Expertise: Deep specialization that takes years to build
- Community: Network effects around your position
- Track record: Portfolio of proof that compounds
- Personality: Your unique voice can't be copied
If positioning is purely visual or message-based, it will be copied. Build substance behind it.
---
Best Practices Checklist
Start with User, Not Market
1. What's genuinely unique about user? 2. What do they do better than anyone? 3. What do they want to be known for? 4. Then find where that fits in competitive landscape
Be Ruthlessly Honest
- Point out when user's desired positioning is crowded
- Identify genuine weaknesses vs competitors
- Recommend against poor strategic fit
- Better to surface hard truths early
Provide Evidence
Don't just say "this space is crowded" - show specific examples:
- "Here are 15 portfolios using exact same layout"
- "Here are 8 products with nearly identical taglines"
- "Here's how competitors cluster around this position"
Think Long-Term
- Will this positioning still work in 2-3 years?
- Is it defensible or easily copied?
- Does it allow room to grow/evolve?
#!/bin/bash
# Validation script for Competitive Cartographer outputs
# Checks that competitive map contains proper structure and actionable strategy
set -e
if [ $# -eq 0 ]; then
echo "Usage: $0 <competitive_map.json>"
exit 1
fi
MAP_FILE="$1"
if [ ! -f "$MAP_FILE" ]; then
echo "Error: File '$MAP_FILE' not found"
exit 1
fi
echo "Validating Competitive Map: $MAP_FILE"
# Check if file is valid JSON
if ! jq empty "$MAP_FILE" 2>/dev/null; then
echo "❌ Invalid JSON format"
exit 1
fi
# Required top-level fields
REQUIRED_FIELDS=("axes" "players" "clusters" "whiteSpace")
for field in "${REQUIRED_FIELDS[@]}"; do
if ! jq -e ".$field" "$MAP_FILE" > /dev/null 2>&1; then
echo "❌ Missing required field: $field"
exit 1
fi
done
# Validate axes structure
if ! jq -e '.axes | .x, .y' "$MAP_FILE" > /dev/null 2>&1; then
echo "❌ axes field missing x or y axis"
exit 1
fi
if ! jq -e '.axes.x | .name, .low, .high' "$MAP_FILE" > /dev/null 2>&1; then
echo "❌ x axis missing required fields (name, low, high)"
exit 1
fi
# Validate players
PLAYER_COUNT=$(jq '.players | length' "$MAP_FILE")
if [ "$PLAYER_COUNT" -lt 3 ]; then
echo "⚠️ Warning: Only $PLAYER_COUNT players mapped (minimum recommended: 3)"
fi
# Check first player has required fields
if [ "$PLAYER_COUNT" -gt 0 ]; then
if ! jq -e '.players[0] | .name, .position' "$MAP_FILE" > /dev/null 2>&1; then
echo "❌ Players missing required fields (name, position)"
exit 1
fi
if ! jq -e '.players[0].position | .x, .y' "$MAP_FILE" > /dev/null 2>&1; then
echo "❌ Player position missing x or y coordinate"
exit 1
fi
fi
# Validate clusters
CLUSTER_COUNT=$(jq '.clusters | length' "$MAP_FILE")
if [ "$CLUSTER_COUNT" -eq 0 ]; then
echo "⚠️ Warning: No clusters identified"
fi
# Validate white space opportunities
WHITESPACE_COUNT=$(jq '.whiteSpace | length' "$MAP_FILE")
if [ "$WHITESPACE_COUNT" -eq 0 ]; then
echo "❌ No white space opportunities identified - competitive map must identify positioning opportunities"
exit 1
fi
# Check white space has proper structure
if ! jq -e '.whiteSpace[0] | .position, .description, .why' "$MAP_FILE" > /dev/null 2>&1; then
echo "❌ White space missing required fields (position, description, why)"
exit 1
fi
echo "✅ Competitive Map validation passed"
echo " - Players mapped: $PLAYER_COUNT"
echo " - Clusters identified: $CLUSTER_COUNT"
echo " - White space opportunities: $WHITESPACE_COUNT"
echo " - X-axis: $(jq -r '.axes.x.name' "$MAP_FILE")"
echo " - Y-axis: $(jq -r '.axes.y.name' "$MAP_FILE")"