@veyralabs/skills 0.5.0 → 0.5.2

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.2",
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,18 @@ 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
+ Six 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
19
+ 6. **Execution & Moat** - 30-day roadmap, moat scoring, PMF simulation, market timing
18
20
 
19
21
  ## How to use
20
22
 
@@ -23,63 +25,79 @@ Describe your idea. Include:
23
25
  - Who it's for (target customer)
24
26
  - What problem it solves
25
27
 
26
- Optional: budget for experiments, market type (B2C/B2B), known competitors.
28
+ Optional: budget for experiments, market type (B2C/B2B), known competitors, founder background.
27
29
 
28
- ## Phase 1 Problem Discovery
30
+ ## Phase 1 - Problem Discovery
29
31
 
30
32
  **Goal:** Find evidence the problem is real and people talk about it unprompted.
31
33
 
32
34
  Use `scripts/sources.py` to collect evidence:
33
35
 
34
36
  ```python
35
- from scripts.sources import search_hn, search_hn_comments, search_reddit, search_github_issues, get_trends
37
+ from scripts.sources import search_hn, search_hn_comments, search_reddit, search_github_issues, get_trends, calculate_evidence_score
36
38
 
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
39
+ hn_stories = search_hn(query, limit=20)
40
+ hn_comments = search_hn_comments(query, min_points=3, limit=30)
42
41
  reddit_posts = search_reddit(query, limit=25, timeframe="year")
42
+ gh_issues = search_github_issues(query, limit=20)
43
+ trend_data = get_trends(keyword)
44
+ ```
43
45
 
44
- # GitHub: find feature requests and pain in related tools
45
- gh_issues = search_github_issues(query, limit=20)
46
+ **Evidence Quality (not just quantity):**
46
47
 
47
- # Trends: is interest rising or declining?
48
- trend_data = get_trends(keyword)
49
- ```
48
+ Evaluate source mix and signal strength, not just raw counts.
49
+
50
+ | Source | Quality signal | Weight |
51
+ |--------|---------------|--------|
52
+ | HN Ask/Show with 50+ points | People actively seeking solutions | High |
53
+ | Reddit complaints with 100+ upvotes | Widespread frustration | High |
54
+ | GitHub issues with many reactions | Developers hitting the same wall | High |
55
+ | HN/Reddit mentions of spending money | Willingness to pay | Very high |
56
+ | Rising trend | Growing problem | High |
57
+ | Trend flat | Established problem | Medium |
58
+ | Trend declining | Dying problem | Negative |
59
+ | Generic blog posts | Low signal noise | Low |
60
+
61
+ Evidence Quality grades:
62
+ - **A** - Multiple high-quality sources, direct pain quotes, spending signals
63
+ - **B** - Good source mix, clear pain but limited spending signals
64
+ - **C** - Some signal but concentrated in one source
65
+ - **D** - Thin signal, only indirect evidence
66
+ - **F** - Essentially no evidence
50
67
 
51
68
  **Synthesize findings:**
52
69
 
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
70
+ Strongest pain signals (prioritize):
71
+ - People actively spending money on imperfect solutions
72
+ - Recurring complaints with no satisfying answer
56
73
  - "Is there a tool that does X?" posts with many upvotes
57
- - GitHub issues with many reactions and no resolution
58
- - Rising trend line
74
+ - GitHub issues with many reactions, still open
59
75
 
60
76
  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
77
+ - Zero discussion anywhere (even if search terms varied)
78
+ - Problem exists but everyone's workaround is "good enough"
79
+ - Only a few power users care, no broad market
80
+ - Discussion peaked years ago (dying category)
64
81
 
65
82
  **Output format:**
66
83
  ```
67
84
  ## Problem Evidence
68
85
 
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]
86
+ Evidence Score: [0-100]
87
+ Evidence Quality: [A/B/C/D/F]
74
88
 
75
- ### Pain signals
76
- - [description of signal + source count]
89
+ Source breakdown:
90
+ - HN: [n] discussions, strongest: "[quote]"
91
+ - Reddit: [n] posts, strongest: "[quote]"
92
+ - GitHub: [n] issues, strongest reaction count: [n]
93
+ - Trend: [rising/stable/declining], avg interest: [n]
77
94
 
78
- ### Gaps found
79
- - [what existing solutions miss]
95
+ Quality notes:
96
+ - [what makes this evidence strong]
97
+ - [what's missing]
80
98
  ```
81
99
 
82
- ## Phase 2 Competitor Intelligence
100
+ ## Phase 2 - Competitor Intelligence
83
101
 
84
102
  **Goal:** Map who's already solving this. Find pricing, positioning gaps, weak points.
85
103
 
@@ -87,57 +105,38 @@ Red flags:
87
105
  from scripts.scraper import scrape_competitor
88
106
  from scripts.sources import search_github_repos, search_web
89
107
 
90
- # Find competitors via web and GitHub
91
- repos = search_github_repos(f"{idea} tool", limit=8)
108
+ repos = search_github_repos(f"{idea} tool", limit=8)
92
109
  web_results = search_web(f"{idea} software alternatives", limit=8)
93
110
 
94
- # Scrape each competitor's pricing + positioning
95
111
  for url in competitor_urls:
96
112
  data = scrape_competitor(url)
97
- # data has: title, tagline, description, pricing, features, tech_stack
113
+ # data: title, tagline, description, pricing, features, tech_stack
98
114
  ```
99
115
 
100
- **Competitive map structure:**
116
+ **Competitive map:**
101
117
  ```
102
- | Name | Pricing | Target | Weakness | Stars |
103
- |------|---------|--------|----------|-------|
104
- | X | $49/mo | SMBs | No API | 2.1k |
118
+ | Name | Pricing | Target | Weakness | Stars/Users |
119
+ |------|---------|--------|----------|-------------|
105
120
  ```
106
121
 
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
- ```
122
+ **Gaps to identify:**
123
+ - Price ceiling: tier missing between free and enterprise?
124
+ - Audience gap: power users vs beginners vs enterprise underserved?
125
+ - Feature gap: what do reviews complain about repeatedly?
126
+ - Distribution gap: channel nobody is using?
119
127
 
120
- **Output format:**
121
- ```
122
- ## Competitor Map
128
+ **Opportunity Score vs Startup Score:**
123
129
 
124
- ### Direct competitors
125
- [table]
130
+ These are two different things. Conflating them is a common mistake.
126
131
 
127
- ### Indirect / adjacent
128
- [list with one-line descriptions]
132
+ - **Opportunity Score** = how good is the market? (demand, size, willingness to pay)
133
+ - **Startup Score** = how viable is this as a startup? (scalability, defensibility, execution path)
129
134
 
130
- ### Market gaps
131
- - Gap 1: [description + evidence]
132
- - Gap 2: [description + evidence]
135
+ 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
136
 
134
- ### Pricing landscape
135
- - Range: [$X - $Y/month]
136
- - Free tier pattern: [present/absent]
137
- - Typical model: [seat/flat/usage]
138
- ```
137
+ Score both separately in the competitor output section.
139
138
 
140
- ## Phase 3 Validation Experiments
139
+ ## Phase 3 - Validation Experiments
141
140
 
142
141
  **Goal:** Before writing code, find out if people will actually pay.
143
142
 
@@ -147,24 +146,62 @@ from scripts.experiments import generate_experiments, format_experiment_output
147
146
  experiments = generate_experiments(
148
147
  idea=idea,
149
148
  target_customer=target,
150
- market_type="b2b", # or "b2c"
151
- competition_level="medium", # low/medium/high
152
- budget="zero", # zero / low / medium
149
+ market_type="b2b", # or "b2c"
150
+ competition_level="medium",
151
+ budget="zero",
153
152
  )
154
-
155
153
  print(format_experiment_output(experiments, idea))
156
154
  ```
157
155
 
158
- Always present experiments in priority order. Cheapest + highest-signal first.
156
+ Present experiments in priority order. Cheapest + highest-signal first.
159
157
 
160
- **Mom Test enforcement** when helping design interviews or outreach:
158
+ **Mom Test enforcement** - when helping design interviews or outreach:
161
159
  - See `references/mom-test.md` for good vs bad questions
162
- - Detect and flag future-hypothetical questions ("would you use X?")
160
+ - Flag any future-hypothetical question ("would you use X?")
163
161
  - Replace with past-behavior questions ("how do you currently handle X?")
164
162
 
165
- ## Phase 4 — Verdict
163
+ **Time-To-First-Dollar estimate:**
164
+
165
+ For each experiment path, estimate realistic time to first revenue:
166
+
167
+ | Market type | Typical range | What accelerates it |
168
+ |------------|--------------|---------------------|
169
+ | B2C consumer SaaS | 30-90 days | Viral loop, strong landing page CTR |
170
+ | B2B SMB | 30-60 days | Warm outreach, concierge MVP |
171
+ | B2B mid-market | 60-180 days | Champion inside company, ROI clear |
172
+ | B2B enterprise | 6-18 months | Do not start here without traction |
173
+ | Developer tool (paid) | 14-45 days | Show HN, Product Hunt, X/Twitter post |
174
+ | Marketplace | 90-180+ days | Cold start problem, both sides |
175
+ | Content-led SaaS | 60-120 days | SEO takes time, need existing audience |
176
+
177
+ This is not the time to build - it's the time from starting experiments to first paying customer.
166
178
 
167
- **Goal:** Simulate a debate between Bull, Bear, and Judge. Reach a conclusion.
179
+ ## Phase 4 - Verdict
180
+
181
+ **Goal:** Simulate a debate between Bull, Bear, and Judge. Reach a committed conclusion.
182
+
183
+ ### Confidence Engine
184
+
185
+ The confidence score must explain itself. Not "Confidence: High" alone. Show the reasoning.
186
+
187
+ ```
188
+ Confidence: [0-100]
189
+
190
+ High confidence because:
191
+ + [n] Reddit mentions across [n] subreddits
192
+ + [n] GitHub issues with [n]+ reactions
193
+ + [n] competitors validated with real pricing
194
+ + Rising trend over [period]
195
+ + [specific spending signal found]
196
+
197
+ Confidence reduced because:
198
+ - [specific gap, e.g. weak monetization signals]
199
+ - [e.g. no willingness-to-pay evidence found]
200
+ - [e.g. fragmented ICP - different pain in different segments]
201
+ - [e.g. limited search volume data]
202
+ ```
203
+
204
+ This matters because users need to see the reasoning is transparent, not magic.
168
205
 
169
206
  ### Bull case (write this first)
170
207
  - Strongest evidence for building it
@@ -173,47 +210,301 @@ Always present experiments in priority order. Cheapest + highest-signal first.
173
210
  - Best-case scenario with numbers
174
211
 
175
212
  ### Bear case (steelman the opposition)
176
- - Strongest evidence AGAINST
213
+ - Strongest evidence AGAINST building it
177
214
  - Why existing solutions might be good enough
178
215
  - Market risks, timing risks, competition risks
179
216
  - Why it might fail even if the problem is real
180
217
 
181
218
  ### Judge verdict
182
- Read both cases. Apply these criteria:
219
+
220
+ Apply these criteria:
183
221
 
184
222
  | Signal | Weight |
185
223
  |--------|--------|
186
224
  | Evidence score > 60 | +2 |
225
+ | Evidence quality A or B | +1 |
187
226
  | Trend = rising | +1 |
188
227
  | Competitors have clear weakness | +1 |
189
228
  | No dominant player (>50% market) | +1 |
190
229
  | B2B with willingness-to-pay signals | +1 |
191
230
  | Price ceiling exists | +1 |
192
231
  | Evidence score < 30 | -3 |
232
+ | Evidence quality D or F | -2 |
193
233
  | Trend = declining | -2 |
194
234
  | 1+ competitor with >100k users + free tier | -2 |
195
235
  | Problem is niche (<10k potential users) | -1 |
236
+ | Founder trap detected (high priority) | -2 |
237
+ | Reality check failed | -2 |
196
238
 
197
- **Verdict output:**
239
+ **Verdict:**
198
240
  ```
199
- ## Verdict
241
+ Recommendation: BUILD / VALIDATE FIRST / AVOID
242
+ Confidence: [0-100]
243
+ Score: [+N or -N]
200
244
 
201
- **Recommendation:** [BUILD / VALIDATE FIRST / AVOID]
202
- **Confidence:** [High / Medium / Low]
203
- **Score:** [+N or -N]
245
+ Judge's reasoning:
246
+ [2-3 sentences. Direct. No hedging. Reference the specific evidence that tipped the scale.]
247
+ ```
248
+
249
+ ## Phase 5 - Decision Intelligence
250
+
251
+ Run this after the Verdict. It does not change the verdict score - it adds context that makes the decision actionable.
252
+
253
+ ### Contradiction Detector
204
254
 
205
- ### Judge's reasoning
206
- [2-3 sentences. Direct. No hedging.]
255
+ Look for contradictions between sources. The most valuable insight is often in the gap between what people say and what the market shows.
207
256
 
208
- ### If BUILD: suggested starting point
209
- [Specific first step. Not generic advice.]
257
+ Common contradiction patterns:
210
258
 
211
- ### If VALIDATE FIRST: critical unknown
212
- [The one thing that must be proven before spending time.]
259
+ **Pain high, market growing:**
260
+ ```
261
+ Reddit: strong complaints about current solutions
262
+ Competitors: growing, raising funding
263
+
264
+ Interpretation: users hate existing tools but still pay.
265
+ This is an improvement opportunity, not a replacement play.
266
+ Consider: better UX, better pricing, better ICP focus.
267
+ ```
213
268
 
214
- ### If AVOID: core problem
215
- [Why specifically this fails. What would have to change.]
269
+ **Pain high, no competitors:**
216
270
  ```
271
+ Evidence of real pain.
272
+ Zero viable competitors found.
273
+
274
+ Two interpretations:
275
+ 1. Blue ocean - opportunity exists
276
+ 2. Graveyard - others tried and died
277
+
278
+ Check: search for failed startups in this space. If multiple failed,
279
+ investigate why before treating this as opportunity.
280
+ ```
281
+
282
+ **Trend rising, community silent:**
283
+ ```
284
+ Google Trends shows growing interest.
285
+ Reddit/HN have minimal discussion.
286
+
287
+ Possible: problem is new, community hasn't formed yet (early).
288
+ Risk: trend is noise, not genuine demand.
289
+ ```
290
+
291
+ **Competition dense, pain still high:**
292
+ ```
293
+ Multiple established competitors.
294
+ Pain signals still strong and recent.
295
+
296
+ Interpretation: nobody has actually solved it.
297
+ Look for the structural reason: price, UX, missing feature, wrong ICP.
298
+ ```
299
+
300
+ When a contradiction is found, output:
301
+ ```
302
+ Contradiction detected: [name]
303
+
304
+ [source A] shows: [signal]
305
+ [source B] shows: [signal]
306
+
307
+ Most likely interpretation: [explanation]
308
+ What to verify: [specific experiment or question that resolves this]
309
+ ```
310
+
311
+ ### Founder Trap Detector
312
+
313
+ Check `references/founder-traps.md` for full criteria.
314
+
315
+ Evaluate the evidence against each trap pattern. Flag any trap where 3+ signals match.
316
+
317
+ Output when trap found:
318
+ ```
319
+ Founder Trap: [trap name]
320
+ Evidence: [which signals matched]
321
+ Risk level: [high/medium]
322
+ Does not invalidate the opportunity, but changes the execution approach.
323
+ ```
324
+
325
+ ### Reality Check
326
+
327
+ This is not about the market - it's about whether this founder can execute this idea.
328
+
329
+ Gather context:
330
+ - What is the founder's background? (from idea description if mentioned)
331
+ - What does the idea require to work? (regulatory, infrastructure, capital, technical depth)
332
+
333
+ Questions to answer:
334
+ 1. Does this require compliance, licensing, or regulatory approval?
335
+ 2. Does this require partnerships before it can function? (e.g. bank partners, data licenses)
336
+ 3. Does this require enterprise sales from day one?
337
+ 4. Does this require a team of 10+ to build the MVP?
338
+ 5. Is the technical complexity beyond a solo founder?
339
+
340
+ If 2+ of these are true:
341
+ ```
342
+ Reality check: Execution path is high-risk for early-stage founders
343
+
344
+ Requires: [list what it requires]
345
+
346
+ This does not mean the opportunity is bad.
347
+ It means: do not start building until these constraints are addressed.
348
+
349
+ Alternative paths:
350
+ - [reduced scope version that avoids the constraint]
351
+ - [validate the demand first, then find the right co-founder/partner]
352
+ ```
353
+
354
+ ### Distribution Plan
355
+
356
+ Based on the research, recommend 3 specific acquisition channels.
357
+
358
+ Use `references/traction.md` for channel criteria. Apply to this specific market:
359
+
360
+ ```
361
+ Top channels for this idea:
362
+
363
+ 1. [channel] - because [specific evidence from research]
364
+ Test: [how to run a cheap test in 2 weeks]
365
+
366
+ 2. [channel] - because [specific evidence]
367
+ Test: [how to test]
368
+
369
+ 3. [channel] - because [specific evidence]
370
+ Test: [how to test]
371
+
372
+ Avoid:
373
+ - SEO - [reason, e.g. "competitive market, 6+ months to rank"]
374
+ - Paid social - [reason, e.g. "B2B ICP hard to target on Meta"]
375
+ ```
376
+
377
+ Do not recommend generic channels. Base it on where the pain evidence was actually found.
378
+
379
+ Example: if most Reddit signal came from r/smallbusiness, recommend Reddit community strategy specifically.
380
+
381
+ ### Time-To-First-Dollar
382
+
383
+ Based on the market type, competition, and experiment plan:
384
+
385
+ ```
386
+ Time-To-First-Dollar estimate: [X-Y weeks/months]
387
+
388
+ Path:
389
+ Week 1-2: [specific action, e.g. "cold outreach to 50 Reddit users who posted about problem"]
390
+ Week 3-4: [specific action]
391
+ Week 5-8: [specific action]
392
+ Target: first paying customer by [date estimate]
393
+
394
+ What would accelerate this: [specific factor]
395
+ What would delay this: [specific risk]
396
+ ```
397
+
398
+ ## Phase 6 - Execution & Moat
399
+
400
+ **Goal:** Answer "should you dedicate the next 2 years of your life to this?" - not just "is it a good idea?"
401
+
402
+ This phase converts the analysis into action and answers the defensibility question.
403
+
404
+ ### Execution Roadmap
405
+
406
+ Use `references/execution-roadmap.md` for the full framework. Output a week-by-week plan tailored to the verdict:
407
+
408
+ **If BUILD:**
409
+ - Week 1: find 5 people with the problem (specific communities from the research)
410
+ - Week 2: deliver value manually before building
411
+ - Week 3: charge for it
412
+ - Week 4: find customer 2-3 and a referral
413
+
414
+ Key rule: no code until someone commits to paying. The roadmap builds toward a transaction, not a product.
415
+
416
+ **If VALIDATE FIRST:**
417
+ - Define the one critical unknown in one sentence
418
+ - Run the cheapest test that could falsify it (2 weeks max)
419
+ - Define pass/fail threshold before starting
420
+ - Week 4: commit to BUILD or pivot/stop based on data
421
+
422
+ **If AVOID:**
423
+ - 2-week pivot investigation using the most interesting signal from the research
424
+ - Or clean stop criteria with specific trigger conditions for revisiting
425
+
426
+ Always include:
427
+ ```
428
+ Do NOT build yet: [specific features to avoid and why]
429
+ Reassess if: [specific trigger that means the plan is failing]
430
+ ```
431
+
432
+ ### Moat Intelligence
433
+
434
+ Score all 5 moat types using `references/moat-patterns.md`. For each:
435
+
436
+ ```
437
+ Distribution moat: [1-10] - [one-line reason]
438
+ Data moat: [1-10] - [one-line reason]
439
+ Community moat: [1-10] - [one-line reason]
440
+ Switching cost: [1-10] - [one-line reason]
441
+ Execution moat: [1-10] - [one-line reason]
442
+
443
+ Overall Moat Score: [weighted average of top 2]
444
+
445
+ Most realistic moat: [type]
446
+ How to build it: [specific action, not generic advice]
447
+ ```
448
+
449
+ Do not score high without evidence. "We will accumulate data" is not a data moat - it is a plan. Score what exists or can realistically exist in 6 months.
450
+
451
+ ### PMF Simulation
452
+
453
+ Generate 3 ICP personas based on the evidence found in Phases 1-2. Each persona is grounded in actual signals from the research, not invented.
454
+
455
+ ```
456
+ Persona A: [job title / situation]
457
+ - Current workflow for the problem: [specific, from research]
458
+ - What they hate about current solution: [from Reddit/HN quotes]
459
+ - What they pay today: [from competitor pricing research]
460
+ - What they would never pay for: [inferred from pain signals]
461
+ - Adoption trigger: [what would make them switch]
462
+ - Adoption blocker: [what would stop them even if interested]
463
+ ```
464
+
465
+ Then simulate a 4-week adoption arc for each persona:
466
+
467
+ ```
468
+ Week 1: discovers product (channel: [specific channel from distribution plan])
469
+ Week 2: [tries free / books demo / reads docs]
470
+ Week 3: [converts / churns / stalls - and why]
471
+ Week 4: [retained / referred / cancelled]
472
+ ```
473
+
474
+ From the 3 simulations, identify the PMF friction points:
475
+ ```
476
+ Main adoption blockers:
477
+ - [blocker 1]: affects [n/3] personas
478
+ - [blocker 2]: affects [n/3] personas
479
+
480
+ Easiest persona to convert: [A/B/C] - because [reason]
481
+ Start here.
482
+ ```
483
+
484
+ ### Market Timing
485
+
486
+ Based on data already collected (trend, GitHub, competition):
487
+
488
+ ```
489
+ Market timing: [Too Early / Good Window / Late / Saturated]
490
+
491
+ Signals:
492
+ + [positive timing signal]
493
+ + [positive timing signal]
494
+ - [negative timing signal]
495
+
496
+ Window estimate: [closes in X months / open for X years / unclear]
497
+
498
+ Timing verdict:
499
+ [One sentence. Is this the right moment? Why?]
500
+ ```
501
+
502
+ Timing patterns to detect:
503
+
504
+ - **Too early:** trend rising but community not formed, infrastructure missing, no paying competitors yet
505
+ - **Good window:** trend rising, 2-5 established players with clear weaknesses, market education done by competitors
506
+ - **Late entry:** dominant player has >50% share and a free tier, market consolidating
507
+ - **Saturated:** 10+ funded competitors, VC money flooding in, CAC rising, differentiation collapsing
217
508
 
218
509
  ## Enhancement detection
219
510
 
@@ -225,11 +516,9 @@ from scripts.enhance_detect import detect_level, ensure_searxng, best_search
225
516
  env = detect_level()
226
517
  # Returns: docker, searxng, veyrascrape_mcp, github_token, exa_key, tavily_key, groq_key
227
518
 
228
- # If Docker available, auto-launch SearXNG for better web search
229
519
  if env["docker"] and not env["searxng"]:
230
520
  ensure_searxng() # silent, no user prompt
231
521
 
232
- # Use best available search
233
522
  results = best_search(query, env, limit=10)
234
523
  ```
235
524
 
@@ -258,12 +547,19 @@ From `calculate_evidence_score()` in `sources.py`:
258
547
  - `references/mom-test.md` - good vs bad interview questions
259
548
  - `references/blue-ocean.md` - Value Curve, ERRC Grid, finding uncontested space
260
549
  - `references/traction.md` - 19 acquisition channels, Bullseye framework
550
+ - `references/founder-traps.md` - 8 trap patterns with evidence criteria
551
+ - `references/moat-patterns.md` - 5 moat types with scoring criteria 1-10
552
+ - `references/execution-roadmap.md` - 30-day BUILD/VALIDATE/AVOID roadmap framework
261
553
 
262
554
  ## Output principles
263
555
 
264
556
  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
557
+ 2. Quote real sources (HN post, Reddit thread, GitHub issue) with specifics
558
+ 3. Separate fact from inference - never present interpretation as data
559
+ 4. Show the Confidence Engine reasoning - never just state "High confidence"
560
+ 5. Run the contradiction check - the most valuable insight is often in the gaps
561
+ 6. Check for founder traps before finalizing verdict
562
+ 7. Verdict must commit - no "it depends" without specifics and a path forward
563
+ 8. Distinguish Opportunity Score from Startup Score
564
+ 9. Phase 6 is not optional - the roadmap is what makes the analysis useful
565
+ 10. Moat scoring must be honest - score what exists, not what is planned