@veyralabs/skills 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,10 +1,14 @@
1
1
  # VeyraSkills
2
2
 
3
- Skills for Claude Code and other AI coding agents. Each skill is a plain text file that teaches your agent a specialized workflow — naming, branding, website cloning, and more.
3
+ ![8 skills](https://img.shields.io/badge/skills-8-blue) ![npm](https://img.shields.io/npm/v/@veyralabs/skills) ![license](https://img.shields.io/badge/license-MIT-green)
4
+
5
+ Skills for Claude Code and other AI coding agents. Each skill is a plain text file that teaches your agent a specialized workflow - naming, branding, website cloning, Shopify development, and more.
4
6
 
5
7
  ```bash
6
8
  npx @veyralabs/skills install naming-suite
7
9
  npx @veyralabs/skills install webcloner
10
+ npx @veyralabs/skills install shopify-suite
11
+ npx @veyralabs/skills install venture-suite
8
12
  ```
9
13
 
10
14
  Or install everything at once:
@@ -30,6 +34,25 @@ Four skills for naming products, auditing brands, mapping competitors, and build
30
34
 
31
35
  Works best in sequence: run `competitornames` to understand the landscape, then `domainforge` to generate names that stand out from it.
32
36
 
37
+ ### shopify-suite
38
+
39
+ Two skills covering the full Shopify stack - one for developers building themes and apps, one for merchants auditing and optimizing stores.
40
+
41
+ | Skill | What it does |
42
+ |-------|-------------|
43
+ | [shopify-dev](./skills/shopify-suite/shopify-dev/SKILL.md) | Shopify development across all layers: Liquid themes, JSON templates, app development with Remix, Storefront and Admin API, CLI workflows, checkout extensions, Hydrogen. Fetches live Shopify documentation via Context7 before answering version-sensitive questions |
44
+ | [shopify-store](./skills/shopify-suite/shopify-store/SKILL.md) | Store audit and optimization. Works in two modes: Mode A uses shopify-mcp to read real store data (products, orders, apps, metafields); Mode B uses public extraction when MCP is not available. Audits 6 dimensions: catalog health, collection architecture, navigation, SEO, app stack, conversion signals |
45
+
46
+ ### venture-suite
47
+
48
+ Research a startup or SaaS idea before building. Collects evidence from HN, Reddit, GitHub, and web searches - no API keys required.
49
+
50
+ | Skill | What it does |
51
+ |-------|-------------|
52
+ | [venture-analyst](./skills/venture-suite/venture-analyst/SKILL.md) | Four-phase idea validation: problem discovery (evidence from real sources), competitor intelligence (pricing, gaps, weaknesses), validation experiments (Mom Test, fake door, concierge MVP), and a Bull/Bear/Judge verdict with confidence score |
53
+
54
+ Includes Python scripts for zero-key data collection and auto-detection of available enhancements (SearXNG via Docker, optional API keys). All methodology references included: Lean Startup, Customer Development, Mom Test, Blue Ocean Strategy, Traction.
55
+
33
56
  ### webcloner
34
57
 
35
58
  Clone any landing page, marketing site, portfolio, or ecommerce storefront into a pixel-accurate Next.js replica.
@@ -51,6 +74,11 @@ Works for landings, marketing sites, portfolios, and ecommerce product pages. No
51
74
  ```bash
52
75
  npx @veyralabs/skills install naming-suite
53
76
  npx @veyralabs/skills install webcloner
77
+ npx @veyralabs/skills install shopify-suite
78
+ npx @veyralabs/skills install shopify-dev
79
+ npx @veyralabs/skills install shopify-store
80
+ npx @veyralabs/skills install venture-suite
81
+ npx @veyralabs/skills install venture-analyst
54
82
  npx @veyralabs/skills install domainforge
55
83
  ```
56
84
 
@@ -109,14 +137,14 @@ npx @veyralabs/skills install domainforge
109
137
  ## Coming soon
110
138
 
111
139
  **brand-suite**
112
- - `brandvoice` tone of voice guide generator
113
- - `brandpositioning` positioning statement and competitive differentiation
114
- - `taglineforge` tagline generation with scoring
140
+ - `brandvoice` - tone of voice guide generator
141
+ - `brandpositioning` - positioning statement and competitive differentiation
142
+ - `taglineforge` - tagline generation with scoring
115
143
 
116
144
  **gtm-suite**
117
- - `icp` Ideal Customer Profile builder
118
- - `pricingstrategy` pricing model analysis
119
- - `gtmplan` go-to-market plan generator
145
+ - `icp` - Ideal Customer Profile builder
146
+ - `pricingstrategy` - pricing model analysis
147
+ - `gtmplan` - go-to-market plan generator
120
148
 
121
149
  ---
122
150
 
@@ -126,6 +154,11 @@ Each skill is also published as a standalone npm package if you only want one:
126
154
 
127
155
  - `@veyralabs/naming-suite`
128
156
  - `@veyralabs/webcloner`
157
+ - `@veyralabs/shopify-suite`
158
+ - `@veyralabs/shopify-dev`
159
+ - `@veyralabs/shopify-store`
160
+ - `@veyralabs/venture-suite`
161
+ - `@veyralabs/venture-analyst`
129
162
 
130
163
  ---
131
164
 
package/bin/cli.js CHANGED
@@ -4,10 +4,18 @@
4
4
  const fs = require('fs');
5
5
  const path = require('path');
6
6
  const os = require('os');
7
+ const { execFileSync } = require('child_process');
7
8
 
8
9
  const SKILLS_DIR = path.join(__dirname, '..', 'skills');
9
10
  const COMMANDS_DIR = path.join(__dirname, '..', 'commands');
10
11
 
12
+ // pip packages required per skill
13
+ const SKILL_PIP_DEPS = {
14
+ 'shopify-store': ['scrapling'],
15
+ 'webcloner': ['scrapling'],
16
+ 'venture-analyst': ['scrapling', 'ddgs', 'trendspyg', 'requests'],
17
+ };
18
+
11
19
  const AGENT_PATHS = {
12
20
  claude: { local: '.claude/skills', global: '.claude/skills' },
13
21
  cursor: { local: '.cursor/skills', global: '.cursor/skills' },
@@ -78,6 +86,31 @@ function copySkill(name, skillPath, dest) {
78
86
  console.log(` ✓ ${name}`);
79
87
  }
80
88
 
89
+ function installPipDeps(skillNames) {
90
+ const pkgs = [...new Set(skillNames.flatMap(n => SKILL_PIP_DEPS[n] || []))];
91
+ if (pkgs.length === 0) return;
92
+
93
+ let pip = null;
94
+ for (const cmd of ['pip3', 'pip']) {
95
+ try { execFileSync(cmd, ['--version'], { stdio: 'ignore' }); pip = cmd; break; } catch {}
96
+ }
97
+
98
+ if (!pip) {
99
+ console.log(` ⚠ Python pip not found. Install manually: pip install ${pkgs.join(' ')}`);
100
+ return;
101
+ }
102
+
103
+ for (const pkg of pkgs) {
104
+ try {
105
+ console.log(` Installing Python dependency: ${pkg}...`);
106
+ execFileSync(pip, ['install', pkg, '-q'], { stdio: 'inherit' });
107
+ console.log(` ✓ ${pkg}`);
108
+ } catch {
109
+ console.log(` ⚠ Failed to install ${pkg}. Run: ${pip} install ${pkg}`);
110
+ }
111
+ }
112
+ }
113
+
81
114
  // Copy slash commands — Claude Code only (.claude/commands/)
82
115
  function copyCommands(agent, isGlobal) {
83
116
  if (agent !== 'claude') return;
@@ -170,6 +203,7 @@ if (command === 'install') {
170
203
  console.log(`\nInstalling into ${dest} [${agent}/${scope}]\n`);
171
204
  toInstall.forEach(name => copySkill(name, skills[name], dest));
172
205
  copyCommands(agent, isGlobal);
206
+ installPipDeps(toInstall);
173
207
  console.log('\nDone. Restart your agent to activate skills.\n');
174
208
  process.exit(0);
175
209
  }
@@ -0,0 +1,16 @@
1
+ Activate the venture-analyst skill. Task: $ARGUMENTS
2
+
3
+ Read the full skill at skills/venture-suite/venture-analyst/SKILL.md before doing anything else.
4
+
5
+ Then run the 4 phases in order:
6
+
7
+ 1. Problem Discovery - collect evidence from HN, Reddit, GitHub, trends using scripts/sources.py
8
+ 2. Competitor Intelligence - map the landscape using scripts/scraper.py and sources
9
+ 3. Validation Experiments - generate prioritized experiments using scripts/experiments.py
10
+ 4. Verdict - Bull case, Bear case, Judge verdict using the scoring system in SKILL.md
11
+
12
+ Start by detecting environment enhancements silently (scripts/enhance_detect.py) and use the best available search method without asking the user for any API keys.
13
+
14
+ If the user did not specify the idea clearly, ask one question: "What's the idea, and who is it for?"
15
+
16
+ Output the full verdict using templates/verdict.md as structure.
package/install.sh CHANGED
@@ -114,6 +114,38 @@ check_deps() {
114
114
  fi
115
115
  }
116
116
 
117
+ # Skills that require Python packages: skill_name -> pip packages (space-separated)
118
+ declare -A SKILL_PIP_DEPS=(
119
+ ["shopify-store"]="scrapling"
120
+ ["webcloner"]="scrapling"
121
+ ["venture-analyst"]="scrapling ddgs trendspyg requests"
122
+ )
123
+
124
+ install_pip_deps() {
125
+ local skill="$1"
126
+ local pkgs="${SKILL_PIP_DEPS[$skill]:-}"
127
+ [[ -z "$pkgs" ]] && return
128
+
129
+ local pip=""
130
+ for cmd in pip3 pip; do
131
+ command -v "$cmd" &>/dev/null && pip="$cmd" && break
132
+ done
133
+
134
+ if [[ -z "$pip" ]]; then
135
+ echo " Warning: pip not found. Install manually: pip install $pkgs"
136
+ return
137
+ fi
138
+
139
+ for pkg in $pkgs; do
140
+ echo " Installing Python dependency: $pkg..."
141
+ if "$pip" install "$pkg" -q; then
142
+ echo " ✓ $pkg"
143
+ else
144
+ echo " Warning: failed to install $pkg. Run: $pip install $pkg"
145
+ fi
146
+ done
147
+ }
148
+
117
149
  install_skill() {
118
150
  local skill="$1"
119
151
  local dest_dir="$2"
@@ -236,11 +268,15 @@ main() {
236
268
  if [[ -n "$SKILL_NAME" ]]; then
237
269
  echo "Installing '$SKILL_NAME' → $dest/"
238
270
  install_skill "$SKILL_NAME" "$dest"
271
+ install_pip_deps "$SKILL_NAME"
239
272
  echo ""
240
273
  echo "Done. ${dest}/${SKILL_NAME}/ is ready."
241
274
  else
242
275
  echo "Installing all skills → $dest/"
243
276
  install_all "$dest"
277
+ for skill in "${!SKILL_PIP_DEPS[@]}"; do
278
+ install_pip_deps "$skill"
279
+ done
244
280
  echo ""
245
281
  echo "Done. All skills installed to ${dest}/"
246
282
  fi
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@veyralabs/skills",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "VeyraSkills — A curated collection of Claude Code skills for founders, developers and AI builders",
5
5
  "bin": {
6
6
  "veyraskills": "bin/cli.js"
@@ -35,7 +35,11 @@
35
35
  "shopify-theme",
36
36
  "shopify-app",
37
37
  "shopify-audit",
38
- "ecommerce"
38
+ "ecommerce",
39
+ "startup-validation",
40
+ "market-research",
41
+ "idea-validation",
42
+ "lean-startup"
39
43
  ],
40
44
  "author": "VeyraLabs <hello@veyralabs.com>",
41
45
  "license": "MIT",
@@ -0,0 +1,269 @@
1
+ ---
2
+ name: venture-analyst
3
+ description: Startup and SaaS idea validation. Researches market evidence, maps competitors, scores viability, and generates concrete validation experiments. Zero API keys required.
4
+ ---
5
+
6
+ # Venture Analyst
7
+
8
+ Research a startup or SaaS idea and determine if it's worth building. No fluff — real evidence from real sources.
9
+
10
+ ## What this does
11
+
12
+ Four phases, each producing structured output:
13
+
14
+ 1. **Problem Discovery** - Find evidence the problem actually exists (Reddit, HN, GitHub issues)
15
+ 2. **Competitor Intelligence** - Map the landscape, find gaps, extract pricing signals
16
+ 3. **Validation Experiments** - Generate 3 prioritized experiments to test demand before building
17
+ 4. **Verdict** - Bull/Bear/Judge debate producing a final recommendation with confidence score
18
+
19
+ ## How to use
20
+
21
+ Describe your idea. Include:
22
+ - What it does (one sentence)
23
+ - Who it's for (target customer)
24
+ - What problem it solves
25
+
26
+ Optional: budget for experiments, market type (B2C/B2B), known competitors.
27
+
28
+ ## Phase 1 — Problem Discovery
29
+
30
+ **Goal:** Find evidence the problem is real and people talk about it unprompted.
31
+
32
+ Use `scripts/sources.py` to collect evidence:
33
+
34
+ ```python
35
+ from scripts.sources import search_hn, search_hn_comments, search_reddit, search_github_issues, get_trends
36
+
37
+ # HN: find discussions, Show HN, Ask HN about the problem space
38
+ hn_stories = search_hn(query, limit=20)
39
+ hn_comments = search_hn_comments(query, min_points=3, limit=30)
40
+
41
+ # Reddit: find complaints, questions, "is there a tool for X" posts
42
+ reddit_posts = search_reddit(query, limit=25, timeframe="year")
43
+
44
+ # GitHub: find feature requests and pain in related tools
45
+ gh_issues = search_github_issues(query, limit=20)
46
+
47
+ # Trends: is interest rising or declining?
48
+ trend_data = get_trends(keyword)
49
+ ```
50
+
51
+ **Synthesize findings:**
52
+
53
+ Look for these signals (strongest first):
54
+ - People spending money on bad solutions (evidence of willingness to pay)
55
+ - Recurring complaints with no good answer
56
+ - "Is there a tool that does X?" posts with many upvotes
57
+ - GitHub issues with many reactions and no resolution
58
+ - Rising trend line
59
+
60
+ Red flags:
61
+ - Zero discussion anywhere — not even a complaint
62
+ - Problem exists but nobody's tried to solve it (often means it's not painful enough)
63
+ - Only a few power users care, not a broad market
64
+
65
+ **Output format:**
66
+ ```
67
+ ## Problem Evidence
68
+
69
+ **Evidence Score:** [0-100] (use calculate_evidence_score())
70
+ **Trend:** [rising/stable/declining/no_data]
71
+
72
+ ### What people say (direct quotes preferred)
73
+ - [Source] "[quote or paraphrase]" — [upvotes/reactions]
74
+
75
+ ### Pain signals
76
+ - [description of signal + source count]
77
+
78
+ ### Gaps found
79
+ - [what existing solutions miss]
80
+ ```
81
+
82
+ ## Phase 2 — Competitor Intelligence
83
+
84
+ **Goal:** Map who's already solving this. Find pricing, positioning gaps, weak points.
85
+
86
+ ```python
87
+ from scripts.scraper import scrape_competitor
88
+ from scripts.sources import search_github_repos, search_web
89
+
90
+ # Find competitors via web and GitHub
91
+ repos = search_github_repos(f"{idea} tool", limit=8)
92
+ web_results = search_web(f"{idea} software alternatives", limit=8)
93
+
94
+ # Scrape each competitor's pricing + positioning
95
+ for url in competitor_urls:
96
+ data = scrape_competitor(url)
97
+ # data has: title, tagline, description, pricing, features, tech_stack
98
+ ```
99
+
100
+ **Competitive map structure:**
101
+ ```
102
+ | Name | Pricing | Target | Weakness | Stars |
103
+ |------|---------|--------|----------|-------|
104
+ | X | $49/mo | SMBs | No API | 2.1k |
105
+ ```
106
+
107
+ **Gaps to look for:**
108
+ - Price ceiling: is there a tier missing?
109
+ - Audience gap: power users vs beginners vs enterprise
110
+ - Feature gap: what do G2/Reddit reviews complain about?
111
+ - Distribution gap: who's not in a specific channel?
112
+
113
+ **G2 reviews (when Playwright available):**
114
+ ```python
115
+ from scripts.scraper import scrape_g2_reviews
116
+ reviews = scrape_g2_reviews("https://www.g2.com/products/[product]/reviews")
117
+ # Check for recurring "cons" patterns
118
+ ```
119
+
120
+ **Output format:**
121
+ ```
122
+ ## Competitor Map
123
+
124
+ ### Direct competitors
125
+ [table]
126
+
127
+ ### Indirect / adjacent
128
+ [list with one-line descriptions]
129
+
130
+ ### Market gaps
131
+ - Gap 1: [description + evidence]
132
+ - Gap 2: [description + evidence]
133
+
134
+ ### Pricing landscape
135
+ - Range: [$X - $Y/month]
136
+ - Free tier pattern: [present/absent]
137
+ - Typical model: [seat/flat/usage]
138
+ ```
139
+
140
+ ## Phase 3 — Validation Experiments
141
+
142
+ **Goal:** Before writing code, find out if people will actually pay.
143
+
144
+ ```python
145
+ from scripts.experiments import generate_experiments, format_experiment_output
146
+
147
+ experiments = generate_experiments(
148
+ idea=idea,
149
+ target_customer=target,
150
+ market_type="b2b", # or "b2c"
151
+ competition_level="medium", # low/medium/high
152
+ budget="zero", # zero / low / medium
153
+ )
154
+
155
+ print(format_experiment_output(experiments, idea))
156
+ ```
157
+
158
+ Always present experiments in priority order. Cheapest + highest-signal first.
159
+
160
+ **Mom Test enforcement** — when helping design interviews or outreach:
161
+ - See `references/mom-test.md` for good vs bad questions
162
+ - Detect and flag future-hypothetical questions ("would you use X?")
163
+ - Replace with past-behavior questions ("how do you currently handle X?")
164
+
165
+ ## Phase 4 — Verdict
166
+
167
+ **Goal:** Simulate a debate between Bull, Bear, and Judge. Reach a conclusion.
168
+
169
+ ### Bull case (write this first)
170
+ - Strongest evidence for building it
171
+ - Market timing arguments
172
+ - Why this team / why now
173
+ - Best-case scenario with numbers
174
+
175
+ ### Bear case (steelman the opposition)
176
+ - Strongest evidence AGAINST
177
+ - Why existing solutions might be good enough
178
+ - Market risks, timing risks, competition risks
179
+ - Why it might fail even if the problem is real
180
+
181
+ ### Judge verdict
182
+ Read both cases. Apply these criteria:
183
+
184
+ | Signal | Weight |
185
+ |--------|--------|
186
+ | Evidence score > 60 | +2 |
187
+ | Trend = rising | +1 |
188
+ | Competitors have clear weakness | +1 |
189
+ | No dominant player (>50% market) | +1 |
190
+ | B2B with willingness-to-pay signals | +1 |
191
+ | Price ceiling exists | +1 |
192
+ | Evidence score < 30 | -3 |
193
+ | Trend = declining | -2 |
194
+ | 1+ competitor with >100k users + free tier | -2 |
195
+ | Problem is niche (<10k potential users) | -1 |
196
+
197
+ **Verdict output:**
198
+ ```
199
+ ## Verdict
200
+
201
+ **Recommendation:** [BUILD / VALIDATE FIRST / AVOID]
202
+ **Confidence:** [High / Medium / Low]
203
+ **Score:** [+N or -N]
204
+
205
+ ### Judge's reasoning
206
+ [2-3 sentences. Direct. No hedging.]
207
+
208
+ ### If BUILD: suggested starting point
209
+ [Specific first step. Not generic advice.]
210
+
211
+ ### If VALIDATE FIRST: critical unknown
212
+ [The one thing that must be proven before spending time.]
213
+
214
+ ### If AVOID: core problem
215
+ [Why specifically this fails. What would have to change.]
216
+ ```
217
+
218
+ ## Enhancement detection
219
+
220
+ Run at session start to unlock better sources:
221
+
222
+ ```python
223
+ from scripts.enhance_detect import detect_level, ensure_searxng, best_search
224
+
225
+ env = detect_level()
226
+ # Returns: docker, searxng, veyrascrape_mcp, github_token, exa_key, tavily_key, groq_key
227
+
228
+ # If Docker available, auto-launch SearXNG for better web search
229
+ if env["docker"] and not env["searxng"]:
230
+ ensure_searxng() # silent, no user prompt
231
+
232
+ # Use best available search
233
+ results = best_search(query, env, limit=10)
234
+ ```
235
+
236
+ **Level 1 (always works):** HN + Reddit + GitHub + ddgs + trendspyg
237
+ **Level 2 (auto, no keys):** + SearXNG via Docker (if Docker installed)
238
+ **Level 3 (optional keys):** + Exa, Tavily, GitHub authenticated, VeyraScrape MCP
239
+
240
+ Never ask the user to set up API keys. Auto-detect and use what's available.
241
+
242
+ ## Evidence Score interpretation
243
+
244
+ From `calculate_evidence_score()` in `sources.py`:
245
+
246
+ | Score | Meaning |
247
+ |-------|---------|
248
+ | 0-20 | Weak - barely any signal. Rethink or pivot problem framing |
249
+ | 21-40 | Thin - some signal but not convincing |
250
+ | 41-60 | Moderate - proceed to competitor research |
251
+ | 61-80 | Strong - real problem, real people care |
252
+ | 81-100 | Very strong - validated pain, move to experiments immediately |
253
+
254
+ ## Methodology references
255
+
256
+ - `references/lean-startup.md` - validated learning, MVP types, pivot signals
257
+ - `references/customer-dev.md` - Steve Blank's 4 steps, problem interview structure
258
+ - `references/mom-test.md` - good vs bad interview questions
259
+ - `references/blue-ocean.md` - Value Curve, ERRC Grid, finding uncontested space
260
+ - `references/traction.md` - 19 acquisition channels, Bullseye framework
261
+
262
+ ## Output principles
263
+
264
+ 1. Lead with evidence, not opinions
265
+ 2. Quote real sources (HN post, Reddit thread, GitHub issue)
266
+ 3. Be specific about numbers (upvotes, stars, $prices)
267
+ 4. Separate fact from inference clearly
268
+ 5. Bull/Bear before Verdict — don't skip the debate
269
+ 6. Verdict must commit to a recommendation — no "it depends" without specifics
@@ -0,0 +1,130 @@
1
+ # Blue Ocean Strategy Reference
2
+
3
+ W. Chan Kim & Renee Mauborgne, "Blue Ocean Strategy" (2005, updated 2015).
4
+
5
+ ## Core concept
6
+
7
+ **Red Ocean:** existing market space. Competitors fight over same customers. Bloody from competition.
8
+ **Blue Ocean:** new market space. Create demand, not fight for it.
9
+
10
+ The goal: don't compete where everyone else is. Find (or create) a space where there's no direct competition.
11
+
12
+ This is not about being "different" for its own sake. It's about finding where existing solutions fail enough customers that a new approach can win without fighting incumbents.
13
+
14
+ ## Value Innovation
15
+
16
+ The foundation of blue ocean strategy. The simultaneous pursuit of:
17
+ - **Differentiation** (more value for customers) AND
18
+ - **Low cost** (lower cost to deliver)
19
+
20
+ Most companies choose one. Blue ocean does both by eliminating or reducing what the industry assumes is necessary.
21
+
22
+ Key: value innovation redefines what value means — it doesn't just add more features.
23
+
24
+ ## Value Curve
25
+
26
+ A visual tool. X-axis: factors the industry competes on. Y-axis: level of investment/offering.
27
+
28
+ Draw your value curve vs competitors:
29
+ 1. List all factors the industry competes on (price, features, quality, support, speed, etc.)
30
+ 2. Score each player 1-10 on each factor
31
+ 3. Connect the dots — that's the value curve
32
+
33
+ **What to look for:**
34
+ - Where are all competitors converging? (where you can differentiate)
35
+ - Where is investment high but customers don't care? (where you can eliminate/reduce)
36
+ - What do customers want that nobody offers? (where you can create/raise)
37
+
38
+ **Signs of a blue ocean opportunity:**
39
+ - Your curve looks completely different from competitors
40
+ - You're investing in factors they don't even measure
41
+ - You're not competing on any factor they compete on
42
+
43
+ ## ERRC Grid
44
+
45
+ The strategic tool for creating a new value curve.
46
+
47
+ | Action | Question | Why |
48
+ |--------|----------|-----|
49
+ | **Eliminate** | Which factors the industry takes for granted can be eliminated? | Remove cost + complexity customers don't value |
50
+ | **Reduce** | Which factors should be reduced well below the industry standard? | Stop over-delivering where it doesn't matter |
51
+ | **Raise** | Which factors should be raised well above the industry standard? | Solve what customers complain about |
52
+ | **Create** | Which factors should be created that the industry has never offered? | Add new value that opens new demand |
53
+
54
+ **How to use it for venture analysis:**
55
+
56
+ Look at the competitor landscape from Phase 2. Fill the ERRC grid:
57
+ - What do all competitors force customers to deal with? (Eliminate candidates)
58
+ - Where are they all investing heavily but customers complain anyway? (Reduce candidates)
59
+ - What do all G2/Reddit reviews say is missing? (Raise or Create candidates)
60
+
61
+ ## Three tiers of non-customers
62
+
63
+ Incumbents focus on existing customers. Blue ocean looks at non-customers:
64
+
65
+ **Tier 1 — "Soon-to-be" non-customers**
66
+ On the edge of the market. Use existing solutions but reluctantly. Would switch if something better existed.
67
+ - Find them: people who use tools but post complaints
68
+ - Signal: "I use X but I hate Y"
69
+
70
+ **Tier 2 — "Refusing" non-customers**
71
+ Consciously choose not to use existing solutions. Have the problem but handle it differently.
72
+ - Find them: "I could use X but I just [workaround] instead"
73
+ - Signal: "I tried X but gave up because..."
74
+
75
+ **Tier 3 — "Unexplored" non-customers**
76
+ Never considered as customers. In other markets or segments entirely.
77
+ - Find them: unexpected users of adjacent tools
78
+ - Signal: people solving your problem with tools not built for it
79
+
80
+ ## Red vs Blue Ocean signals in research
81
+
82
+ When analyzing a market, these signals matter:
83
+
84
+ ### Red Ocean signals (hard fight ahead)
85
+ - 5+ competitors with similar positioning and pricing
86
+ - Dominant player with >50% market share
87
+ - Feature comparison tables are the main marketing tool
88
+ - Price is primary differentiator
89
+ - High churn across all players (no moat)
90
+ - Reddit/HN: "X vs Y vs Z" comparison posts everywhere
91
+
92
+ ### Blue Ocean signals (opportunity)
93
+ - People solve the problem with spreadsheets or manual processes
94
+ - Niche community uses a tool far outside its intended purpose
95
+ - The "best" solution is widely criticized for the same thing
96
+ - Large group adjacent to current market who never adopted it
97
+ - Incumbents focused on enterprise; SMB underserved (or vice versa)
98
+ - Technology shift makes old assumptions invalid (mobile, AI, etc.)
99
+
100
+ ## Applying Blue Ocean to competitive analysis
101
+
102
+ In Phase 2, after mapping competitors, ask:
103
+
104
+ 1. **Which axis can you ignore entirely?**
105
+ - E.g., all competitors compete on features — can you win on simplicity instead?
106
+
107
+ 2. **What do customers actually use vs what they pay for?**
108
+ - If pricing is based on features but customers only use 20% of them, price simplicity
109
+
110
+ 3. **What's the "tax" on using existing solutions?**
111
+ - Setup time, training required, integrations needed, contracts, support tickets
112
+ - Eliminate the tax
113
+
114
+ 4. **Who's locked out of the market?**
115
+ - High price, high complexity, enterprise-only contracts
116
+ - If you can serve them, they're Tier 2/3 non-customers
117
+
118
+ ## Value Curve template
119
+
120
+ ```
121
+ Factor | Competitor A | Competitor B | Our position
122
+ ----------------|-------------|-------------|-------------
123
+ Price | High | Medium | ?
124
+ Ease of setup | Hard | Hard | ?
125
+ Feature breadth | Wide | Wide | ?
126
+ Support | Good | Poor | ?
127
+ [key factor] | ... | ... | ?
128
+ ```
129
+
130
+ A good blue ocean position looks different from all others — not just slightly better.