@veyralabs/skills 0.5.0 → 0.5.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@veyralabs/skills",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
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"
@@ -5,16 +5,17 @@ description: Startup and SaaS idea validation. Researches market evidence, maps
5
5
 
6
6
  # Venture Analyst
7
7
 
8
- Research a startup or SaaS idea and determine if it's worth building. No fluff real evidence from real sources.
8
+ Research a startup or SaaS idea and determine if it's worth building. No fluff - real evidence from real sources, structured reasoning, and a committed decision.
9
9
 
10
10
  ## What this does
11
11
 
12
- Four phases, each producing structured output:
12
+ Five phases, each producing structured output:
13
13
 
14
- 1. **Problem Discovery** - Find evidence the problem actually exists (Reddit, HN, GitHub issues)
14
+ 1. **Problem Discovery** - Find evidence the problem actually exists (Reddit, HN, GitHub issues, trends)
15
15
  2. **Competitor Intelligence** - Map the landscape, find gaps, extract pricing signals
16
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
17
+ 4. **Verdict** - Bull/Bear/Judge debate with Confidence Engine and scored recommendation
18
+ 5. **Decision Intelligence** - Contradiction detection, founder trap check, reality check, distribution plan, time-to-first-dollar
18
19
 
19
20
  ## How to use
20
21
 
@@ -23,63 +24,79 @@ Describe your idea. Include:
23
24
  - Who it's for (target customer)
24
25
  - What problem it solves
25
26
 
26
- Optional: budget for experiments, market type (B2C/B2B), known competitors.
27
+ Optional: budget for experiments, market type (B2C/B2B), known competitors, founder background.
27
28
 
28
- ## Phase 1 Problem Discovery
29
+ ## Phase 1 - Problem Discovery
29
30
 
30
31
  **Goal:** Find evidence the problem is real and people talk about it unprompted.
31
32
 
32
33
  Use `scripts/sources.py` to collect evidence:
33
34
 
34
35
  ```python
35
- from scripts.sources import search_hn, search_hn_comments, search_reddit, search_github_issues, get_trends
36
+ from scripts.sources import search_hn, search_hn_comments, search_reddit, search_github_issues, get_trends, calculate_evidence_score
36
37
 
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
38
+ hn_stories = search_hn(query, limit=20)
39
+ hn_comments = search_hn_comments(query, min_points=3, limit=30)
42
40
  reddit_posts = search_reddit(query, limit=25, timeframe="year")
41
+ gh_issues = search_github_issues(query, limit=20)
42
+ trend_data = get_trends(keyword)
43
+ ```
43
44
 
44
- # GitHub: find feature requests and pain in related tools
45
- gh_issues = search_github_issues(query, limit=20)
45
+ **Evidence Quality (not just quantity):**
46
46
 
47
- # Trends: is interest rising or declining?
48
- trend_data = get_trends(keyword)
49
- ```
47
+ Evaluate source mix and signal strength, not just raw counts.
48
+
49
+ | Source | Quality signal | Weight |
50
+ |--------|---------------|--------|
51
+ | HN Ask/Show with 50+ points | People actively seeking solutions | High |
52
+ | Reddit complaints with 100+ upvotes | Widespread frustration | High |
53
+ | GitHub issues with many reactions | Developers hitting the same wall | High |
54
+ | HN/Reddit mentions of spending money | Willingness to pay | Very high |
55
+ | Rising trend | Growing problem | High |
56
+ | Trend flat | Established problem | Medium |
57
+ | Trend declining | Dying problem | Negative |
58
+ | Generic blog posts | Low signal noise | Low |
59
+
60
+ Evidence Quality grades:
61
+ - **A** - Multiple high-quality sources, direct pain quotes, spending signals
62
+ - **B** - Good source mix, clear pain but limited spending signals
63
+ - **C** - Some signal but concentrated in one source
64
+ - **D** - Thin signal, only indirect evidence
65
+ - **F** - Essentially no evidence
50
66
 
51
67
  **Synthesize findings:**
52
68
 
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
69
+ Strongest pain signals (prioritize):
70
+ - People actively spending money on imperfect solutions
71
+ - Recurring complaints with no satisfying answer
56
72
  - "Is there a tool that does X?" posts with many upvotes
57
- - GitHub issues with many reactions and no resolution
58
- - Rising trend line
73
+ - GitHub issues with many reactions, still open
59
74
 
60
75
  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
76
+ - Zero discussion anywhere (even if search terms varied)
77
+ - Problem exists but everyone's workaround is "good enough"
78
+ - Only a few power users care, no broad market
79
+ - Discussion peaked years ago (dying category)
64
80
 
65
81
  **Output format:**
66
82
  ```
67
83
  ## Problem Evidence
68
84
 
69
- **Evidence Score:** [0-100] (use calculate_evidence_score())
70
- **Trend:** [rising/stable/declining/no_data]
85
+ Evidence Score: [0-100]
86
+ Evidence Quality: [A/B/C/D/F]
71
87
 
72
- ### What people say (direct quotes preferred)
73
- - [Source] "[quote or paraphrase]" — [upvotes/reactions]
88
+ Source breakdown:
89
+ - HN: [n] discussions, strongest: "[quote]"
90
+ - Reddit: [n] posts, strongest: "[quote]"
91
+ - GitHub: [n] issues, strongest reaction count: [n]
92
+ - Trend: [rising/stable/declining], avg interest: [n]
74
93
 
75
- ### Pain signals
76
- - [description of signal + source count]
77
-
78
- ### Gaps found
79
- - [what existing solutions miss]
94
+ Quality notes:
95
+ - [what makes this evidence strong]
96
+ - [what's missing]
80
97
  ```
81
98
 
82
- ## Phase 2 Competitor Intelligence
99
+ ## Phase 2 - Competitor Intelligence
83
100
 
84
101
  **Goal:** Map who's already solving this. Find pricing, positioning gaps, weak points.
85
102
 
@@ -87,57 +104,38 @@ Red flags:
87
104
  from scripts.scraper import scrape_competitor
88
105
  from scripts.sources import search_github_repos, search_web
89
106
 
90
- # Find competitors via web and GitHub
91
- repos = search_github_repos(f"{idea} tool", limit=8)
107
+ repos = search_github_repos(f"{idea} tool", limit=8)
92
108
  web_results = search_web(f"{idea} software alternatives", limit=8)
93
109
 
94
- # Scrape each competitor's pricing + positioning
95
110
  for url in competitor_urls:
96
111
  data = scrape_competitor(url)
97
- # data has: title, tagline, description, pricing, features, tech_stack
112
+ # data: title, tagline, description, pricing, features, tech_stack
98
113
  ```
99
114
 
100
- **Competitive map structure:**
115
+ **Competitive map:**
101
116
  ```
102
- | Name | Pricing | Target | Weakness | Stars |
103
- |------|---------|--------|----------|-------|
104
- | X | $49/mo | SMBs | No API | 2.1k |
117
+ | Name | Pricing | Target | Weakness | Stars/Users |
118
+ |------|---------|--------|----------|-------------|
105
119
  ```
106
120
 
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?
121
+ **Gaps to identify:**
122
+ - Price ceiling: tier missing between free and enterprise?
123
+ - Audience gap: power users vs beginners vs enterprise underserved?
124
+ - Feature gap: what do reviews complain about repeatedly?
125
+ - Distribution gap: channel nobody is using?
112
126
 
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
127
+ **Opportunity Score vs Startup Score:**
123
128
 
124
- ### Direct competitors
125
- [table]
129
+ These are two different things. Conflating them is a common mistake.
126
130
 
127
- ### Indirect / adjacent
128
- [list with one-line descriptions]
131
+ - **Opportunity Score** = how good is the market? (demand, size, willingness to pay)
132
+ - **Startup Score** = how viable is this as a startup? (scalability, defensibility, execution path)
129
133
 
130
- ### Market gaps
131
- - Gap 1: [description + evidence]
132
- - Gap 2: [description + evidence]
134
+ A market can be huge (high opportunity) but impossible to win as a bootstrapped startup (low startup score). Example: "A better Stripe" - huge opportunity, near-zero startup score for most founders.
133
135
 
134
- ### Pricing landscape
135
- - Range: [$X - $Y/month]
136
- - Free tier pattern: [present/absent]
137
- - Typical model: [seat/flat/usage]
138
- ```
136
+ Score both separately in the competitor output section.
139
137
 
140
- ## Phase 3 Validation Experiments
138
+ ## Phase 3 - Validation Experiments
141
139
 
142
140
  **Goal:** Before writing code, find out if people will actually pay.
143
141
 
@@ -147,24 +145,62 @@ from scripts.experiments import generate_experiments, format_experiment_output
147
145
  experiments = generate_experiments(
148
146
  idea=idea,
149
147
  target_customer=target,
150
- market_type="b2b", # or "b2c"
151
- competition_level="medium", # low/medium/high
152
- budget="zero", # zero / low / medium
148
+ market_type="b2b", # or "b2c"
149
+ competition_level="medium",
150
+ budget="zero",
153
151
  )
154
-
155
152
  print(format_experiment_output(experiments, idea))
156
153
  ```
157
154
 
158
- Always present experiments in priority order. Cheapest + highest-signal first.
155
+ Present experiments in priority order. Cheapest + highest-signal first.
159
156
 
160
- **Mom Test enforcement** when helping design interviews or outreach:
157
+ **Mom Test enforcement** - when helping design interviews or outreach:
161
158
  - See `references/mom-test.md` for good vs bad questions
162
- - Detect and flag future-hypothetical questions ("would you use X?")
159
+ - Flag any future-hypothetical question ("would you use X?")
163
160
  - Replace with past-behavior questions ("how do you currently handle X?")
164
161
 
165
- ## Phase 4 — Verdict
162
+ **Time-To-First-Dollar estimate:**
163
+
164
+ For each experiment path, estimate realistic time to first revenue:
165
+
166
+ | Market type | Typical range | What accelerates it |
167
+ |------------|--------------|---------------------|
168
+ | B2C consumer SaaS | 30-90 days | Viral loop, strong landing page CTR |
169
+ | B2B SMB | 30-60 days | Warm outreach, concierge MVP |
170
+ | B2B mid-market | 60-180 days | Champion inside company, ROI clear |
171
+ | B2B enterprise | 6-18 months | Do not start here without traction |
172
+ | Developer tool (paid) | 14-45 days | Show HN, Product Hunt, X/Twitter post |
173
+ | Marketplace | 90-180+ days | Cold start problem, both sides |
174
+ | Content-led SaaS | 60-120 days | SEO takes time, need existing audience |
166
175
 
167
- **Goal:** Simulate a debate between Bull, Bear, and Judge. Reach a conclusion.
176
+ This is not the time to build - it's the time from starting experiments to first paying customer.
177
+
178
+ ## Phase 4 - Verdict
179
+
180
+ **Goal:** Simulate a debate between Bull, Bear, and Judge. Reach a committed conclusion.
181
+
182
+ ### Confidence Engine
183
+
184
+ The confidence score must explain itself. Not "Confidence: High" alone. Show the reasoning.
185
+
186
+ ```
187
+ Confidence: [0-100]
188
+
189
+ High confidence because:
190
+ + [n] Reddit mentions across [n] subreddits
191
+ + [n] GitHub issues with [n]+ reactions
192
+ + [n] competitors validated with real pricing
193
+ + Rising trend over [period]
194
+ + [specific spending signal found]
195
+
196
+ Confidence reduced because:
197
+ - [specific gap, e.g. weak monetization signals]
198
+ - [e.g. no willingness-to-pay evidence found]
199
+ - [e.g. fragmented ICP - different pain in different segments]
200
+ - [e.g. limited search volume data]
201
+ ```
202
+
203
+ This matters because users need to see the reasoning is transparent, not magic.
168
204
 
169
205
  ### Bull case (write this first)
170
206
  - Strongest evidence for building it
@@ -173,46 +209,189 @@ Always present experiments in priority order. Cheapest + highest-signal first.
173
209
  - Best-case scenario with numbers
174
210
 
175
211
  ### Bear case (steelman the opposition)
176
- - Strongest evidence AGAINST
212
+ - Strongest evidence AGAINST building it
177
213
  - Why existing solutions might be good enough
178
214
  - Market risks, timing risks, competition risks
179
215
  - Why it might fail even if the problem is real
180
216
 
181
217
  ### Judge verdict
182
- Read both cases. Apply these criteria:
218
+
219
+ Apply these criteria:
183
220
 
184
221
  | Signal | Weight |
185
222
  |--------|--------|
186
223
  | Evidence score > 60 | +2 |
224
+ | Evidence quality A or B | +1 |
187
225
  | Trend = rising | +1 |
188
226
  | Competitors have clear weakness | +1 |
189
227
  | No dominant player (>50% market) | +1 |
190
228
  | B2B with willingness-to-pay signals | +1 |
191
229
  | Price ceiling exists | +1 |
192
230
  | Evidence score < 30 | -3 |
231
+ | Evidence quality D or F | -2 |
193
232
  | Trend = declining | -2 |
194
233
  | 1+ competitor with >100k users + free tier | -2 |
195
234
  | Problem is niche (<10k potential users) | -1 |
235
+ | Founder trap detected (high priority) | -2 |
236
+ | Reality check failed | -2 |
237
+
238
+ **Verdict:**
239
+ ```
240
+ Recommendation: BUILD / VALIDATE FIRST / AVOID
241
+ Confidence: [0-100]
242
+ Score: [+N or -N]
243
+
244
+ Judge's reasoning:
245
+ [2-3 sentences. Direct. No hedging. Reference the specific evidence that tipped the scale.]
246
+ ```
247
+
248
+ ## Phase 5 - Decision Intelligence
249
+
250
+ Run this after the Verdict. It does not change the verdict score - it adds context that makes the decision actionable.
251
+
252
+ ### Contradiction Detector
253
+
254
+ Look for contradictions between sources. The most valuable insight is often in the gap between what people say and what the market shows.
255
+
256
+ Common contradiction patterns:
257
+
258
+ **Pain high, market growing:**
259
+ ```
260
+ Reddit: strong complaints about current solutions
261
+ Competitors: growing, raising funding
262
+
263
+ Interpretation: users hate existing tools but still pay.
264
+ This is an improvement opportunity, not a replacement play.
265
+ Consider: better UX, better pricing, better ICP focus.
266
+ ```
267
+
268
+ **Pain high, no competitors:**
269
+ ```
270
+ Evidence of real pain.
271
+ Zero viable competitors found.
196
272
 
197
- **Verdict output:**
273
+ Two interpretations:
274
+ 1. Blue ocean - opportunity exists
275
+ 2. Graveyard - others tried and died
276
+
277
+ Check: search for failed startups in this space. If multiple failed,
278
+ investigate why before treating this as opportunity.
279
+ ```
280
+
281
+ **Trend rising, community silent:**
282
+ ```
283
+ Google Trends shows growing interest.
284
+ Reddit/HN have minimal discussion.
285
+
286
+ Possible: problem is new, community hasn't formed yet (early).
287
+ Risk: trend is noise, not genuine demand.
288
+ ```
289
+
290
+ **Competition dense, pain still high:**
291
+ ```
292
+ Multiple established competitors.
293
+ Pain signals still strong and recent.
294
+
295
+ Interpretation: nobody has actually solved it.
296
+ Look for the structural reason: price, UX, missing feature, wrong ICP.
297
+ ```
298
+
299
+ When a contradiction is found, output:
300
+ ```
301
+ Contradiction detected: [name]
302
+
303
+ [source A] shows: [signal]
304
+ [source B] shows: [signal]
305
+
306
+ Most likely interpretation: [explanation]
307
+ What to verify: [specific experiment or question that resolves this]
308
+ ```
309
+
310
+ ### Founder Trap Detector
311
+
312
+ Check `references/founder-traps.md` for full criteria.
313
+
314
+ Evaluate the evidence against each trap pattern. Flag any trap where 3+ signals match.
315
+
316
+ Output when trap found:
317
+ ```
318
+ Founder Trap: [trap name]
319
+ Evidence: [which signals matched]
320
+ Risk level: [high/medium]
321
+ Does not invalidate the opportunity, but changes the execution approach.
198
322
  ```
199
- ## Verdict
200
323
 
201
- **Recommendation:** [BUILD / VALIDATE FIRST / AVOID]
202
- **Confidence:** [High / Medium / Low]
203
- **Score:** [+N or -N]
324
+ ### Reality Check
204
325
 
205
- ### Judge's reasoning
206
- [2-3 sentences. Direct. No hedging.]
326
+ This is not about the market - it's about whether this founder can execute this idea.
207
327
 
208
- ### If BUILD: suggested starting point
209
- [Specific first step. Not generic advice.]
328
+ Gather context:
329
+ - What is the founder's background? (from idea description if mentioned)
330
+ - What does the idea require to work? (regulatory, infrastructure, capital, technical depth)
331
+
332
+ Questions to answer:
333
+ 1. Does this require compliance, licensing, or regulatory approval?
334
+ 2. Does this require partnerships before it can function? (e.g. bank partners, data licenses)
335
+ 3. Does this require enterprise sales from day one?
336
+ 4. Does this require a team of 10+ to build the MVP?
337
+ 5. Is the technical complexity beyond a solo founder?
338
+
339
+ If 2+ of these are true:
340
+ ```
341
+ Reality check: Execution path is high-risk for early-stage founders
342
+
343
+ Requires: [list what it requires]
344
+
345
+ This does not mean the opportunity is bad.
346
+ It means: do not start building until these constraints are addressed.
347
+
348
+ Alternative paths:
349
+ - [reduced scope version that avoids the constraint]
350
+ - [validate the demand first, then find the right co-founder/partner]
351
+ ```
352
+
353
+ ### Distribution Plan
354
+
355
+ Based on the research, recommend 3 specific acquisition channels.
356
+
357
+ Use `references/traction.md` for channel criteria. Apply to this specific market:
358
+
359
+ ```
360
+ Top channels for this idea:
361
+
362
+ 1. [channel] - because [specific evidence from research]
363
+ Test: [how to run a cheap test in 2 weeks]
364
+
365
+ 2. [channel] - because [specific evidence]
366
+ Test: [how to test]
367
+
368
+ 3. [channel] - because [specific evidence]
369
+ Test: [how to test]
370
+
371
+ Avoid:
372
+ - SEO - [reason, e.g. "competitive market, 6+ months to rank"]
373
+ - Paid social - [reason, e.g. "B2B ICP hard to target on Meta"]
374
+ ```
375
+
376
+ Do not recommend generic channels. Base it on where the pain evidence was actually found.
377
+
378
+ Example: if most Reddit signal came from r/smallbusiness, recommend Reddit community strategy specifically.
379
+
380
+ ### Time-To-First-Dollar
381
+
382
+ Based on the market type, competition, and experiment plan:
383
+
384
+ ```
385
+ Time-To-First-Dollar estimate: [X-Y weeks/months]
210
386
 
211
- ### If VALIDATE FIRST: critical unknown
212
- [The one thing that must be proven before spending time.]
387
+ Path:
388
+ Week 1-2: [specific action, e.g. "cold outreach to 50 Reddit users who posted about problem"]
389
+ Week 3-4: [specific action]
390
+ Week 5-8: [specific action]
391
+ Target: first paying customer by [date estimate]
213
392
 
214
- ### If AVOID: core problem
215
- [Why specifically this fails. What would have to change.]
393
+ What would accelerate this: [specific factor]
394
+ What would delay this: [specific risk]
216
395
  ```
217
396
 
218
397
  ## Enhancement detection
@@ -225,11 +404,9 @@ from scripts.enhance_detect import detect_level, ensure_searxng, best_search
225
404
  env = detect_level()
226
405
  # Returns: docker, searxng, veyrascrape_mcp, github_token, exa_key, tavily_key, groq_key
227
406
 
228
- # If Docker available, auto-launch SearXNG for better web search
229
407
  if env["docker"] and not env["searxng"]:
230
408
  ensure_searxng() # silent, no user prompt
231
409
 
232
- # Use best available search
233
410
  results = best_search(query, env, limit=10)
234
411
  ```
235
412
 
@@ -258,12 +435,15 @@ From `calculate_evidence_score()` in `sources.py`:
258
435
  - `references/mom-test.md` - good vs bad interview questions
259
436
  - `references/blue-ocean.md` - Value Curve, ERRC Grid, finding uncontested space
260
437
  - `references/traction.md` - 19 acquisition channels, Bullseye framework
438
+ - `references/founder-traps.md` - 8 trap patterns with evidence criteria
261
439
 
262
440
  ## Output principles
263
441
 
264
442
  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
443
+ 2. Quote real sources (HN post, Reddit thread, GitHub issue) with specifics
444
+ 3. Separate fact from inference - never present interpretation as data
445
+ 4. Show the Confidence Engine reasoning - never just state "High confidence"
446
+ 5. Run the contradiction check - the most valuable insight is often in the gaps
447
+ 6. Check for founder traps before finalizing verdict
448
+ 7. Verdict must commit - no "it depends" without specifics and a path forward
449
+ 8. Distinguish Opportunity Score from Startup Score
@@ -0,0 +1,191 @@
1
+ # Founder Trap Patterns
2
+
3
+ Common patterns where founders convince themselves they have a good idea when the evidence says otherwise. Detect these from the research data - not from what the founder says, but from what the data shows.
4
+
5
+ ## How to detect traps
6
+
7
+ These are signal patterns, not opinions. Each trap has specific evidence criteria. If the criteria match, flag it. If they don't, don't flag it.
8
+
9
+ ---
10
+
11
+ ## Trap 1: Solution Looking for a Problem
12
+
13
+ **What it looks like:**
14
+ Founder describes a sophisticated technical solution. When asked about the problem, they describe the solution again in different words.
15
+
16
+ **Evidence signals:**
17
+ - High feature complexity in the idea description
18
+ - Low Reddit/HN pain evidence (people aren't complaining about this)
19
+ - GitHub issues about the problem: near zero
20
+ - Trend data: flat or no data
21
+ - When searching for the problem, results are mostly product announcements, not complaints
22
+
23
+ **Example:**
24
+ "An AI-powered semantic graph database for distributed knowledge management" - but nobody is searching for this, and no Reddit threads show people struggling with their current knowledge management.
25
+
26
+ **Output flag:**
27
+ ```
28
+ Founder Trap: Solution looking for a problem
29
+ Signal: High technical complexity, low organic pain evidence
30
+ Evidence score on the problem: [X] -- below threshold for this complexity level
31
+ ```
32
+
33
+ ---
34
+
35
+ ## Trap 2: Building for Yourself
36
+
37
+ **What it looks like:**
38
+ The founder is the only person in the world with this exact problem configuration. The idea solves a very specific workflow that only power users in one niche experience.
39
+
40
+ **Evidence signals:**
41
+ - The subreddits where this pain appears have under 10k subscribers
42
+ - HN discussions exist but are 5+ years old and never got traction
43
+ - GitHub issues exist in one very specific repo from one very specific maintainer
44
+ - No mainstream discussion anywhere
45
+ - Trend data: zero or declining
46
+
47
+ **Output flag:**
48
+ ```
49
+ Founder Trap: Building for yourself
50
+ Signal: Pain exists but only in a very narrow segment
51
+ Estimated addressable users: [small] -- may not support a business
52
+ ```
53
+
54
+ ---
55
+
56
+ ## Trap 3: Vitamin, Not Painkiller
57
+
58
+ **What it looks like:**
59
+ The problem exists. People acknowledge it. But nobody is urgently trying to solve it right now. It's a "nice to have."
60
+
61
+ **Evidence signals:**
62
+ - Reddit posts about the problem get upvotes but few comments
63
+ - No "is there a tool that does X" posts
64
+ - Competitors exist but have low engagement / slow growth
65
+ - People describe the problem but their current workaround is "good enough"
66
+ - No one is spending money on bad solutions currently
67
+
68
+ **Output flag:**
69
+ ```
70
+ Founder Trap: Vitamin, not painkiller
71
+ Signal: Problem acknowledged, urgency low
72
+ No evidence of active spending on imperfect solutions
73
+ ```
74
+
75
+ ---
76
+
77
+ ## Trap 4: Red Ocean Obsession
78
+
79
+ **What it looks like:**
80
+ Founder wants to compete directly with a dominant player using the same positioning and features. "We're like X but better."
81
+
82
+ **Evidence signals:**
83
+ - 1+ competitor with over 100k users
84
+ - Competitor has a free tier
85
+ - No clear positioning gap in the competitor map
86
+ - Founder's description relies on feature parity + marginal improvements
87
+ - No ERRC analysis shows a meaningfully different value curve
88
+
89
+ **Output flag:**
90
+ ```
91
+ Founder Trap: Red ocean entry
92
+ Signal: Dominant player exists with free tier and no clear structural weakness
93
+ "Better" is not a strategy
94
+ ```
95
+
96
+ ---
97
+
98
+ ## Trap 5: Market Timing Mismatch
99
+
100
+ **What it looks like:**
101
+ The idea was good 3-5 years ago (or will be good in 3-5 years) but is poorly timed for now.
102
+
103
+ **Evidence signals:**
104
+ - Trend data: declining
105
+ - Related GitHub repos: abandoned or archived
106
+ - HN discussions: lots of interest 3+ years ago, silence now
107
+ - OR: Trend rising fast but infrastructure/regulation not ready yet (too early)
108
+
109
+ **Output flag:**
110
+ ```
111
+ Founder Trap: Market timing mismatch
112
+ Signal: [declining interest over X period] or [infrastructure gap for early timing]
113
+ ```
114
+
115
+ ---
116
+
117
+ ## Trap 6: Complexity Moat Illusion
118
+
119
+ **What it looks like:**
120
+ Founder believes the product's complexity is the moat. "Nobody else will build this because it's hard." This is almost never true.
121
+
122
+ **Evidence signals:**
123
+ - The problem space has well-funded competitors (they can hire the engineers)
124
+ - The technical complexity doesn't translate to switching costs for users
125
+ - No network effects in the model
126
+ - No proprietary data advantage
127
+
128
+ **Output flag:**
129
+ ```
130
+ Founder Trap: Complexity moat illusion
131
+ Signal: Technical difficulty does not equal defensibility
132
+ Better-resourced competitors can and will replicate
133
+ ```
134
+
135
+ ---
136
+
137
+ ## Trap 7: Proxy Metric Validation
138
+
139
+ **What it looks like:**
140
+ Founder validated the wrong thing. Got 500 waitlist signups but none converted. Got 50 "great idea" replies to a cold email but nobody booked a call.
141
+
142
+ **Evidence signals (use when reviewing experiment design):**
143
+ - Success criteria were defined by vanity metrics
144
+ - No willingness-to-pay experiment was ever run
145
+ - Conversion from interest to commitment was never tested
146
+
147
+ **Output flag:**
148
+ ```
149
+ Founder Trap: Proxy metric validation
150
+ Signal: Interest validated, commitment not validated
151
+ Waitlist signups are not customers
152
+ ```
153
+
154
+ ---
155
+
156
+ ## Trap 8: ICP Drift
157
+
158
+ **What it looks like:**
159
+ Founder started with one customer type, got rejected, and gradually expanded their ICP until "everyone" is the customer.
160
+
161
+ **Evidence signals:**
162
+ - Target customer description is vague ("any business", "any developer")
163
+ - Multiple contradictory customer types mentioned in the idea description
164
+ - Pain signals come from very different subreddits with no overlap
165
+
166
+ **Output flag:**
167
+ ```
168
+ Founder Trap: ICP drift
169
+ Signal: Expanding ICP is a sign of failed validation, not a bigger market
170
+ Narrow the target before expanding
171
+ ```
172
+
173
+ ---
174
+
175
+ ## How to apply in analysis
176
+
177
+ During Phase 5 (Decision Intelligence):
178
+
179
+ 1. Match evidence patterns against each trap above
180
+ 2. Flag any trap where at least 3 of the listed signals are present
181
+ 3. Never flag based on one signal alone
182
+ 4. If a trap is flagged, it does NOT automatically change the verdict - it goes into Decision Intelligence for the judge to weigh
183
+ 5. A BUILD verdict can coexist with a detected trap if the other evidence is strong enough
184
+
185
+ Priority order (most damaging first):
186
+ 1. Solution looking for problem
187
+ 2. Red ocean obsession
188
+ 3. Vitamin not painkiller
189
+ 4. Building for yourself
190
+ 5. Market timing mismatch
191
+ 6. All others
@@ -1,29 +1,32 @@
1
1
  # Verdict Template
2
2
 
3
- The final output of venture-analyst. Complete all sections. No section is optional.
3
+ Final output of venture-analyst. Complete all sections. No section is optional.
4
+ The goal is a decision, not a report.
4
5
 
5
6
  ---
6
7
 
7
- ## [Idea Name] Venture Verdict
8
+ ## [Idea Name] - Venture Verdict
8
9
 
9
10
  **Date:** [YYYY-MM-DD]
10
- **Evidence Score:** [0-100] (from calculate_evidence_score())
11
+ **Evidence Score:** [0-100]
12
+ **Evidence Quality:** [A/B/C/D/F]
11
13
  **Recommendation:** BUILD / VALIDATE FIRST / AVOID
12
14
 
13
15
  ---
14
16
 
15
17
  ## Evidence Summary
16
18
 
17
- ### Problem signals found
19
+ ### Source breakdown
18
20
 
19
- | Source | Count | Strongest signal |
20
- |--------|-------|-----------------|
21
- | HN discussions | [n] | "[quote]" |
22
- | Reddit mentions | [n] | "[quote]" |
23
- | GitHub issues | [n] | "[repo/issue]" |
24
- | Market trend | [rising/stable/declining] | [data point] |
21
+ | Source | Count | Quality | Strongest signal |
22
+ |--------|-------|---------|-----------------|
23
+ | HN discussions | [n] | [H/M/L] | "[quote or title]" |
24
+ | Reddit posts | [n] | [H/M/L] | "[quote or title]" |
25
+ | GitHub issues | [n] | [H/M/L] | "[repo - issue title - reactions]" |
26
+ | Market trend | [rising/stable/declining] | - | [avg interest + period] |
25
27
 
26
- **Evidence quality:** [Strong / Moderate / Thin / Weak]
28
+ **Spending signals found:** [Yes - describe / No]
29
+ **Willingness-to-pay evidence:** [Yes - describe / No]
27
30
 
28
31
  ### Competitor landscape
29
32
 
@@ -32,8 +35,30 @@ The final output of venture-analyst. Complete all sections. No section is option
32
35
  | [A] | [price] | [n] | [gap] |
33
36
  | [B] | [price] | [n] | [gap] |
34
37
 
35
- **Market gap identified:** [Yes/No describe if yes]
36
- **Dominant player:** [Yes/No name if yes]
38
+ **Market gap identified:** [Yes - describe / No]
39
+ **Dominant player (>50% share):** [Yes - name / No]
40
+
41
+ **Opportunity Score:** [0-100] - [how strong is the market?]
42
+ **Startup Score:** [0-100] - [how viable as a startup to execute?]
43
+
44
+ ---
45
+
46
+ ## Confidence Engine
47
+
48
+ ```
49
+ Confidence: [0-100]
50
+
51
+ High confidence because:
52
+ + [specific signal - e.g. "312 Reddit mentions across 8 subreddits"]
53
+ + [specific signal - e.g. "84 GitHub issues with 50+ reactions"]
54
+ + [specific signal - e.g. "14 paying competitors validated"]
55
+ + [specific signal - e.g. "trend rising 40% over 12 months"]
56
+
57
+ Confidence reduced because:
58
+ - [specific gap - e.g. "no direct willingness-to-pay signals found"]
59
+ - [specific gap - e.g. "search volume low, problem may not be searched"]
60
+ - [specific gap - e.g. "fragmented ICP - different pain in different segments"]
61
+ ```
37
62
 
38
63
  ---
39
64
 
@@ -42,67 +67,137 @@ The final output of venture-analyst. Complete all sections. No section is option
42
67
  *Arguments for building this.*
43
68
 
44
69
  **Strongest evidence:**
45
- [2-3 specific data points quotes, numbers, sources. Not opinions.]
70
+ [2-3 specific data points with sources. Quotes, numbers, URLs.]
46
71
 
47
72
  **Market timing:**
48
- [Why now? What changed recently that makes this viable?]
73
+ [Why now? What changed recently?]
49
74
 
50
75
  **Competitive angle:**
51
76
  [What can this do that incumbents can't or won't?]
52
77
 
53
78
  **Best-case scenario:**
54
- In 18 months, [specific outcome] if [specific condition] holds. Revenue path: [rough numbers].
79
+ In 18 months: [specific outcome] if [specific condition] holds.
55
80
 
56
81
  ---
57
82
 
58
83
  ## Bear Case
59
84
 
60
- *Steel man the opposition. Give it everything.*
85
+ *Steelman the opposition. Give it everything.*
61
86
 
62
87
  **Strongest evidence against:**
63
- [2-3 specific counterarguments facts, not opinions.]
88
+ [2-3 specific counterarguments with data.]
64
89
 
65
90
  **Why existing solutions might be good enough:**
66
91
  [What do incumbents have that would be hard to beat?]
67
92
 
68
- **Risk factors:**
69
- - Market risk: [specific]
70
- - Timing risk: [specific]
71
- - Execution risk: [specific]
72
-
73
- **Worst-case scenario:**
74
- [What happens if the problem isn't as painful as signals suggest? Or if incumbents copy the positioning?]
93
+ **Key risks:**
94
+ - Market: [specific]
95
+ - Timing: [specific]
96
+ - Execution: [specific]
75
97
 
76
98
  ---
77
99
 
78
100
  ## Judge Verdict
79
101
 
80
- *Read both cases above before scoring.*
81
-
82
102
  ### Score
83
103
 
84
- | Signal | Present? | Points |
85
- |--------|----------|--------|
104
+ | Signal | Present | Points |
105
+ |--------|---------|--------|
86
106
  | Evidence score > 60 | [Y/N] | +2 / 0 |
87
- | Trend = rising | [Y/N] | +1 / 0 |
88
- | Competitor has clear weakness | [Y/N] | +1 / 0 |
89
- | No dominant player >50% share | [Y/N] | +1 / 0 |
90
- | B2B with willingness-to-pay signals | [Y/N] | +1 / 0 |
91
- | Price ceiling gap exists | [Y/N] | +1 / 0 |
107
+ | Evidence quality A or B | [Y/N] | +1 / 0 |
108
+ | Trend rising | [Y/N] | +1 / 0 |
109
+ | Clear competitor weakness | [Y/N] | +1 / 0 |
110
+ | No dominant player >50% | [Y/N] | +1 / 0 |
111
+ | B2B willingness-to-pay signals | [Y/N] | +1 / 0 |
112
+ | Price ceiling gap | [Y/N] | +1 / 0 |
92
113
  | Evidence score < 30 | [Y/N] | 0 / -3 |
93
- | Trend = declining | [Y/N] | 0 / -2 |
94
- | Competitor with >100k users + free tier | [Y/N] | 0 / -2 |
95
- | Niche < 10k potential users | [Y/N] | 0 / -1 |
114
+ | Evidence quality D or F | [Y/N] | 0 / -2 |
115
+ | Trend declining | [Y/N] | 0 / -2 |
116
+ | Dominant player + free tier | [Y/N] | 0 / -2 |
117
+ | Niche < 10k users | [Y/N] | 0 / -1 |
118
+ | High-priority founder trap | [Y/N] | 0 / -2 |
119
+ | Reality check failed | [Y/N] | 0 / -2 |
96
120
  | **Total** | | **[sum]** |
97
121
 
98
122
  ### Recommendation
99
123
 
100
124
  **[BUILD / VALIDATE FIRST / AVOID]**
125
+ **Confidence:** [0-100]
126
+
127
+ *Reasoning (2-3 sentences. Direct. Reference specific evidence):*
128
+ [What tipped the scale. What the judge weighed most heavily.]
129
+
130
+ ---
131
+
132
+ ## Decision Intelligence
133
+
134
+ ### Contradictions
135
+
136
+ [If none: "No significant contradictions detected."]
137
+
138
+ [If found:]
139
+ ```
140
+ Contradiction: [name]
141
+
142
+ [source A] shows: [signal]
143
+ [source B] shows: [signal]
144
+
145
+ Interpretation: [explanation]
146
+ What to verify: [specific test that resolves this]
147
+ ```
148
+
149
+ ### Founder Traps
150
+
151
+ [If none detected: "No founder traps detected."]
152
+
153
+ [If found:]
154
+ ```
155
+ Trap: [trap name]
156
+ Evidence: [which signals matched]
157
+ Risk level: [high/medium]
158
+ ```
101
159
 
102
- **Confidence:** High / Medium / Low
160
+ ### Reality Check
103
161
 
104
- *Reasoning (2-3 sentences max. Direct. No hedging):*
105
- [Judge's reasoning here. Reference specific evidence from both cases. State what tipped the scale.]
162
+ [If execution path is clear: "No significant execution barriers identified."]
163
+
164
+ [If barriers found:]
165
+ ```
166
+ Execution risk: [high/medium]
167
+
168
+ Requires: [list constraints]
169
+
170
+ Alternative path: [reduced scope or different entry point]
171
+ ```
172
+
173
+ ### Distribution Plan
174
+
175
+ **Top 3 acquisition channels for this idea:**
176
+
177
+ 1. **[channel]** - [why, based on where the evidence was actually found]
178
+ - Test: [how to test this in 2 weeks with minimal budget]
179
+
180
+ 2. **[channel]** - [why]
181
+ - Test: [how to test]
182
+
183
+ 3. **[channel]** - [why]
184
+ - Test: [how to test]
185
+
186
+ **Avoid:**
187
+ - [channel] - [specific reason for this market]
188
+
189
+ ### Time-To-First-Dollar
190
+
191
+ **Estimate:** [X-Y weeks]
192
+
193
+ | Week | Action |
194
+ |------|--------|
195
+ | 1-2 | [specific action] |
196
+ | 3-4 | [specific action] |
197
+ | 5-8 | [specific action] |
198
+
199
+ **What would accelerate this:** [factor]
200
+ **What would delay this:** [risk]
106
201
 
107
202
  ---
108
203
 
@@ -110,51 +205,36 @@ In 18 months, [specific outcome] if [specific condition] holds. Revenue path: [r
110
205
 
111
206
  ### If BUILD
112
207
 
113
- **Start here:**
114
- [One specific, concrete first action. Not "do customer research." "Post in r/[subreddit] asking about [specific problem] aim for 10 direct messages this week."]
208
+ **Start here (this week):**
209
+ [One specific action. Not "do customer research." Something like: "Post in r/[subreddit] describing the problem and ask how people handle it - aim for 10 DMs this week."]
115
210
 
116
- **Recommended MVP type:** [Concierge / Wizard of Oz / Fake door / Single feature]
117
- **First version scope:** [What does v0.1 do? What does it explicitly NOT do?]
118
- **Target for first 10 customers:** [Where specifically. Who exactly.]
211
+ **MVP type:** [Concierge / Wizard of Oz / Fake door / Single feature]
212
+ **v0.1 scope:** [What it does. What it explicitly does NOT do.]
213
+ **First 10 customers:** [Where exactly. Who exactly.]
119
214
 
120
215
  ---
121
216
 
122
217
  ### If VALIDATE FIRST
123
218
 
124
219
  **Critical unknown:**
125
- [The one thing that must be true for this to work, that is not yet proven.]
220
+ [The one thing that must be proven before building. One sentence.]
126
221
 
127
- **Experiment to run:**
128
- [Specific experiment from experiments.py name, duration, success metric]
222
+ **Run this experiment:**
223
+ [Name from experiments.py] - [duration] - success = [metric >= threshold]
129
224
 
130
225
  **Decision point:**
131
- Run [experiment] for [X weeks]. If [metric] >= [threshold], proceed to build. If not, [pivot or kill].
226
+ If [metric] >= [threshold] in [X weeks]: proceed to build.
227
+ If not: [specific pivot or kill condition].
132
228
 
133
229
  ---
134
230
 
135
231
  ### If AVOID
136
232
 
137
233
  **Core problem:**
138
- [Why specifically this fails. One clear reason, not a list.]
234
+ [One clear reason. Not a list.]
139
235
 
140
236
  **What would have to change:**
141
- [What signal would need to appear for this to be worth revisiting? If nothing could change it, say so.]
142
-
143
- **Adjacent opportunity (if any):**
144
- [Sometimes the research reveals a related problem that IS worth pursuing. If found, name it.]
145
-
146
- ---
147
-
148
- ## Appendix — Raw Data
149
-
150
- ### Top HN threads
151
- [list with URLs and point counts]
152
-
153
- ### Top Reddit posts
154
- [list with URLs and upvote counts]
155
-
156
- ### Competitor data
157
- [scraped pricing, feature lists, tech stack if available]
237
+ [Specific signal that would make this worth revisiting. Or: "nothing changes this - the structural problem is permanent."]
158
238
 
159
- ### Trend data
160
- [keyword, avg interest, trend direction, related queries]
239
+ **Adjacent opportunity (if found):**
240
+ [Related problem the research surfaced that IS worth pursuing.]