diff --git a/.junie/skills/37signals-rails b/.junie/skills/37signals-rails new file mode 120000 index 000000000..0e3bbbb25 --- /dev/null +++ b/.junie/skills/37signals-rails @@ -0,0 +1 @@ +../../.agents/skills/37signals-rails \ No newline at end of file diff --git a/.junie/skills/blog b/.junie/skills/blog new file mode 120000 index 000000000..a7a1a7e04 --- /dev/null +++ b/.junie/skills/blog @@ -0,0 +1 @@ +../../.agents/skills/blog \ No newline at end of file diff --git a/.junie/skills/copywriting b/.junie/skills/copywriting new file mode 120000 index 000000000..214f2185c --- /dev/null +++ b/.junie/skills/copywriting @@ -0,0 +1 @@ +../../.agents/skills/copywriting \ No newline at end of file diff --git a/.junie/skills/git-commit b/.junie/skills/git-commit new file mode 120000 index 000000000..d766236ab --- /dev/null +++ b/.junie/skills/git-commit @@ -0,0 +1 @@ +../../.agents/skills/git-commit \ No newline at end of file diff --git a/.junie/skills/hugo b/.junie/skills/hugo new file mode 120000 index 000000000..59021fe40 --- /dev/null +++ b/.junie/skills/hugo @@ -0,0 +1 @@ +../../.agents/skills/hugo \ No newline at end of file diff --git a/.junie/skills/okf b/.junie/skills/okf new file mode 120000 index 000000000..2778d9d95 --- /dev/null +++ b/.junie/skills/okf @@ -0,0 +1 @@ +../../.agents/skills/okf \ No newline at end of file diff --git a/.junie/skills/social-media-trends-research b/.junie/skills/social-media-trends-research new file mode 120000 index 000000000..6a211c0ce --- /dev/null +++ b/.junie/skills/social-media-trends-research @@ -0,0 +1 @@ +../../.agents/skills/social-media-trends-research \ No newline at end of file diff --git a/.junie/skills/validate b/.junie/skills/validate new file mode 120000 index 000000000..40705773b --- /dev/null +++ b/.junie/skills/validate @@ -0,0 +1 @@ +../../.agents/skills/validate \ No newline at end of file diff --git a/.junie/skills/visualize b/.junie/skills/visualize new file mode 120000 index 000000000..138214a57 --- /dev/null +++ b/.junie/skills/visualize @@ -0,0 +1 @@ +../../.agents/skills/visualize \ No newline at end of file diff --git a/.okf/architecture/icp-journey-sipoc.md b/.okf/architecture/icp-journey-sipoc.md new file mode 100644 index 000000000..a55ebcf27 --- /dev/null +++ b/.okf/architecture/icp-journey-sipoc.md @@ -0,0 +1,255 @@ +# 30.05 — ICP Journey SIPOC: Sam's Path Through the Course + +**Status:** Canonical journey map — agent-parseable and human-readable +**Date:** 2026-07-18 +**Purpose:** Visual source-of-truth for the full ICP journey. Agents can validate lesson ordering, gate thresholds, tool references, and artifact handoffs against this diagram. Humans can scan it to understand the course flow at a glance. + +**ICP:** Sam — first-time non-technical founder, idea-stage, ~$20K savings, evenings/weekends pace, zero coding ability. +**Course promise:** Rough idea → signed paid pilot, no coding required. +**Total time:** 10-16 weeks at evenings-and-weekends pace (6-10 weeks full-time). + +--- + +## Mermaid Flowchart (Machine-Readable) + +```mermaid +%%{init: {'theme':'base', 'themeVariables': {'fontFamily':'Inter, system-ui, sans-serif', 'fontSize':'13px', 'primaryColor':'#f0f9f0', 'primaryBorderColor':'#2e7d32', 'lineColor':'#555', 'primaryTextColor':'#1a1a1a'}}}%% +flowchart TB + %% ═══════════════════════════════════════ + %% ENTRY + %% ═══════════════════════════════════════ + Start(["Rough idea"]) + Start --> HowWorks["Ch.0 · How This Course Works
⏱ 10 min read
📦 Map: 5 modules, 20+ lessons, 6 artifacts"] + HowWorks --> QS(["Fast path? → Quickstart
⏱ 3 min
Core lessons only"]) + HowWorks --> FAQ(["Stuck? → FAQ
15 Q&A"]) + + %% ═══════════════════════════════════════ + %% MODULE 1: Hypothesis & Smoke Test + %% ⏱ 2-3 weeks evenings, ~7 days full-time + %% ═══════════════════════════════════════ + HowWorks --> M1_1 + QS --> M1_1 + subgraph M1["MODULE 1 · Hypothesis & Smoke Test
⏱ 2-3 weeks evenings / ~7 days full-time"] + direction TB + M1_1["1.1 · Form Your Founding Hypothesis
🛠 Notebook + kitchen timer
📦 Founding Hypothesis doc
Gate: ≥14/20, no lens <2"] + M1_1 --> M1_1Gate{Score ≥14/20?} + M1_1Gate -->|Yes| M1_2 + M1_1Gate -->|No| M1_1Fix["Fix: tighten blanks with Reddit/G2 quotes"] + M1_1Fix --> M1_1 + + M1_2["1.2 · Build Smoke-Test Page
🛠 Mixo or Carrd
📦 Live landing page URL
Check: one stranger names who it's for in 3s"] + M1_2 --> M1_2Gate{Stranger passes
3-second test?} + M1_2Gate -->|Yes| M1_3 + M1_2Gate -->|No| M1_2Fix["Fix: rewrite headline"] + M1_2Fix --> M1_2 + + M1_3["1.3 · Wire Tracking
🛠 Microsoft Clarity + GA4
📦 Tracking installed + verified"] + M1_3 --> M1_4 + + M1_4["1.4 · Run Smoke Test
🛠 Meta/Google/LinkedIn/Reddit Ads
📦 Conversion rate from 300 cold visitors"] + M1_4 --> M1_4Gate{Conversion rate?} + M1_4Gate -->|"<3% Kill/Pivot"| M1_Kill["↩ Back to 1.1 — rewrite hypothesis"] + M1_4Gate -->|"3–<6% Iterate"| M1_Iterate["Fix headline/audience, re-run"] + M1_Iterate --> M1_4 + M1_4Gate -->|"≥6% Promising"| M1_5 + + M1_5["1.5 · Price Hypothesis
🛠 Stripe Payment Links
📦 Click-to-payment signal"] + end + + M1_5 --> M1_Out(["✅ M1 OUT: Founding Hypothesis + live landing page + tracking + conversion data + price signal"]) + M1_Out --> M2_1 + + %% ═══════════════════════════════════════ + %% MODULE 2: Validate the Problem + %% ⏱ 3-5 weeks full-time + %% ═══════════════════════════════════════ + subgraph M2["MODULE 2 · Validate the Problem
⏱ 3-5 weeks full-time (booking interviews is the long pole)"] + direction TB + M2_1["2.1 · The Mom Test
🛠 Mom Test Interview Script
📦 5-8 past-tense question list"] + M2_1 --> M2_2Detour{First time
interviewing?} + M2_2Detour -->|Yes optional| M2_2["2.2 · AI Persona Rehearsal
🛠 Claude or ChatGPT
📦 Sharpened question list"] + M2_2Detour -->|No skip| M2_3 + M2_2 --> M2_3 + + M2_3["2.3 · Find 10 People: Where
🛠 Reddit, LinkedIn, X
📦 30-name list"] + M2_3 --> M2_4 + + M2_4["2.4 · Find 10 People: What to Say
🛠 Outreach Sequence Template
📦 10 booked interviews"] + M2_4 --> Interviews["▶ RUN 10 INTERVIEWS ◀
⏱ Days, not one sitting
Use 2.1 script
Score each within 5 min of hanging up"] + + Interviews --> M2_5 + + M2_5["2.5 · Synthesis: Build, Pivot, Kill
🛠 Validated Problem Statement Template
90 min: score 10 transcripts, count strong signals"] + M2_5 --> M2_5Gate{Strong signals
in 10 calls?} + M2_5Gate -->|"≥7 BUILD"| M2_6 + M2_5Gate -->|"4-6 PIVOT"| M2_Pivot["↩ Back to 2.3 — refine ICP, run 5 more interviews"] + M2_5Gate -->|"<4 KILL"| M2_Kill["↩ Back to 1.1 — rewrite hypothesis, re-run 2.3"] + + M2_6["2.6 · Build Clickable Prototype
🛠 Lovable
📦 5 silent-observation sessions"] + M2_6 --> M2_6Gate{"4+ of 5 pass?
(silent observation)"} + M2_6Gate -->|"No, fix"| M2_6Fix["Fix: iterate prototype
based on observation notes"] + M2_6Fix --> M2_6 + end + + M2_6Gate -->|"Yes, 4+ pass"| M2_Out(["✅ M2 OUT: 10 scored transcripts + build/pivot/kill decision + prototype feedback + verbatim vocabulary"]) + M2_Out --> M3_1 + + %% ═══════════════════════════════════════ + %% MODULE 3: Design from Evidence + %% ⏱ ~1 week + %% ═══════════════════════════════════════ + subgraph M3["MODULE 3 · Design from Evidence
⏱ ~3-5 days (one evening + lunch-break check)"] + direction TB + M3_1["3.1 · One-Page Product Brief
🛠 Vibe PRD Template
📦 5-section brief (≤250 words)"] + M3_1 --> M3_2 + + M3_2["3.2 · Quality-Check: Features → Outcomes
🛠 Claude or ChatGPT
📦 Outcome-shaped Section 3
Gate: peer review names nothing outside no-go list"] + end + + M3_2 --> M3_Out(["✅ M3 OUT: One-page Product Brief + outcome-shaped feature list + no-go list"]) + M3_Out --> M4_1 + + %% ═══════════════════════════════════════ + %% MODULE 4: Build It Yourself + %% ⏱ 2-4 weeks + %% ═══════════════════════════════════════ + subgraph M4["MODULE 4 · Build It Yourself
⏱ 2-4 weeks"] + direction TB + M4_1["4.1 · Should You Hire?
🛠 Build Path Decision Worksheet
📦 4-way path: self-serve / validate / fractional CTO / hire"] + M4_1 --> M4_1Gate{Build path?} + M4_1Gate -->|Self-serve| M4_2["4.2 · Ownership Audit
🛠 Ownership Checklist
📦 All accounts in founder's name
Applies to ALL paths"] + M4_1Gate -->|Validate| M4_Validate["Validate without code
Airbnb test"] + M4_1Gate -->|Fractional CTO| M4_Frac["Fractional CTO bridge
→ Hire-track supplementary reference"] + M4_1Gate -->|Hire| M4_Hire["Hire a team
→ SOW Reading Guide"] + + M4_Validate --> M4_2 + M4_Frac --> M4_2 + M4_Hire --> M4_2 + + M4_2 --> M4_Route{Building it
yourself?} + M4_Route -->|Yes| M4_3 + M4_Route -->|No hired/frac| M4_HireRef["→ Hire-track ref / SOW Guide / Fractional CTO"] + + M4_3["4.3 · Self-Serve Stack: Tools & Setup
🛠 Lovable + Supabase + Stripe
📦 3 pre-flight rules locked + scope-leak watchlist"] + M4_3 --> M4_4 + + M4_4["4.4 · Self-Serve Stack: Build Phases
🛠 Same stack + custom domain
📦 Live MVP at real URL
Gate: 5 green lights"] + M4_4 --> M4_4Gate{5 green lights?} + M4_4Gate -->|Yes| M4_Out + M4_4Gate -->|No| M4_4Fix["Fix red light first"] + M4_4Fix --> M4_4 + + M4_Out(["✅ M4 OUT: Build-path decision + locked ownership + live MVP at real URL"]) + M4_Out -.->|"Optional: monthly after launch"| M4_5Opt["4.5 · Ceiling Signals
🛠 Monthly calendar block
📦 Ceiling signal watchlist"] + M4_5Opt -.-> M5_1 + M4_Out -.->|"Optional"| M4_5Opt["4.5 · Ceiling Signals
🛠 Monthly calendar block
📦 Ceiling signal watchlist"] + M4_5Opt --> M5_1 + M4_Out --> M5_1 + + %% ═══════════════════════════════════════ + %% MODULE 5: First Paying Customer + %% ⏱ 2-4 weeks + %% ═══════════════════════════════════════ + subgraph M5["MODULE 5 · First Paying Customer
⏱ 2-4 weeks"] + direction TB + M5_1["5.1 · Sean Ellis 40% Test
🛠 PMF Survey Template
📦 Must-have segment identified
Gate: 40%+ 'very disappointed'"] + M5_1 --> M5_1Gate{40%+ very
disappointed?} + M5_1Gate -->|Yes| M5_2Detour + M5_1Gate -->|No| M5_FixProduct["Fix the product before acquiring"] + + M5_2Detour{Need to pick
a channel?} + M5_2Detour -->|Yes optional| M5_2["5.2 · Choose Your Channel
🛠 Channel Selection Framework
📦 One committed channel"] + M5_2Detour -->|No skip| M5_3 + M5_2 --> M5_3 + + M5_3["5.3 · Build 50-Name Network List
🛠 Google Sheet
📦 50 names in 4 buckets"] + M5_3 --> M5_4 + + M5_4["5.4 · Write the Outreach Message
🛠 Loom
📦 4 message variants + 90s Loom"] + M5_4 --> M5_5 + + M5_5["5.5 · Send, Track, Read Replies
🛠 Same spreadsheet
📦 Demos booked"] + M5_5 --> M5_6 + + M5_6["5.6 · Charge Before You Ship
🛠 DPA Template + Stripe
📦 Signed DPA + cleared deposit
Gate: $500+ deposit received"] + M5_6 --> M5_6Gate{Deposit
cleared?} + M5_6Gate -->|Yes| M5_Out + M5_6Gate -->|No| M5_6Fix["Objection-handle or move to next lead"] + + M5_FixProduct --> M4_4 + + M5_Out(["🏁 COURSE COMPLETE
Signed paid pilot
First dollar from a customer, not a favor"]) + + M5_FixProduct --> M4_4 + + M5_Out -.->|"Optional: if warm list runs dry"| M5_7Opt["5.7 · Cold Outbound
🛠 LinkedIn Sales Navigator
📦 30 filtered messages, 1-2 pilots"] + M5_7Opt -.-> GoingFurther + M5_Out -.->|"Optional"| M5_7Opt["5.7 · Cold Outbound
🛠 LinkedIn Sales Navigator
📦 30 filtered messages, 1-2 pilots"] + M5_7Opt --> GoingFurther + M5_Out --> GoingFurther["Going Further chapters
(trigger-based)
Churn triage · Pivot/Persevere · Hire track
Agency AI questions · Friday Demo Rule
Weekly Dev Report · Org Chart"] + + %% ═══════════════════════════════════════ + %% STYLING + %% ═══════════════════════════════════════ + classDef entry fill:#e8f4f8,stroke:#0277bd,stroke-width:2.5px,color:#1a1a1a + classDef lesson fill:#fff,stroke:#555,stroke-width:1.5px,color:#1a1a1a + classDef gate fill:#faf5ff,stroke:#a855f7,stroke-width:2px,color:#1a1a1a + classDef kill fill:#ffebee,stroke:#c62828,stroke-width:2px,color:#1a1a1a + classDef out fill:#f0f9f0,stroke:#2e7d32,stroke-width:2.5px,color:#1a1a1a + classDef finish fill:#e8f5e9,stroke:#2e7d32,stroke-width:3px,color:#1a1a1a + classDef optional fill:#f5f5f5,stroke:#999,stroke-width:1px,stroke-dasharray:5,color:#666 + classDef interview fill:#fff5f5,stroke:#cc342d,stroke-width:2px,color:#1a1a1a + + class Start,HowWorks entry + class M1_1,M1_2,M1_3,M1_4,M1_5,M2_1,M2_3,M2_4,M2_5,M2_6,M3_1,M3_2,M4_1,M4_2,M4_3,M4_4,M5_1,M5_3,M5_4,M5_5,M5_6,M2_6Fix lesson + class M1_1Gate,M1_2Gate,M1_4Gate,M2_5Gate,M2_6Gate,M4_1Gate,M4_4Gate,M5_1Gate,M5_2Detour,M5_6Gate gate + class M1_Kill,M2_Kill kill + class M1_Out,M2_Out,M3_Out,M4_Out out + class M5_Out,GoingFurther finish + class M2_2,M4_5Opt,M5_2,M5_7Opt,QS,FAQ optional + class Interviews interview +``` + +--- + +## Text Summary (Human-Readable) + +### Sam starts with: a rough idea, $20K savings, evenings/weekends, zero coding ability. + +| Module | Input | Lessons (Core) | Gate | Output | Time | +|---|---|---|---|---|---| +| **M1: Hypothesis & Smoke Test** | Rough idea | 1.1 Hypothesis → 1.2 Landing page → 1.3 Tracking → 1.4 300 visitors → 1.5 Price button | ≥6% conversion from cold traffic | Founding Hypothesis + live page + conversion data + price signal | 2-3 weeks | +| **M2: Validate the Problem** | M1 artifacts | 2.1 Mom Test script → 2.3 Find people → 2.4 Book interviews → [run 10 interviews] → 2.5 Synthesis → 2.6 Prototype | ≥7/10 have spent time/money on problem | 10 scored transcripts + build/pivot/kill + prototype feedback | 3-5 weeks | +| **M3: Design from Evidence** | Validated problem + prototype vocab | 3.1 Product Brief → 3.2 Features→Outcomes | Every feature traces to interview quote | One-page brief + outcome-shaped feature list + no-go list | ~1 week | +| **M4: Build It Yourself** | Quality-checked brief | 4.1 Hire decision → 4.2 Ownership → 4.3 Stack setup → 4.4 Build phases | 5 green lights (Stripe live, custom domain, ICP tested, no errors, demo recording) | Live MVP at real URL with all accounts in founder's name | 2-4 weeks | +| **M5: First Paying Customer** | Live MVP | 5.1 PMF test → 5.3 Network list → 5.4 Outreach → 5.5 Send/track → 5.6 Paid pilot | $500+ deposit cleared via Stripe | Signed DPA + first dollar from a customer | 2-4 weeks | + +### Branch paths (where Sam can loop back): +- **1.1 → 1.1**: Score <14/20 — tighten blanks +- **1.4 → 1.1**: <3% conversion — kill/pivot hypothesis +- **2.5 → 2.3**: 4-6 strong signals — pivot, refine ICP, 5 more interviews +- **2.5 → 1.1**: <4 strong signals — kill, rewrite hypothesis +- **4.4 → 4.4**: Red light — fix before advancing + +### Optional detours: +- **2.2**: AI persona rehearsal (skip if interviewed before) +- **4.5**: Ceiling signals (monthly check, start after launch) +- **5.2**: Channel selection (skip if channel is obvious) +- **5.7**: Cold outbound (skip if warm network produced customers) + +### Total artifacts (Founder OS): 6 +Founding Hypothesis · Landing page · Validated Problem Statement · Product Brief · Live MVP · Signed paid pilot + +--- + +## Agent Validation Checklist + +Agents reading this diagram can validate: + +- [ ] Every lesson slug in `data/course_sequence.yaml` appears as a node +- [ ] Gate thresholds match prose: ≥6% Promising (1.4), ≥7/10 build (2.5), $500+ deposit (5.6) +- [ ] Optional lessons are not prerequisites for core lessons in later modules +- [ ] Each module's output feeds the next module's first input +- [ ] No lesson references a tool that hasn't been introduced in a prior lesson +- [ ] Branch paths (pivot/kill) loop back to the correct re-entry point +- [ ] Time estimates are internally consistent (M1 2-3w + M2 3-5w + M3 ~1w + M4 2-4w + M5 2-4w = 10-17w evenings) diff --git a/.okf/architecture/index.md b/.okf/architecture/index.md index c3e0e4ef4..588f4b615 100644 --- a/.okf/architecture/index.md +++ b/.okf/architecture/index.md @@ -5,3 +5,14 @@ * [Blog Index / Listing Page](blog-list-page.md) - blog/list.html template, blog-list CSS bundle * [Blog Cover Image Pipeline](cover-image-pipeline.md) - JetVelocity cover generation, og:image vs thumbnail rendering * [Enhanced SEO Meta Tags](seo-meta-tags.md) - per-section title/description generation partial +* [ICP Journey SIPOC](icp-journey-sipoc.md) - Mermaid flowchart of Sam's full journey through every lesson, gate, branch, and artifact +* [Operational Dependency Map](operational-dependency-map.md) - per-lesson prerequisites, template blank sources, wait times, Plan B paths + +## Canonical Sources + +Some docs in this directory are snapshots of canonical sources elsewhere in the repo. When a snapshot diverges from its source, the canonical version is authoritative — agents should prefer it for up-to-date information. + +| Snapshot | Canonical Source | +|---|---| +| `icp-journey-sipoc.md` | `docs/projects/2605-tech-for-non-technical-founders/30-39-architecture-design/30.05-icp-journey-sipoc.md` | +| `operational-dependency-map.md` | `docs/projects/2605-tech-for-non-technical-founders/30-39-architecture-design/30.06-operational-dependency-map.md` | diff --git a/.okf/architecture/operational-dependency-map.md b/.okf/architecture/operational-dependency-map.md new file mode 100644 index 000000000..75dcf99a9 --- /dev/null +++ b/.okf/architecture/operational-dependency-map.md @@ -0,0 +1,632 @@ +# 30.06 — Operational Dependency Map: How Sam Obtains Every Input + +**Status:** Canonical operational dependency map +**Date:** 2026-07-18 +**Purpose:** Maps every lesson's inputs — what Sam needs, **how Sam obtains it**, and which upstream lesson produced it. Also confirms that Sam's only original inputs are a rough idea and a Gmail address. Agents can validate that every `[BRACKET]` placeholder has a documented upstream source and that no step assumes a tool or account Sam hasn't set up yet. + +--- + +## The Original-Inputs Principle + +Sam arrives with exactly **three things** he already owns: + +| Original input | Why it's sufficient | +|---|---| +| **Rough idea or instinct** | The raw material for 1.1's hypothesis sentence — a problem he's observed, a market he knows, or something half-built he's been tinkering with | +| **Gmail account** | Powers the `Founder OS` Google Drive folder (1.1), Google Analytics (1.3), Google Sheets (5.3), and Google Forms (5.1). Also used for signup to every external service. | +| **Browser** | Required for every external signup (Mixo, Stripe, Lovable, Supabase, GitHub, AWS, etc.) and every AI tool (Perplexity, Claude). No assumption that Sam has a specific browser — any modern browser works. | + +Every other account, template, tool, and artifact is **set up or produced during the course** — no Stripe account, no ad account, no Lovable subscription, no domain, no GitHub account is assumed to exist before Day 1. + +--- + +## Legend + +| Icon | Meaning | +|---|---| +| 🔑 | External account required — signup + verification. Every 🔑 lists the exact URL Sam visits and what credential he needs. | +| ⏳ | Wait time / lead time — Sam starts these early or in parallel | +| 💰 | Cost / budget required | +| 📝 | Template blanks to fill — for every `[BRACKET]`, the source lesson is named | +| 📦 | Output artifact — feeds into named downstream lessons | +| 🆘 | Plan B / recovery path | + +--- + +## MODULE 1: Hypothesis & Smoke Test (2-3 weeks) + +### 1.1 · Form Your Founding Hypothesis + +- **⏳ Wait:** None +- **💰 Cost:** $0 +- **🔑 Setup:** Google Drive — Sam already has this via his Gmail. Creates a folder called `Founder OS` for all course artifacts. No new account needed. +- **📦 Input:** Rough idea or instinct (original input #1) +- **📝 Template — Mad Libs hypothesis sentence:** `If we help [CUSTOMER] solve [PROBLEM] with [APPROACH], they'll choose it over [COMPETITION] because [DIFFERENTIATION].` + | Blank | How Sam fills it | Source | + |---|---|---| + | `[CUSTOMER]` | Names one person in one industry — "solo chiropractors," not "small businesses." If stuck: the Perplexity prompt in 1.2 Step 1 surfaces real people complaining. | From Sam's head or 1.2 research | + | `[PROBLEM]` | What they tried and failed at in the last 30 days. If stuck: leave as placeholder, fill after 1.2's Perplexity search returns verbatim complaints. | From Sam's head, refined by 1.2 | + | `[APPROACH]` | The shape of the solution — "one-click resubmit," not "AI-powered workflow." | From Sam's head | + | `[COMPETITION]` | What they currently use — a spreadsheet, a billing service, "doing nothing." | From Sam's head | + | `[DIFFERENTIATION]` | Why they'd switch — faster or cheaper, with numbers. | From Sam's head | +- **📝 Quality gate:** Score 4 lenses (Customer, Pragmatic, Growth, Money) 1-5 each. Total ≥14/20, no lens below 2. +- **📦 Output:** One sentence saved as Google Doc `Founding Hypothesis - [today's date]` in `Founder OS` folder. Feeds: 1.2 (all blanks), 1.4 (campaign targeting), 2.1 (interview script), 2.3 (ICP map). +- **🆘 Plan B — can't fill blanks:** Perplexity search for 2-3 verbatim Reddit/G2 complaints (prompt in 1.2 Step 1). Replace `[PROBLEM]` blank with their exact words. Leave blanks as placeholders if no quotes yet. +- **🆘 Plan B — score below 14:** Find a verbatim quote from a real person. Three reads aloud to a stranger — the blank they trip on gets tightened first. + +### 1.2 · Build Smoke-Test Page + +- **⏳ Wait:** None +- **💰 Cost:** $0 (Mixo/Carrd free tier) +- **🔑 Setup:** Mixo account at [mixo.io](https://www.mixo.io/) — email signup, ~60 seconds. No payment needed. +- **📦 Input:** + | Input | How Sam obtains it | Upstream source | + |---|---|---| + | Founding Hypothesis sentence | Read from `Founding Hypothesis` Google Doc in `Founder OS` folder | **[1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) output** | + | `[CUSTOMER]` blank value | Copy from 1.1 `[CUSTOMER]` blank | **[1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/)** | + | `[PROBLEM]` blank value | Copy from 1.1 `[PROBLEM]` blank | **[1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/)** | + | `[COMPETITION]` blank value | Copy from 1.1 `[COMPETITION]` blank | **[1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/)** | + | `[DIFFERENTIATION]` blank value | Copy from 1.1 `[DIFFERENTIATION]` blank | **[1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/)** | + | 2-3 `[verbatim customer quote]` lines | Run Perplexity prompt in Step 1: searches Reddit/G2 for real complaints using `[CUSTOMER]` and `[PROBLEM]` from 1.1. Keep 2-3 best quotes AND their source URLs (needed for 2.3 people-hunting). | **[1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) blanks** → Perplexity search | + | Hero image | Ask AI assistant: "Photorealistic image: [pain scenario in one sentence]." Or grab a free stock photo from [Unsplash](https://unsplash.com/). Never use a product mockup of something not built. | Generated or found | +- **📝 Builder prompt blanks:** All `[BRACKET]` values in the Step 2 builder prompt are filled from 1.1 hypothesis + Step 1 Perplexity quotes. Nothing new is invented here. +- **📝 Success check:** One stranger names who the page is for and what it does in 3 seconds. +- **📦 Output:** Live landing page URL (e.g., `yourname.mixo.io`). Feeds: 1.3 (tracking install), 1.4 (traffic), 1.5 (price button). +- **🆘 Plan B — strangers can't name it after 2 headline rewrites:** `[CUSTOMER]` or `[DIFFERENTIATION]` blank is too vague → back to 1.1, tighten to a specific noun. +- **🆘 Plan B — no AI builder fits:** Drop to Carrd (no-code drag-drop). Same Step 2 prompt pasted into Carrd's AI assistant. + +### 1.3 · Wire Tracking + +- **⏳ Wait:** None +- **💰 Cost:** $0 (both tools free) +- **🔑 Setup:** Microsoft account (for Clarity) + Google account (for GA4). Sam already has Google via his Gmail; Microsoft signup if needed at [account.microsoft.com](https://account.microsoft.com). Most people already have both. +- **📦 Input:** Live landing page URL from 1.2. **How Sam obtains it:** the URL is in his browser from the Mixo publish step. No search needed. +- **📝 Action:** Paste 2 tracking snippets (Clarity + GA4) into page builder's head-tag field. Verify in incognito window. +- **📦 Output:** Clarity session recording verified + GA4 test visit confirmed. Feeds: 1.4 (traffic measurement). +- **🆘 Plan B — Clarity shows "No data yet":** Snippet is in wrong field (body instead of head tag). Move to head-tag field, publish, wait 1 hour. + +### 1.4 · Run Smoke Test (300 Cold Visitors) + +- **⏳ Wait:** Ad-account approval 24-72 hours. Meta slowest; Reddit same-day. 7-day traffic run. +- **💰 Cost:** See channel table below. $0 organic path exists via smoke-test channel guide. +- **🔑 Setup:** Ad platform account — Sam picks one (Meta/Google/LinkedIn/Reddit). Visits the platform's signup URL, attaches a payment method, waits for ad-account approval. Install channel's pixel in page head-tag. **How Sam chooses:** the channel-selection table in 1.4 ranks platforms by cost per click and Sam's ICP fit. +- **📦 Input:** Tracking-enabled landing page URL from 1.3. **How Sam obtains it:** same URL — he's been working on it since 1.2. +- **📝 Action:** Create campaign targeting the `[CUSTOMER]` from 1.1. Set daily budget to reach 300 visits. Do NOT touch the page for full run. +- **📦 Output:** Conversion rate (form submits ÷ campaign landing-page views). Feeds: 1.5 (price button placement), 1.1 loop-back (if <3%). + +| Channel | Budget (300 visits) | CPC range | Best for | Signup URL | +|---|---|---|---|---| +| Meta | $250-$700 | $0.70-$1.90 | B2C, broad consumer | [business.facebook.com](https://business.facebook.com/) | +| Reddit | $375-$900 | $1.25-$3 | Niche communities, B2B | [ads.reddit.com](https://ads.reddit.com/) | +| Google Search | $900-$2,400 | $3-$8 | Existing search demand | [ads.google.com](https://ads.google.com/) | +| LinkedIn | $1,650-$6,600 | $5.70-$22 | B2B, named companies | [linkedin.com/campaignmanager](https://www.linkedin.com/campaignmanager/) | +| Organic (free) | $0 | $0 | Slow but real — social sharing | None (no account needed) | + +- **🆘 Plan B — conversion <3%:** Hypothesis is wrong → back to 1.1, tighten the blank that scored lowest. +- **🆘 Plan B — ad budget out of reach:** Use $0 organic path in smoke-test channel guide. + +### 1.5 · Price Hypothesis + +- **⏳ Wait:** Stripe verification 1-3 business days. Bank account + tax ID required. **Start the weekend before launch.** +- **💰 Cost:** $0 (Stripe free to set up; per-transaction fees on actual payments) +- **🔑 Setup:** Stripe account at [stripe.com](https://stripe.com) — requires bank account + tax ID (SSN for US sole proprietors). Stripe doesn't verify incorporation at signup. **How Sam signs up:** visits stripe.com, clicks "Start now," follows the verification flow. Creates a Payment Link from Dashboard → Payments → Payment Links. +- **📦 Input:** Live landing page from 1.4. **How Sam obtains it:** same URL from 1.2 — he's been iterating on it since then. +- **📝 Price hypothesis:** + | Element | How Sam determines it | Source | + |---|---|---| + | **Number** | Find 2-3 existing tools in category, start at their middle tier. OR: price against time saved — tool that saves 4 hrs/month is worth a fraction of those hours' cost. | Web search (Google the category, look at pricing pages) | + | **Unit** | One-time (not subscription) for founding-member conversion. | 1.5 lesson guidance | + | **Framing** | Pick ONE: outcome framing ("Stop spending 4 hours on reconciliation - $97") OR risk-reduction ("Reserve your spot - $97 refundable for 30 days"). | 1.5 lesson template | +- **📝 Button copy:** Paste the Payment Link URL on CTA button. Below it: "Not ready? Join the waitlist instead." +- **📦 Output:** Stripe Payment Link live + measured click-to-payment rate. Feeds: 5.6 (deposit math — 1.5 price × 12 = year-one ACV). +- **🆘 Plan B — Stripe verification >3 days:** Build page without button. Run email-only smoke test. Demand signal doesn't depend on button being live today. + +--- + +## MODULE 2: Validate the Problem (3-5 weeks) + +### 2.1 · The Mom Test: Ask About the Past + +- **⏳ Wait:** None +- **💰 Cost:** $0 +- **📦 Input:** + | Input | How Sam obtains it | Upstream source | + |---|---|---| + | `[CUSTOMER]` description (ICP) | Read from 1.1 hypothesis Google Doc — the `[CUSTOMER]` blank value | **[1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/)** | + | Mom Test scoring rubric (1-10, strong signal at 7+) | Printed or open on screen from the 2.1 lesson | **2.1 lesson text** | +- **📝 Template — 5 interview questions from the Mom Test table:** + | Question | How Sam writes it | Source | + |---|---|---| + | 5 verbatim rewrite questions | Copy from Mom Test table in 2.1 lesson. Rewrite to anchor in past events. Start with "Tell me about the last time..." | **[2.1](/course/tech-for-non-technical-founders-2026/mom-test-ask-about-past-not-future/) lesson table** | + | 2-3 ICP-specific probes | Derived from the 1.1 `[PROBLEM]` and `[COMPETITION]` blanks — ask about specific workarounds | **[1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) blanks** | +- **🔑 Setup:** None. Google Doc in existing `Founder OS` folder from 1.1. +- **📦 Output:** 5-8 question list saved as `Mom Test draft - [date]` in `Founder OS` folder. Feeds: 2.2 (optional rehearsal), the 10 interviews before 2.5. +- **🆘 Plan B — questions still sound hypothetical:** Rewrite to "Tell me about the last time..." or "Walk me through what you did when..." + +### 2.2 · AI Persona Rehearsal (OPTIONAL) + +- **⏳ Wait:** None +- **💰 Cost:** $0 (Claude/ChatGPT free tier) +- **🔑 Setup:** Claude account at [claude.ai](https://claude.ai) or ChatGPT (free tier). Already introduced for the Perplexity research in 1.2 — Sam likely has one by now. +- **📦 Input:** Draft question list from 2.1. **How Sam obtains it:** open `Mom Test draft` Google Doc. +- **📦 Output:** Sharpened question list + Objection Tracker. Feeds: the 10 interviews. +- **🆘 Plan B — skip entirely:** If Sam has run customer interviews before, skip to 2.3. + +### 2.3 · Find 10 People: Where to Look + +- **⏳ Wait:** None (research step) +- **💰 Cost:** $0 +- **📦 Input:** + | Input | How Sam obtains it | Upstream source | + |---|---|---| + | `[CUSTOMER]` blank value | Read from 1.1 hypothesis Google Doc | **[1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/)** | + | Reddit/G2 source URLs | These are the URLs Sam saved from the 1.2 Step 1 Perplexity search | **[1.2](/course/tech-for-non-technical-founders-2026/smoke-test-build-page/) Step 1** | +- **📝 Template — AI ICP map prompt:** + | Element | How Sam fills it | Source | + |---|---|---| + | ICP description | Paste 1.1 `[CUSTOMER]` and `[PROBLEM]` blanks into Claude | **[1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/)** | + | 8 communities + 5 search strings | Claude generates these from the ICP description | AI-generated from 1.1 inputs | +- **📦 Output:** 30-name list in a spreadsheet. Feeds: 2.4 (outreach). +- **🆘 Plan B — can't find anyone:** `[CUSTOMER]` is too vague → tighten to "12-person law-firm office manager," not "small business owners." + +### 2.4 · Find 10 People: What to Say + +- **⏳ Wait:** 2-4 calendar weeks to book 10 interviews (the long pole of Module 2) +- **💰 Cost:** $0 (organic outreach). $250-$500 if using research panel fallback. +- **🔑 Setup:** LinkedIn account (for DMs) or email. Calendly free tier at [calendly.com](https://calendly.com) for scheduling (optional). Sam already has email via Gmail (original input). +- **📦 Input:** 30-name list from 2.3. **How Sam obtains it:** open the spreadsheet from 2.3. +- **📝 Template — Outreach Sequence Template (3 messages):** + | Element | How Sam fills it | Source | + |---|---|---| + | Problem description | Use verbatim language from 1.2 Perplexity quotes and 1.1 `[PROBLEM]` blank | **1.2 quotes + 1.1 problem blank** | + | "I'm researching how [CUSTOMER] handles [PROBLEM]" | `[CUSTOMER]` and `[PROBLEM]` from 1.1 | **[1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/)** | +- **📦 Output:** 10 booked interviews on the calendar. Feeds: the 10 interviews, then 2.5 (synthesis). +- **🆘 Plan B — reply rate under 15%:** Expand list to 60 names using 2.3 AI prompt. Usually an ICP-fit problem. + +### [Run 10 Mom Test Interviews — Days, Not One Sitting] + +- **⏳ Wait:** Days to weeks +- **💰 Cost:** $0 +- **📦 Input:** + | Input | How Sam obtains it | Upstream source | + |---|---|---| + | Interview script | `Mom Test draft` Google Doc in `Founder OS` folder | **[2.1](/course/tech-for-non-technical-founders-2026/mom-test-ask-about-past-not-future/) (or [2.2](/course/tech-for-non-technical-founders-2026/ai-persona-pre-validation-mom-test-prep/) if rehearsed)** | + | Booked interviewees | Calendar from 2.4 outreach | **[2.4](/course/tech-for-non-technical-founders-2026/find-10-people-with-problem-outreach-2026/)** | +- **📝 Template:** Score each interview 1-10 using the 2.1 rubric immediately after each call. +- **📦 Output:** 10 scored transcripts. Feeds: 2.5 (synthesis). +- **🆘 Plan B — fewer than 7 show up:** Book 12-15 expecting ~30% no-show. Research panel fallback (UserInterviews, $25-$50/screener) guarantees show rate. + +### 2.5 · Mom Test Synthesis: Build, Pivot, or Kill + +- **⏳ Wait:** None. 90 minutes with transcripts, printed template, pen. +- **💰 Cost:** $0 +- **📦 Input:** 10 scored Mom Test transcripts. **How Sam obtains them:** his own notes from the 10 calls he just ran. +- **📝 Validated Problem Statement Template — 5 sections:** + | Section | How Sam fills it | Source | + |---|---|---| + | Who has the problem | Name the persona from the interviews — not the 1.1 hypothesis; the actual people who showed pain | **10 interview transcripts** | + | What it costs them | Quantify from interviewee quotes — hours lost, dollars spent on workarounds | **Interview transcripts** | + | What they've tried | List workarounds named in interviews | **Interview transcripts** | + | Why now | What changed in the last 6 months that made this urgent | **Interview transcripts** | + | Pain magnitude | Count of 7+ scores vs total. ≥7/10 = BUILD, 4-6 = PIVOT, <4 = KILL | **Interview scores** | +- **📦 Output:** Build/pivot/kill decision + one-page Validated Problem Statement. Feeds: 2.6 (prototype prompt), 3.1 (Product Brief Section 1 — copied verbatim). +- **🆘 Plan B — pivot (4-6):** Sharpen ICP, run 5 more interviews. Cost: 1 week. +- **🆘 Plan B — kill (<4):** Return to 1.1, rewrite weakest blank, re-run 2.3. + +### 2.6 · Build a Clickable Prototype + +- **⏳ Wait:** None. 2 hours build + 5 × 30-minute sessions. +- **💰 Cost:** $0 (Lovable free tier) +- **🔑 Setup:** Lovable account at [lovable.dev](https://lovable.dev). Sam visits the URL, signs up with email (Gmail). No payment needed. +- **📦 Input:** + | Input | How Sam obtains it | Upstream source | + |---|---|---| + | BUILD decision | From 2.5 synthesis | **[2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/)** | + | Validated Problem Statement | `Validated Problem Statement` Google Doc | **[2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/)** | + | 5 strongest-signal interviewees (≥7) | Names from 2.5 scoring sheet | **[2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/)** | +- **📝 3-screen prototype prompt:** + | Blank | How Sam fills it | Source | + |---|---|---| + | `[PRODUCT CATEGORY]` | Derived from the problem statement — what kind of thing is this? | **[2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) problem statement** | +| `[CUSTOMER]` | The persona from the validated problem statement | **[2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/)** | +| `[PRIMARY ACTION]` | The one thing the user does — verb-led, from the problem statement | **[2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/)** | + | `[FAKE DATA]` | Realistic placeholder data Sam makes up matching the persona's world | Invented — realistic to the persona | + | `[BUTTON LABEL]` | The CTA verbatim from 2.5 interviewee vocabulary | **[2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) verbatim language** | +- **📦 Output:** 5 silent-observation sessions scored + verbatim vocabulary from closing question. Feeds: 3.1 (Section 2 user context, Section 3 build scope). +- **🆘 Plan B — 2-3 passes:** Revise one element (vocabulary, Screen 1 layout, or CTA), run 2 replacement sessions. + +--- + +## MODULE 3: Design from Evidence (~1 week) + +### 3.1 · One-Page Product Brief (Vibe PRD) + +- **⏳ Wait:** None. One focused sitting (after a night's sleep between drafts). +- **💰 Cost:** $0 +- **📦 Input:** + | Input | How Sam obtains it | Upstream source | + |---|---|---| + | Validated Problem Statement | Open `Validated Problem Statement` Google Doc in `Founder OS` folder | **[2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/)** | + | Verbatim prototype vocabulary | Notes from 2.6 closing question — the words interviewees used to describe the product | **[2.6](/course/tech-for-non-technical-founders-2026/clickable-prototype-validation-2-hour-lovable/)** | +- **📝 Vibe PRD Template — 5 sections:** + | Section | How Sam fills it | Source | + |---|---|---| + | **1. The problem** | Copied **word-for-word** from 2.5 validated problem statement. Do not paraphrase. | **[2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) (verbatim copy)** | + | **2. User & context** | Who the user is *while* using the product — 60 seconds before and after. Uses prototype vocabulary from 2.6. | **2.6 vocabulary + 1.1 customer blank** | + | **3. What you're building** | One verb-led paragraph. Input → output. Uses 2.6 prototype observations — what the 5 interviewees actually tried to do. | **[2.6](/course/tech-for-non-technical-founders-2026/clickable-prototype-validation-2-hour-lovable/) observations** | + | **4. Success metric** | One number, one unit, one timeframe. Measurable inside the app. | Sam defines from 2.5 problem cost | + | **5. What you're NOT building** | 5-8 no-go bullets. Start with: what a competent AI agent or junior would add unprompted. Add anything from the 1.1 `[APPROACH]` blank that didn't survive Module 2. | Sam's judgment + AI leakage check | +- **📝 Constraint:** ≤250 words, one side of paper. +- **📦 Output:** One-page Product Brief saved as `Product Brief - [date]` in `Founder OS` folder. Feeds: 3.2 (quality check), 4.3 (pre-flight rule 1), 4.4 (build prompt). +- **🆘 Plan B — can't fit Section 3 in one paragraph:** Scope too big → pick single smallest workflow, cut everything else to Section 5. + +### 3.2 · Quality-Check: Features to Outcomes + +- **⏳ Wait:** None. 20-minute rewrite + peer/AI review. +- **💰 Cost:** $0 (Claude/ChatGPT for AI reviewer if no peer available) +- **📦 Input:** One-page Product Brief from 3.1. **How Sam obtains it:** `Product Brief` Google Doc in `Founder OS` folder. +- **📝 Action:** Rewrite every feature noun in Section 3 as *When / I want / So I can* job stories. Then hand to peer (or paste Section 3 into Claude) with: "Name 3 things you'd build that are NOT in Section 3 and NOT in the no-go list." +- **📝 Gate:** Reviewer names nothing outside no-go list. FAILS if 2+ items are outside. +- **📦 Output:** Outcome-shaped Section 3 + quality-check verdict. Feeds: 4.1 (build-path decision), 4.3 (pre-flight rule 1 — "brief passed 3.2 quality-gate"). +- **🆘 Plan B — reviewer names 2+ things outside no-go list:** Section 3 is still vague → tighten *When/I want/So I can* shape on loosest line, ask fresh reviewer. + +--- + +## MODULE 4: Build It Yourself (2-4 weeks) + +### 4.1 · Should You Hire? The 2026 Decision Tree + +- **⏳ Wait:** None. 20-minute solo + 20-minute peer sanity check. +- **💰 Cost:** $0 +- **📦 Input:** Quality-checked one-page brief from 3.2. **How Sam obtains it:** `Product Brief` Google Doc — the 3.2 quality-checked version. +- **📝 Build Path Decision Worksheet — 5 yes/no questions:** + | Question | How Sam answers | Source | + |---|---|---| + | Can I describe the build in one sentence? | Yes if brief Section 3 fits one paragraph | **[3.2](/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/)** | + | Is my runway >4 months? | Sam's bank account / runway calculation | Sam knows this | + | ... (3 more questions from worksheet) | ... | **[4.1](/course/tech-for-non-technical-founders-2026/should-you-hire-2026-decision-tree/) lesson worksheet** | +- **📦 Output:** 4-way build-path decision (self-serve / validate / fractional CTO / hire). Feeds: 4.2 (ownership audit — all paths), 4.3 (self-serve path). +- **🆘 Plan B — routes to "hire" but runway <4 months:** Runway wins → default to self-serve, revisit when 4.5 ceiling signal fires. + +### 4.2 · Ownership Audit + +- **⏳ Wait:** Domain transfer: up to 14 days. GitHub org transfer: 7 days if contractor cooperates. AWS root recovery: 3-5 business days. +- **💰 Cost:** $0 (if accounts are in Sam's name). Domain: ~$10/year at [Porkbun](https://porkbun.com). +- **🔑 Setup:** Three accounts — all under Sam's Gmail (original input #2): + | Account | How Sam creates it | URL | + |---|---|---| + | GitHub | Visit [github.com](https://github.com), sign up with Gmail, create free account | github.com | + | AWS | Visit [aws.amazon.com](https://aws.amazon.com), sign up with Gmail, free tier | aws.amazon.com | + | Domain registrar (Porkbun) | Visit [porkbun.com](https://porkbun.com), sign up with Gmail, buy domain ~$10/yr | porkbun.com | + | Stripe | Already set up from 1.5. Sam uses the same account. | **[1.5](/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/) setup** | +- **📦 Input:** Build-path decision from 4.1. Applies to ALL paths. +- **📝 Ownership Checklist — 4 zones:** + | Zone | How Sam verifies it | + |---|---| + | Code | GitHub org Owner = Sam's account | + | Cloud | AWS root email = Sam's Gmail, MFA enabled | + | Secrets | Database passwords in Sam's possession | + | Domain | Registrar account shows Sam as the domain owner. If domain is in page builder's name (from 1.2 Mixo), transfer to Porkbun. | +- **📦 Output:** All infrastructure accounts confirmed in Sam's name. Feeds: 4.3 (pre-requisite), 4.4 (custom domain green light). +- **🆘 Plan B — contractor won't transfer GitHub org:** Retain lawyer, $2K-$5K. + +### 4.3 · Self-Serve Stack: Tools & Setup + +- **⏳ Wait:** None. Lovable + Supabase signups instant. GitHub sync immediate. +- **💰 Cost:** $0 (all three tools free tiers) +- **🔑 Setup:** + | Account | How Sam creates it | URL | + |---|---|---| + | Lovable | Already signed up from 2.6 prototype. If skipped 2.6: visit [lovable.dev](https://lovable.dev), sign up with Gmail. | lovable.dev | + | Supabase | Visit [supabase.com](https://supabase.com), sign up with Gmail, free tier | supabase.com | + | Stripe | Already set up from 1.5. Same account, same Payment Link experience. | **[1.5](/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/) setup** | + | GitHub sync | In Lovable Settings → turn on GitHub sync (pre-flight rule 3). Uses GitHub account from 4.2. | **[4.2](/course/tech-for-non-technical-founders-2026/github-aws-database-ownership-checklist/) GitHub account** | +- **📦 Input:** + | Input | How Sam obtains it | Upstream source | + |---|---|---| + | "Self-serve" build decision | From 4.1 worksheet | **[4.1](/course/tech-for-non-technical-founders-2026/should-you-hire-2026-decision-tree/)** | + | Quality-checked one-page brief | `Product Brief` Google Doc — the 3.2 quality-checked version | **[3.2](/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/)** | + | Passed ownership audit | 4.2 checklist completed | **[4.2](/course/tech-for-non-technical-founders-2026/github-aws-database-ownership-checklist/)** | +- **📝 3 pre-flight rules:** + | Rule | How Sam verifies it | Source | + |---|---|---| + | 1. Brief passed 3.2 quality-gate | Section 3 reads as outcomes, not features | **[3.2](/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/) output** | + | 2. One workflow, one persona, one happy path | Write one sentence naming all three — if it takes two sentences, scope is too big | **[3.2](/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/) Section 3** | + | 3. GitHub sync ON | Checked in Lovable Settings | **[4.2](/course/tech-for-non-technical-founders-2026/github-aws-database-ownership-checklist/) GitHub account** | +- **📝 AI leakage check:** Paste Section 3 into Claude with: "Name 3 things Lovable would build that are NOT in this list." Save flagged features as scope-leak watchlist. +- **📦 Output:** 3 pre-flight rules locked + scope-leak watchlist + tool boundaries clear. Feeds: 4.4 (build phases). +- **🆘 Plan B — 12-rules list overwhelming:** Only rules 1, 2, and 6 (the 3 pre-flight rules) must be true before starting. Other 9 fire inline during 4.4. + +### 4.4 · Self-Serve Stack: Build Phases + +- **⏳ Wait:** Build time: 2-4 weeks across 4 phases. +- **💰 Cost:** Lovable + Supabase entry paid tiers + domain ($10/yr) + Stripe per-transaction fees. +- **📦 Input:** + | Input | How Sam obtains it | Upstream source | + |---|---|---| + | 3 pre-flight rules locked | Verified in 4.3 setup | **[4.3](/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-lovable-supabase-stripe-2026/)** | + | One-page brief from Module 3 | `Product Brief` Google Doc | **[3.2](/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/)** | + | Scope-leak watchlist | 3 flagged features from Claude leakage check | **[4.3](/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-lovable-supabase-stripe-2026/)** | + | Supabase project | Created in 4.3 | **[4.3](/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-lovable-supabase-stripe-2026/)** | + | Lovable project with GitHub sync | Created in 4.3 | **[4.3](/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-lovable-supabase-stripe-2026/)** | + | Stripe account (live mode) | Already set up from 1.5, now switched to live mode | **[1.5](/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/) → [4.4](/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-build-phases/)** | + | Domain | Purchased in 4.2, now pointed to staging URL | **[4.2](/course/tech-for-non-technical-founders-2026/github-aws-database-ownership-checklist/)** | +- **📝 4 build phases:** Phase 1 UI → Phase 2 Supabase+auth → Phase 3 Stripe+checkout → Phase 4 staging URL+5 ICP users. +- **📝 5 green lights gate:** + | Green light | How Sam verifies it | Source of requirement | + |---|---|---| + | 1. Stripe in live mode, real card cleared | Test charge with own card, refund immediately | **[1.5](/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/) Stripe setup** | + | 2. Custom domain wired | Domain from 4.2 points to staging URL | **[4.2](/course/tech-for-non-technical-founders-2026/github-aws-database-ownership-checklist/) domain** | + | 3. ≥1 fresh ICP user tested paywall | Send staging URL to 1 person from 2.3 list or 5.1 survey pool | **[2.3](/course/tech-for-non-technical-founders-2026/find-10-people-where-to-look/) list** | + | 4. Zero red Console errors on signup+checkout | Open browser DevTools Console, run signup-to-checkout flow | Browser DevTools | + | 5. Weekly demo recording exists | Loom recording of the current state | Loom (free tier) | +- **📦 Output:** Live MVP at real URL. Feeds: 5.1 (users for Sean Ellis test), 5.6 (pilot demo). +- **🆘 Plan B — demo person needs a tour:** Rewrite Lovable prompt around the one job the screen does. If 2 testers stall on first screen, revisit 3.2 outcomes. + +### 4.5 · Ceiling Signals (OPTIONAL monthly check) + +- **⏳ Wait:** Monthly calendar block. Start after launch. +- **💰 Cost:** $0 +- **📦 Input:** None required — fires when a signal triggers. +- **📝 5 signals:** Feature Lovable can't build, query can't tune, auth flow limit, cross-tenant data leak risk, 5,000+ users. +- **🆘 Plan B — hit signal mid-build:** Bookmark this lesson. Signals are for the operating phase. + +--- + +## MODULE 5: First Paying Customer (2-4 weeks) + +### 5.1 · Sean Ellis 40% Test + +- **⏳ Wait:** None. 5 questions, Typeform/Google Form takes 2 minutes. Results within 24 hours. +- **💰 Cost:** $0 (Typeform/Google Form free tier) +- **🔑 Setup:** Google Forms at [forms.google.com](https://forms.google.com) (Sam already has Gmail) OR Typeform free tier. +- **📦 Input:** ≥10-30 users on MVP. **How Sam obtains them:** + | Source of users | How to reach them | + |---|---| + | 4.4 onramp waitlist | Emails collected from the 1.2/1.4 landing page waitlist — export from your page builder (Mixo Subscribers, Carrd form responses, etc.) | + | 2.3-2.4 interviewees | The 10 people Sam interviewed — message them with the survey link | + | Friends/network who tested 4.4 staging URL | The people Sam did demos for in 4.4 Phase 4 | +- **📝 5-question survey:** + | Question | How Sam fills it | Source | + |---|---|---| + | Q1: "How would you feel if you could no longer use this product?" | Copy verbatim from 5.1 lesson (Very disappointed / Somewhat disappointed / Not disappointed) | **[5.1](/course/tech-for-non-technical-founders-2026/must-have-segment-pmf-test/) lesson** | + | Q2: "Why?" (open) | Free text from respondent | n/a | + | Q3: "What would you use instead?" | Free text from respondent | n/a | + | Q4: "What's the primary benefit?" | Free text from respondent | n/a | + | Q5: Segment question (role / use case) | Sam defines based on 2.5 personas | **[2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) persona** | +- **📝 Gate:** 40%+ "very disappointed" in at least one segment. +- **📦 Output:** Must-have segment identified + per-segment %. Feeds: 5.3 (list seeding), 5.4 (message language — use Q3 verbatims). +- **🆘 Plan B — no segment ≥40%:** If any segment is 25-39% = product needs refinement (back to 4.4, ship against most common Q3 answer from that segment). If all segments below 25% = significant product problem (back to 4.4, focus on the segment with highest Q3 frustration signal). Gate threshold is 40%+ in at least one segment. + +### 5.2 · Channel Selection (OPTIONAL) + +- **⏳ Wait:** None. 30-minute solo. +- **💰 Cost:** $0 +- **📦 Input:** Q2-Q3 verbatim answers from 5.1 survey. **How Sam obtains them:** read the survey responses in Google Forms. +- **🆘 Plan B — skip entirely:** If channel is obvious (personal network), skip to 5.3. + +### 5.3 · Build Your 50-Name Network List + +- **⏳ Wait:** None. 30-60 minutes. +- **💰 Cost:** $0 +- **🔑 Setup:** Google Sheet in existing `Founder OS` folder. Sam already has Gmail → Google Sheets. +- **📦 Input:** Must-have segment from 5.1. **How Sam obtains it:** 5.1 survey results — the segment with highest "very disappointed" %. +- **📝 6-column spreadsheet — How Sam seeds it:** + | Seed source | How to retrieve it | Upstream | + |---|---|---| + | 2.4 interviewees | Names from 2.4 outreach tracking sheet | **[2.4](/course/tech-for-non-technical-founders-2026/find-10-people-with-problem-outreach-2026/)** | + | 1.4 waitlist signups | Export from your landing page builder (Mixo Subscribers, Carrd form responses, etc.) | **[1.2](/course/tech-for-non-technical-founders-2026/smoke-test-build-page/)/[1.4](/course/tech-for-non-technical-founders-2026/smoke-test-landing-page-7-day-demand-test/)** | + | 2.3 30-name list | Open the spreadsheet from 2.3 — many are still warm | **[2.3](/course/tech-for-non-technical-founders-2026/find-10-people-where-to-look/)** | + | Personal network | People Sam knows who match the must-have segment | Sam's own contacts | + | Cold names from Apollo/LinkedIn | If warm list <50, run 2.3 ICP map prompt again, this time for outbound targets | **[2.3](/course/tech-for-non-technical-founders-2026/find-10-people-where-to-look/) method** | +- **📦 Output:** 50 names sorted into 4 buckets (Champions/Hot/Warm/Cold). Feeds: 5.4 (message writing), 5.5 (send sequence). +- **🆘 Plan B — only 5 names:** Five is enough to start. Message all five before cold outbound. + +### 5.4 · Write the Outreach Message + +- **⏳ Wait:** None. 90 seconds to record Loom. +- **💰 Cost:** $0 (Loom free tier) +- **🔑 Setup:** Loom account at [loom.com](https://www.loom.com). Sign up with Gmail. Free tier. +- **📦 Input:** + | Input | How Sam obtains it | Upstream source | + |---|---|---| + | 50-name list with 4 buckets | Google Sheet from 5.3 | **[5.3](/course/tech-for-non-technical-founders-2026/first-ten-customers-network-list/)** | + | Must-have segment name | From 5.1 survey results | **[5.1](/course/tech-for-non-technical-founders-2026/must-have-segment-pmf-test/)** | +- **📝 4-part message structure:** + | Part | How Sam fills it | Source | + |---|---|---| + | 1. Bucket-specific opener | Champions: "Since we last spoke..." / Hot: "You signed up for the waitlist..." / Warm: "I noticed you're in [industry]..." / Cold: "I saw your post about [topic]..." | **[5.3](/course/tech-for-non-technical-founders-2026/first-ten-customers-network-list/) bucket labels** | + | 2. One line on the problem in their language | Paste exact Q3 verbatim answers from 5.1 survey | **[5.1](/course/tech-for-non-technical-founders-2026/must-have-segment-pmf-test/) Q3** | + | 3. 90-second Loom | Record: 60s product walkthrough (show the MVP from 4.4), 30s personal intro | **[4.4](/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-build-phases/) MVP** | + | 4. Specific ask + Calendly link | "Would you be open to a 15-minute call?" + Calendly link + "paid pilot" teaser | Calendly from 2.4 | +- **📦 Output:** 4 message variants + 90-second Loom. Feeds: 5.5 (send). +- **🆘 Plan B — message reads generic:** Using marketing voice not verbatim quotes → paste exact 5.1 Q3 answers into Part 2. + +### 5.5 · Send, Track, and Read the Replies + +- **⏳ Wait:** Reply tail 1-2 weeks +- **💰 Cost:** $0 +- **📦 Input:** 4 message templates + Loom from 5.4. +- **📝 Send sequence:** Champions Monday → Hot Tuesday → Warm Wednesday → Cold Thursday. Track in the same Google Sheet: Reply, Demo booked, DPA sent, Deposit cleared. +- **📦 Output:** Demos booked from warm list. Feeds: 5.6 (DPA send). +- **🆘 Plan B — reply rate under 5%:** Re-record Loom using 5.1 Q2-Q3 verbatims. Re-send to non-responders. + +### 5.6 · Charge Before You Ship: The Paid Pilot + +- **⏳ Wait:** DPA legal review: 2-3 business days if customer's legal reviews it. Most one-page DPAs clear without legal. +- **💰 Cost:** $0 (DPA template free). Stripe per-transaction fees on deposit. +- **🔑 Setup:** + | Tool | How Sam sets it up | Source | + |---|---|---| + | Stripe | Already set up from 1.5. Creates a Payment Link in Dashboard for the deposit. | **[1.5](/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/) Stripe account** | + | DocuSign/HelloSign OR PDF+email | Sam picks one. PDF+email is free (Google Doc → Download as PDF → attach to email). | New or from operating kit | + | Google Doc | Copy the DPA template below into a blank Google Doc in `Founder OS` | Google Drive (original input) | +- **📦 Input:** 3-5 warm leads with demos booked from 5.5. **How Sam obtains them:** the Google Sheet tracking column "Demo booked" from 5.5. +- **📝 DPA Template — 6 sections + signature block. For every `[BRACKET]`:** + | Blank | How Sam fills it | Source | + |---|---|---| + | `[Your Company Name]` | Sam's company name. If no company yet: Sam's full name. | Sam knows this | + | `[Customer Company Name]` | The company name of the warm lead from 5.5 tracking sheet | **[5.5](/course/tech-for-non-technical-founders-2026/first-ten-customers-send-track/) lead info** | + | `[YYYY-MM-DD]` | Today's date | Calendar | + | `[Outcome 1]`, `[Outcome 2]`, `[Outcome 3]` | 3 measurable outcomes. Derived from the validated problem (2.5) + what the customer named in their demo call. "Reduce weekly report prep from 3 hours to 30 minutes." | **2.5 problem + 5.5 demo conversation** | + | `[Use case 1]`, `[Use case 2]` | 2 specific ways the customer will use the product. Named during the 5.5 demo. | **[5.5](/course/tech-for-non-technical-founders-2026/first-ten-customers-send-track/) demo conversation** | + | `[time]` `[timezone]` | Friday demo time agreed during 5.5 | **[5.5](/course/tech-for-non-technical-founders-2026/first-ten-customers-send-track/) scheduling** | + | `$[deposit]` | **How Sam calculates it:** 1.5 price hypothesis × 12 = year-one ACV. Deposit = 10-30% of ACV. **$500 floor.** When 10% of ACV < $300: charge first month upfront instead. Example: $97/month → $1,164 ACV → 10% = $116 (below floor) → charge $97 (first month) or raise to $500. | **1.5 price × 12** | + | `[Measurable criterion 1/2/3]` | Same as outcomes above but with a verifiable metric. "Report prep time reduced to ≤30 min/week, verified in Friday demo." | **[2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) problem cost** | + | `$[amount] / [month or year]` | Year-one contract price. Based on the 1.5 price hypothesis, refined by what Sam learned in Module 2 interviews and pilot conversations. | **1.5 price → refined by M2-M5** | + | `[monthly / annual]` | Pick one. Annual gives Sam committed revenue; monthly is easier to sell. | Sam's judgment | + | `[Your Name]` | Sam's name | Sam knows this | + | `[Champion Name]` | The person Sam demoed to in 5.5 — their name from the tracking sheet | **[5.5](/course/tech-for-non-technical-founders-2026/first-ten-customers-send-track/) lead info** | +- **📝 Friday Demo follow-up email (after each pilot demo):** + | Blank | How Sam fills it | Source | + |---|---|---| + | `[DATE]` | Today's date — the date of the Friday demo. Forward the Loom to yourself with this date in the subject line. | Calendar | + | `[ONE_LINE_SUMMARY]` | One sentence on what shipped this week — the answer to Q1 from the [Friday Demo Template](/course/tech-for-non-technical-founders-2026/friday-demo-template/). | The demo conversation (team's Q1 answer) | +- **📝 Deposit math:** 1.5 price × 12 = year-one ACV. Deposit = 10-30% of ACV, standard **$500 floor**. Low-price exception: when 10% of ACV < $300, charge the first month's revenue upfront as the deposit instead. Example: $97/month → $1,164 ACV → 10% = $116 (below floor for percentage-based deposit) → charge $97 first month or raise to meet $500 floor. +- **📝 Gate:** Stripe deposit cleared. Standard: ≥$500. Low-price path: whatever was charged as the first-month deposit (≥ first month's value). That cleared deposit is the "first paying customer." +- **📦 Output:** Signed DPA + cleared deposit. This is the final course artifact — completes the `Founder OS` folder. +- **🆘 Plan B — "can we start free?":** Reframe deposit as year-one ACV prepaid, not added cost. +- **🆘 Plan B — "we do not do paid pilots":** Wrong buyer → move to next warm lead. + +### 5.7 · Cold Outbound (OPTIONAL) + +- **⏳ Wait:** 1-2 weeks reply tail +- **💰 Cost:** $0 (Apollo free tier or manual) +- **🔑 Setup:** Apollo free tier at [apollo.io](https://www.apollo.io) (contact enrichment) or manual LinkedIn search. +- **📦 Input:** Warm network exhausted (5.3-5.6 done). **How Sam knows:** the 5.3 50-name list — Champions/Hot/Warm buckets are all at "Replied" or "Deposit cleared" status. +- **📝 3 sector-specific scripts:** B2B SaaS / B2B services / B2C app. Sam picks one based on his product category. +- **🆘 Plan B — 0 replies from 30:** Tighten one of: 4-line script or ICP filter. Re-send 20. + +--- + +## Complete Dependency Chain: Where Every `[BRACKET]` Comes From + +``` +```text +ROUGH IDEA (original input #1) + GMAIL (original input #2) + BROWSER (original input #3) +│ +├─ [1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/): [CUSTOMER] [PROBLEM] [APPROACH] [COMPETITION] [DIFFERENTIATION] ← from Sam's head, refined by Perplexity in [1.2](/course/tech-for-non-technical-founders-2026/smoke-test-build-page/) +│ │ +│ ├─ [1.2](/course/tech-for-non-technical-founders-2026/smoke-test-build-page/): [CUSTOMER] [PROBLEM] [COMPETITION] [DIFFERENTIATION] ← COPY from [1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) blanks +│ │ [verbatim quote 1/2/3] ← Perplexity search using [1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) [CUSTOMER] + [PROBLEM] +│ │ Hero image ← AI generator or Unsplash (free stock photos) +│ │ +│ ├─ [1.3](/course/tech-for-non-technical-founders-2026/smoke-test-wire-tracking/): no blanks — pastes 2 tracking snippets into [1.2](/course/tech-for-non-technical-founders-2026/smoke-test-build-page/) page +│ │ +│ ├─ [1.4](/course/tech-for-non-technical-founders-2026/smoke-test-landing-page-7-day-demand-test/): campaign targeting ← [1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) [CUSTOMER] blank defines audience +│ │ ad account ← new signup, payment method from Sam's wallet +│ │ +│ └─ [1.5](/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/): price number ← web search for 2-3 existing tools in category +│ price framing ← pick ONE from [1.5](/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/) lesson template +│ Stripe account ← bank + tax ID (SSN for US) +│ +├─ [2.1](/course/tech-for-non-technical-founders-2026/mom-test-ask-about-past-not-future/): interview questions ← Mom Test table ([2.1](/course/tech-for-non-technical-founders-2026/mom-test-ask-about-past-not-future/) lesson) + [1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) [PROBLEM]/[COMPETITION] blanks +│ │ +│ ├─ [2.2](/course/tech-for-non-technical-founders-2026/ai-persona-pre-validation-mom-test-prep/) (opt): same question list ← [2.1](/course/tech-for-non-technical-founders-2026/mom-test-ask-about-past-not-future/) draft, tested against AI personas +│ │ +│ ├─ [2.3](/course/tech-for-non-technical-founders-2026/find-10-people-where-to-look/): ICP map prompt ← [1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) [CUSTOMER] + [PROBLEM] blanks + [1.2](/course/tech-for-non-technical-founders-2026/smoke-test-build-page/) Perplexity source URLs +│ │ +│ ├─ [2.4](/course/tech-for-non-technical-founders-2026/find-10-people-with-problem-outreach-2026/): outreach messages ← [1.2](/course/tech-for-non-technical-founders-2026/smoke-test-build-page/) verbatim quotes + [1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) [CUSTOMER]/[PROBLEM] blanks +│ │ +│ ├─ [2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/): Validated Problem Statement ← 10 interview transcripts (NOT [1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) hypothesis) +│ │ Gate: ≥7/10 = BUILD, 4-6 = PIVOT, <4 = KILL +│ │ +│ └─ [2.6](/course/tech-for-non-technical-founders-2026/clickable-prototype-validation-2-hour-lovable/): [PRODUCT CATEGORY] ← [2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) problem statement +│ [CUSTOMER] ← [2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) validated persona +│ [PRIMARY ACTION] ← [2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) problem statement +│ [FAKE DATA] ← invented, realistic to persona +│ [BUTTON LABEL] ← [2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) verbatim interviewee language +│ +├─ [3.1](/course/tech-for-non-technical-founders-2026/one-page-product-brief-vibe-prd/): Section 1 ← VERBATIM COPY of [2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) problem statement +│ Section 2 ← [2.6](/course/tech-for-non-technical-founders-2026/clickable-prototype-validation-2-hour-lovable/) prototype vocabulary + [1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) customer blank +│ Section 3 ← [2.6](/course/tech-for-non-technical-founders-2026/clickable-prototype-validation-2-hour-lovable/) prototype observations +│ Section 4 ← Sam defines from [2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) problem cost +│ Section 5 ← Sam's judgment + AI leakage check +│ │ +│ └─ [3.2](/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/): Section 3 rewrite ← [3.1](/course/tech-for-non-technical-founders-2026/one-page-product-brief-vibe-prd/) Section 3 (feature→outcome job stories) +│ Gate: reviewer names 0 things outside no-go list +│ +├─ [4.1](/course/tech-for-non-technical-founders-2026/should-you-hire-2026-decision-tree/): build-path decision ← [3.2](/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/) quality-checked brief + Sam's runway +│ │ +│ ├─ [4.2](/course/tech-for-non-technical-founders-2026/github-aws-database-ownership-checklist/): GitHub ← new signup [github.com] with Gmail +│ │ AWS ← new signup [aws.amazon.com] with Gmail +│ │ Domain ← purchase at [porkbun.com] ~$10/yr +│ │ +│ ├─ [4.3](/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-lovable-supabase-stripe-2026/): Supabase ← new signup [supabase.com] with Gmail +│ │ Lovable ← signup [lovable.dev] (may exist from [2.6](/course/tech-for-non-technical-founders-2026/clickable-prototype-validation-2-hour-lovable/)) +│ │ 3 pre-flight rules ← [3.2](/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/) brief + scope sentence + GitHub sync +│ │ Scope-leak watchlist ← Claude leakage check on [3.2](/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/) Section 3 +│ │ +│ └─ [4.4](/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-build-phases/): 4 build phases ← [3.2](/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/) brief + [4.3](/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-lovable-supabase-stripe-2026/) stack + [4.2](/course/tech-for-non-technical-founders-2026/github-aws-database-ownership-checklist/) domain +│ Stripe live mode ← [1.5](/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/) account, now switched to live +│ 5 green lights ← each verifiable independently +│ +└─ [5.1](/course/tech-for-non-technical-founders-2026/must-have-segment-pmf-test/): 5 questions ← copy from [5.1](/course/tech-for-non-technical-founders-2026/must-have-segment-pmf-test/) lesson + [2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) persona for Q5 + │ Users ← [1.2](/course/tech-for-non-technical-founders-2026/smoke-test-build-page/)/[1.4](/course/tech-for-non-technical-founders-2026/smoke-test-landing-page-7-day-demand-test/) waitlist + [2.3](/course/tech-for-non-technical-founders-2026/find-10-people-where-to-look/)-[2.4](/course/tech-for-non-technical-founders-2026/find-10-people-with-problem-outreach-2026/) interviewees + [4.4](/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-build-phases/) testers + │ + ├─ [5.2](/course/tech-for-non-technical-founders-2026/channel-selection-before-outbound/) (opt): channel score ← [5.1](/course/tech-for-non-technical-founders-2026/must-have-segment-pmf-test/) Q2-Q3 verbatim answers + │ + ├─ [5.3](/course/tech-for-non-technical-founders-2026/first-ten-customers-network-list/): 50-name spreadsheet ← seed from [2.4](/course/tech-for-non-technical-founders-2026/find-10-people-with-problem-outreach-2026/) interviewees + [1.4](/course/tech-for-non-technical-founders-2026/smoke-test-landing-page-7-day-demand-test/) waitlist + [2.3](/course/tech-for-non-technical-founders-2026/find-10-people-where-to-look/) list + personal network + │ + ├─ [5.4](/course/tech-for-non-technical-founders-2026/first-ten-customers-outreach-message/): Part 2 (problem language) ← [5.1](/course/tech-for-non-technical-founders-2026/must-have-segment-pmf-test/) Q3 verbatim answers + │ Loom recording ← [4.4](/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-build-phases/) MVP walkthrough + │ + ├─ [5.5](/course/tech-for-non-technical-founders-2026/first-ten-customers-send-track/): send sequence ← [5.3](/course/tech-for-non-technical-founders-2026/first-ten-customers-network-list/) bucket labels determine order + │ + └─ [5.6](/course/tech-for-non-technical-founders-2026/paid-pilot-charge-before-ship/): [Your Company Name] ← Sam knows this + [Customer Company Name] ← [5.5](/course/tech-for-non-technical-founders-2026/first-ten-customers-send-track/) lead info + [Outcome 1/2/3] ← [2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) problem + [5.5](/course/tech-for-non-technical-founders-2026/first-ten-customers-send-track/) demo conversation + [Use case 1/2] ← [5.5](/course/tech-for-non-technical-founders-2026/first-ten-customers-send-track/) demo conversation + $[deposit] ← [1.5](/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/) price × 12 × 10-30%, $500 floor + [Measurable criterion 1/2/3] ← [2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) problem cost, verified in demo + $[amount]/[month or year] ← [1.5](/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/) price, refined by M2-M5 + [Your Name] ← Sam knows this + [Champion Name] ← [5.5](/course/tech-for-non-technical-founders-2026/first-ten-customers-send-track/) lead info +``` + +--- + +## Cross-Lesson Wait-Time Dependencies (Run in Parallel) + +These are the things Sam should start EARLY because they block multiple downstream steps: + +| What | When to start | Blocks | How to mitigate | +|---|---|---|---| +| **Stripe verification** | Weekend before 1.5 launch | 1.5 (price button), 5.6 (DPA deposit) | Run email-only smoke test while verifying | +| **Ad account approval** | 2-3 days before 1.4 launch | 1.4 (smoke test traffic) | Meta is slowest; Reddit clears same-day | +| **Interview booking** | Start in 2.3, runs through 2.4 | 2.5 (needs 10 transcripts) | The long pole; plan 2-4 calendar weeks. Book 12-15, expect ~30% no-show | +| **GitHub account** | Before 4.2 | 4.3 (sync), 4.4 (backup) | Create free account in 2 minutes at github.com | +| **GitHub org transfer** | Day of 4.2 audit | 4.3, 4.4 (no repo = no build) | 7 days if contractor cooperates. If not: retain lawyer | +| **AWS root recovery** | Day of 4.2 audit | 4.3, 4.4 (can't deploy) | 3-5 business days via AWS account recovery | +| **Domain registrar transfer** | Day of 4.2 audit | 4.4 (custom domain green light) | Up to 14 days. Start transfer in parallel with 4.3 build | +| **Domain purchase** | During 4.4 Phase 4 | 4.4 (custom domain green light) | $10/yr at porkbun.com | + +--- + +## Total Spend: Sam's Budget Trajectory + +| Module | Minimum | Typical | Maximum (LinkedIn B2B) | +|---|---|---|---| +| **M1** | $0 (organic) | $250-$700 (Meta) | $1,650-$6,600 (LinkedIn) | +| **M2** | $0 | $0 | $500 (research panel fallback) | +| **M3** | $0 | $0 | $0 | +| **M4** | $0 (free tiers) | ~$30/month (entry paid tiers + domain) | ~$80/month | +| **M5** | $0 | $0 | $100/month (Sales Navigator) | +| **Total** | $0 | ~$280-$780 | ~$2,230-$7,280 | + +At every step, a $0 path exists. The course teaches both and lets Sam choose. + +--- + +## Agent Validation Checklist + +Use these verifiable assertions when auditing the course for dependency completeness: + +1. ✅ Every `[BRACKET]` placeholder in every lesson has a documented upstream source in this map +2. ✅ No lesson requires an account or tool that hasn't been set up in an earlier lesson (or is an original input) +3. ✅ Original inputs are exactly: rough idea + Gmail + browser +4. ✅ Every 🔑 setup lists the exact URL Sam visits and what credential he needs +5. ✅ The deposit math in 5.6 traces back to the 1.5 price hypothesis (× 12, × 10-30%, $500 floor) +6. ✅ The DPA success criteria in 5.6 trace back to the 2.5 validated problem statement +7. ✅ The 5.4 outreach message language traces back to 5.1 Q3 verbatim answers +8. ✅ No "just sign up for X" statement exists without a URL and a credential description diff --git a/.okf/log.md b/.okf/log.md index 0e1dcf1ce..ae1547761 100644 --- a/.okf/log.md +++ b/.okf/log.md @@ -31,6 +31,16 @@ per shape, 4 composite-disclaimed vignettes kept, attribution phrases ("we picked up"/"we worked with") now zero course-wide. Teaching numbers preserved as mechanism descriptions. +## 2026-07-18 - Added course architecture concepts +Added two course architecture concepts to `.okf/architecture/`: +[icp-journey-sipoc](/architecture/icp-journey-sipoc.md) — Mermaid flowchart +of Sam's full journey through all 25 lessons, gate thresholds, branch paths, +and artifact handoffs; and [operational-dependency-map](/architecture/operational-dependency-map.md) +— per-lesson operational prerequisites, template blank sources, wait times, +and Plan B recovery paths. Both distilled from +`docs/projects/2605-tech-for-non-technical-founders/30-39-architecture-design/`. +Architecture index updated with the two new entries. + ## 2026-07-18 - Merged blog/site bundle into course bundle Folded a separately-produced Hugo blog/site OKF bundle into this one as two new sibling sections: `architecture/` (hugo-site, css-pipeline, blog-list-page, diff --git a/content/course/tech-for-non-technical-founders-2026/ai-persona-pre-validation-mom-test-prep/index.md b/content/course/tech-for-non-technical-founders-2026/ai-persona-pre-validation-mom-test-prep/index.md index 48cbd2979..8df55d78e 100644 --- a/content/course/tech-for-non-technical-founders-2026/ai-persona-pre-validation-mom-test-prep/index.md +++ b/content/course/tech-for-non-technical-founders-2026/ai-persona-pre-validation-mom-test-prep/index.md @@ -32,7 +32,7 @@ related_posts: false > **Module 2 · Lesson 2.2 · [OPTIONAL]** · [From Idea to First Paying Customer](/course/tech-for-non-technical-founders-2026/) > -> **Input:** your draft Mom Test question list (5-8 questions from Lesson 2.1) + your `[customer]` blank from the Lesson 1.1 hypothesis (the role, company size, and situation it names - that description is your ICP, your Ideal Customer Profile) +> **Input:** your draft Mom Test question list (5-8 questions from Lesson 2.1) + your `[CUSTOMER]` blank from the Lesson 1.1 hypothesis (the role, company size, and situation it names - that description is your ICP, your Ideal Customer Profile) > > **Output:** a sharpened question list (5-7 solid questions) + top 3 objections, ready to take into Lesson 2.3-2.4 recruitment and real interviews > @@ -73,12 +73,12 @@ Stay in character for this entire conversation. Do not break character to explai | Placeholder | Where it lives in your artifacts | |---|---| -| `[ROLE]` | Founding Hypothesis `[customer]` blank (Lesson 1.1) - e.g. "solo chiropractor managing insurance claims" | -| `[INDUSTRY]` + `[COMPANY SIZE]` | Your Lesson 1.1 `[customer]` blank - the company size and situation it names | -| `[PROBLEM DESCRIPTION]` | Founding Hypothesis `[problem]` blank (Lesson 1.1) | -| `[PROBLEM AREA]` | The `[problem]` blank summarized in 2-3 words (e.g. "claim resubmission backlog") | -| `[CURRENT WORKAROUND]` | Founding Hypothesis `[competition]` blank (what they do today) | -| `[YOUR DRAFT QUESTION 1]`, `2`, `3`, ... | Pick one question at a time from your Lesson 2.1 `Mom Test draft - [date]` doc (5-8 question list) | +| `[ROLE]` | Founding Hypothesis `[CUSTOMER]` blank (Lesson 1.1) - e.g. "solo chiropractor managing insurance claims" | +| `[INDUSTRY]` + `[COMPANY SIZE]` | Your Lesson 1.1 `[CUSTOMER]` blank - the company size and situation it names | +| `[PROBLEM DESCRIPTION]` | Founding Hypothesis `[PROBLEM]` blank (Lesson 1.1) | +| `[PROBLEM AREA]` | The `[PROBLEM]` blank summarized in 2-3 words (e.g. "claim resubmission backlog") | +| `[CURRENT WORKAROUND]` | Founding Hypothesis `[COMPETITION]` blank (what they do today) | +| `[YOUR DRAFT QUESTION 1]`, `2`, `3`, ... | Pick one question at a time from your Lesson 2.1 `Mom Test draft - [DATE]` doc (5-8 question list) | | `[QUESTION X]` (in Prompt 5) | Whichever question you want to sharpen from your draft list | | `[PERSONA NAME]`, `[FREQUENCY]`, `[DURATION]`, `[BUDGET RANGE]`, `[REASON]` | Your judgment, anchored to deep-research findings if you ran the deep-research prompt on the [full sprint reference](/course/tech-for-non-technical-founders-2026/reference/hypothesis-sprint-full/) linked from Lesson 1.1 - see fallback below | @@ -101,7 +101,7 @@ Once the persona is set, run your draft questions through four follow-up prompts **If this fails: all 3 personas produce nearly-identical answers.** - **Why:** your persona descriptions are too generic - three variations of the same person, not three different people. -- **Fix:** rewrite them with sharper role, company-size, and urgency differences. If you can't write three distinct personas at all, go back to [Lesson 1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) and tighten the `[customer]` blank first. +- **Fix:** rewrite them with sharper role, company-size, and urgency differences. If you can't write three distinct personas at all, go back to [Lesson 1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) and tighten the `[CUSTOMER]` blank first. --- diff --git a/content/course/tech-for-non-technical-founders-2026/build-path-decision-worksheet/index.md b/content/course/tech-for-non-technical-founders-2026/build-path-decision-worksheet/index.md index b16eac193..c3a43f961 100644 --- a/content/course/tech-for-non-technical-founders-2026/build-path-decision-worksheet/index.md +++ b/content/course/tech-for-non-technical-founders-2026/build-path-decision-worksheet/index.md @@ -161,7 +161,7 @@ The good answer ties budget to runway and to the marketing test that proves the ## What to do after -- **Write your verdict at the top of a fresh Notion doc.** One line: *"Path X (name). Started: [date]. Next: [Lesson 4.3 self-serve / hire-track reference / back to Module 2 to re-validate]."* Pin the doc. Re-read the line every Monday for 4 weeks. +- **Write your verdict at the top of a fresh Notion doc.** One line: *"Path X (name). Started: [DATE]. Next: [Lesson 4.3 self-serve / hire-track reference / back to Module 2 to re-validate]."* Pin the doc. Re-read the line every Monday for 4 weeks. - **Share the worksheet result with one peer or advisor in a 20-minute call.** Not three. One. Ask them: *"If the matrix said Path X, what would change your mind?"* Their first answer is the assumption you should pressure-test next. If they cannot name one, the matrix verdict holds. - **Schedule the first action for tomorrow morning.** Path 1: ship the Carrd page. Path 2: paste one-page brief into Lovable. Path 3: 3 LinkedIn outreach messages to Fractional CTOs in your industry. Path 4: read the SOW clause-by-clause with a printed pen, not in Google Docs. Calendar the action with a hard start time. The worksheet routes the decision; the calendar invite routes the work. diff --git a/content/course/tech-for-non-technical-founders-2026/channel-selection-before-outbound/index.md b/content/course/tech-for-non-technical-founders-2026/channel-selection-before-outbound/index.md index 882c2e018..88fb28cdf 100644 --- a/content/course/tech-for-non-technical-founders-2026/channel-selection-before-outbound/index.md +++ b/content/course/tech-for-non-technical-founders-2026/channel-selection-before-outbound/index.md @@ -64,7 +64,7 @@ After you pull the signal from your transcripts, run one [Claude](https://claude ```text I am a founder building [paste your one-sentence Founding Hypothesis from Lesson 1.1]. -My must-have user is [customer] (your Lesson 5.1 must-have segment - title, company size, industry). +My must-have user is [CUSTOMER] (your Lesson 5.1 must-have segment - title, company size, industry). My price point is [monthly or per-seat price]. From 10 customer interviews, I heard these channel signals: diff --git a/content/course/tech-for-non-technical-founders-2026/clickable-prototype-validation-2-hour-lovable/index.md b/content/course/tech-for-non-technical-founders-2026/clickable-prototype-validation-2-hour-lovable/index.md index 27b206aee..4e4375d22 100644 --- a/content/course/tech-for-non-technical-founders-2026/clickable-prototype-validation-2-hour-lovable/index.md +++ b/content/course/tech-for-non-technical-founders-2026/clickable-prototype-validation-2-hour-lovable/index.md @@ -75,7 +75,7 @@ None of these show up in a Mom Test interview - they only appear the moment a re Open [Lovable](https://lovable.dev), create a new project, and paste the following. Replace all `[PLACEHOLDERS]` with your specific problem and solution. ```text -Build a 3-screen clickable prototype for a [PRODUCT CATEGORY] tool targeting [customer]. +Build a 3-screen clickable prototype for a [PRODUCT CATEGORY] tool targeting [CUSTOMER]. This is a throwaway validation prototype. Use hard-coded fake data only. No backend, no auth, no database. All buttons should navigate between screens or show a static success state. @@ -97,7 +97,7 @@ SCREEN 3 - [RESULT/CONFIRMATION NAME]: Design: Clean, minimal. Dark sidebar, white content area. [YOUR COLOR] accent. No login screen. No settings. No navigation beyond these 3 screens. Make it look functional, not finished. ``` -Where the blanks come from: `[customer]` is your `[customer]` blank from Lesson 1.1; `[PRIMARY ACTION ...]` is the top workaround-replacing action from your Lesson 2.5 validated problem statement; `[FAKE DATA EXAMPLE]` is names and numbers pulled from your interview transcripts. Use the vocabulary you heard in interviews, not the words you use with other founders - if 7 of 10 interviewees called it "matching" and you call it "reconciliation," the prototype uses "matching." +Where the blanks come from: `[CUSTOMER]` is your `[CUSTOMER]` blank from Lesson 1.1; `[PRIMARY ACTION ...]` is the top workaround-replacing action from your Lesson 2.5 validated problem statement; `[FAKE DATA EXAMPLE]` is names and numbers pulled from your interview transcripts. Use the vocabulary you heard in interviews, not the words you use with other founders - if 7 of 10 interviewees called it "matching" and you call it "reconciliation," the prototype uses "matching." ![Build the 3-screen prototype in three moves: open Lovable and paste the prompt template with placeholders filled, read the fake data out loud and change the vocabulary to match the words you heard in interviews, then test all three screens yourself as if you've never seen the idea - leaving with a prototype ready to share as a link to 5 interviewees](prototype-build-strip.svg) @@ -109,7 +109,7 @@ Choose 5 of the 10 interviewees whose Mom Test scores were 7 or higher. Book 30- **The re-engagement message** (paste into LinkedIn DM or reply to your original Lesson 2.3-2.4 thread): -> *"Hi [name] - thank you for the 30 minutes last week. I built a quick clickable prototype based on what you told me about [their specific workaround from the Mom Test transcript]. I'd like 30 more minutes to watch you try it without me explaining anything - just silent observation while you click through. I'll send the link 10 minutes before. Would Tuesday afternoon or Wednesday afternoon work?"* +> *"Hi [NAME] - thank you for the 30 minutes last week. I built a quick clickable prototype based on what you told me about [their specific workaround from the Mom Test transcript]. I'd like 30 more minutes to watch you try it without me explaining anything - just silent observation while you click through. I'll send the link 10 minutes before. Would Tuesday afternoon or Wednesday afternoon work?"* Expect 4-5 of 5 to say yes - the *"I built something based on what you told me"* line signals you listened. During the session, stay silent and record behavior: write down the first buttons they reach for, note any pause over 5 seconds, and never answer their questions or coach them toward the right path. When they finish Screen 3, ask one question: "Describe in one sentence what that tool just did." Write down their exact words. diff --git a/content/course/tech-for-non-technical-founders-2026/customers-leaving-churn-triage-not-acquisition/index.md b/content/course/tech-for-non-technical-founders-2026/customers-leaving-churn-triage-not-acquisition/index.md index 30f42ed7f..66e4d7cf6 100644 --- a/content/course/tech-for-non-technical-founders-2026/customers-leaving-churn-triage-not-acquisition/index.md +++ b/content/course/tech-for-non-technical-founders-2026/customers-leaving-churn-triage-not-acquisition/index.md @@ -164,17 +164,17 @@ Here is the email template that worked for R.'s 18 wrong-segment customers. Send > Subject: Refunding your last 30 days, and a recommendation > -> Hi [first name], +> Hi [FIRST_NAME], > -> I am writing to tell you something I should have figured out earlier. We built [product] as a workflow tool for 3-person teams to share invoice tracking. Looking at how you have been using it - mostly solo, a few times a week - I do not think we built the right product for your situation. The features that make this useful (shared comments, the team activity feed, the assignee column) are not the features you came here for. +> I am writing to tell you something I should have figured out earlier. We built [PRODUCT] as a workflow tool for 3-person teams to share invoice tracking. Looking at how you have been using it - mostly solo, a few times a week - I do not think we built the right product for your situation. The features that make this useful (shared comments, the team activity feed, the assignee column) are not the features you came here for. > -> I am refunding the last 30 days to your card. You should see the credit in 3-5 business days. You can keep using the account through the end of the month if you want; after that I am going to suggest you look at [specific alternative tool], which is built for solo invoice tracking and is one-third the price. +> I am refunding the last 30 days to your card. You should see the credit in 3-5 business days. You can keep using the account through the end of the month if you want; after that I am going to suggest you look at [SPECIFIC_ALTERNATIVE_TOOL], which is built for solo invoice tracking and is one-third the price. > > No pitch, no follow-up. If we ever build a solo version (we are not planning to), I will email you first. > > Thanks for trying us out and for the 6 weeks of payments. > -> [your name] +> [YOUR_NAME] The script does three things at once. It admits the misfit in the founder's voice (not a support template). It hands the user a concrete alternative (so they do not have to start the search over). It removes the future-pitch hook (which is the part wrong-segment users actually appreciate). R.'s response rate to this email was 14 of 18 sent - 11 thank-yous, 2 questions about the alternative tool, 1 angry user, 0 chargebacks. The 1 angry user wanted to keep using the product anyway; she comped them a year and removed their seat from the team metrics. diff --git a/content/course/tech-for-non-technical-founders-2026/fake-stripe-pre-sale-pieter-levels/index.md b/content/course/tech-for-non-technical-founders-2026/fake-stripe-pre-sale-pieter-levels/index.md index 70d369c64..5faf76420 100644 --- a/content/course/tech-for-non-technical-founders-2026/fake-stripe-pre-sale-pieter-levels/index.md +++ b/content/course/tech-for-non-technical-founders-2026/fake-stripe-pre-sale-pieter-levels/index.md @@ -50,9 +50,9 @@ If you're running your first ever smoke test, use [the email-only version](/cour The Stripe Payment Link mechanic is the same as in [Lesson 1.5 (Price Your Hypothesis on the Smoke-Test Page)](/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/) - read that for the full setup walkthrough. The variant-specific changes: -1. **CTA copy.** Replace "Get on the waitlist" with **"Reserve your spot ($1 today, refundable if we don't ship by [date])"**. The "$1 today" + "refundable" combination is the load-bearing phrase. -2. **Thank-you page.** "You're reserved. We'll email you when we ship. Your $1 is fully refundable - just reply to this email and ask." -3. **Footer disclosure.** A one-line "About this pre-order: we are testing demand for [product]. If we don't ship by [date], you get an automatic refund. Your $1 charge appears as JTHOUGHTS-RESERVE on your statement." +1. **CTA copy.** Replace "Get on the waitlist" with **"Reserve your spot ($1 today, refundable if we don't ship by [DATE])"**. The "$1 today" + "refundable" combination is the load-bearing phrase. +2. **Thank-you page.** "You're reserved. We'll email you when we ship. Your $1 is fully refundable. If we don't ship by [DATE], you get an automatic refund within 7 days. If you change your mind sooner, reply to this email and we'll refund within 24 hours." +3. **Footer disclosure.** A one-line "About this pre-order: we are testing demand for [PRODUCT]. If we don't ship by [DATE], you get an automatic refund. Your $1 charge appears as JTHOUGHTS-RESERVE on your statement." 4. **Stripe metadata.** Set the product name to your hypothesis title + "(pre-order)". This shows up on the customer's bank statement and on the refund record. ## Refund discipline (non-negotiable) @@ -60,7 +60,7 @@ The Stripe Payment Link mechanic is the same as in [Lesson 1.5 (Price Your Hypot If the test fails (you don't ship), you refund every $1 charge **automatically** within 30 days. Two reasons: - **Ethics.** People gave you real money for a product that doesn't exist. The refund is the implicit contract. -- **FTC compliance.** US FTC pre-order rules require you to ship within 30 days of the charge unless you disclose the delay in writing AND get the buyer's consent. The blanket "refund if we don't ship by [date]" disclosure on the landing page + thank-you page covers this for the smoke-test window. +- **FTC compliance.** US FTC pre-order rules require you to ship within 30 days of the charge unless you disclose the delay in writing AND get the buyer's consent. The landing-page disclosure ("refundable if we don't ship by [DATE]") is the written delay notice; completing the checkout is the buyer's consent to the disclosed delay. The thank-you page repeats the refund promise. Together they satisfy FTC pre-order requirements for the smoke-test window. Set a calendar reminder for Day 25 of the test window. If you haven't started the build by then, log into Stripe and refund all charges in one batch (Dashboard > Payments > select all > Refund). Takes 5 minutes. diff --git a/content/course/tech-for-non-technical-founders-2026/faq/index.md b/content/course/tech-for-non-technical-founders-2026/faq/index.md index 194a56dbd..1f8ba4cc3 100644 --- a/content/course/tech-for-non-technical-founders-2026/faq/index.md +++ b/content/course/tech-for-non-technical-founders-2026/faq/index.md @@ -61,7 +61,7 @@ Two fixes: (1) Your hypothesis is too vague - "small business owners" is not a s **Q: Everyone I interview says "sounds great" but nobody gives me real data.** -Your questions are probably hypothetical-shaped. "Would you use a tool like this?" generates polite yeses from anyone. Switch to past-tense: "When was the last time you dealt with [problem]? Walk me through what happened." The [Mom Test chapter](/course/tech-for-non-technical-founders-2026/mom-test-ask-about-past-not-future/) has the 5-question template that fixes this. +Your questions are probably hypothetical-shaped. "Would you use a tool like this?" generates polite yeses from anyone. Switch to past-tense: "When was the last time you dealt with [PROBLEM]? Walk me through what happened." The [Mom Test chapter](/course/tech-for-non-technical-founders-2026/mom-test-ask-about-past-not-future/) has the 5-question template that fixes this. **Q: Should I skip the AI persona rehearsal (Lesson 2.2)?** diff --git a/content/course/tech-for-non-technical-founders-2026/find-10-people-where-to-look/index.md b/content/course/tech-for-non-technical-founders-2026/find-10-people-where-to-look/index.md index f8f7063b0..19a4bb6d2 100644 --- a/content/course/tech-for-non-technical-founders-2026/find-10-people-where-to-look/index.md +++ b/content/course/tech-for-non-technical-founders-2026/find-10-people-where-to-look/index.md @@ -37,7 +37,7 @@ related_posts: false > > **Progress:** M2 · 3 of 6 · Results so far: question list ready to run -> **TL;DR (Part 1 of 2):** Expand your one-sentence hypothesis from Lesson 1.1 into three sentences (a short step below), paste them into Claude, and get back the ICP profile (ICP = Ideal Customer Profile - the specific kind of person your hypothesis's [customer] blank names) + exact communities + search strings. Read where your ICP is already complaining. Build a 30-name list. [Part 2: What to Say](/course/tech-for-non-technical-founders-2026/find-10-people-with-problem-outreach-2026/) covers the message templates, cadence, and follow-up sequence. +> **TL;DR (Part 1 of 2):** Expand your one-sentence hypothesis from Lesson 1.1 into three sentences (a short step below), paste them into Claude, and get back the ICP profile (ICP = Ideal Customer Profile - the specific kind of person your hypothesis's [CUSTOMER] blank names) + exact communities + search strings. Read where your ICP is already complaining. Build a 30-name list. [Part 2: What to Say](/course/tech-for-non-technical-founders-2026/find-10-people-with-problem-outreach-2026/) covers the message templates, cadence, and follow-up sequence. The instinctive first move is "I'll just message my LinkedIn network" - sixty polite DMs that produce 3 calls, two of them old colleagues being nice. The technique below replaces it: read where strangers already complain about your exact problem, then write back to those specific complainers. Same hypothesis, same hours, different place to look - and it fills a calendar with 10+ booked interviews instead of 2-3 polite ones. @@ -57,9 +57,9 @@ These are not new homework - they are your 1.1 Founding Hypothesis blanks, unpac | Profile | What to write | Bad vs Good | |---------|---------------|------------| -| **Customer (one sentence)** | Your `[customer]` blank, expanded: *who* is this person in real-world detail - role, company size, the moment in their week when the pain happens. (If you ran the optional Lesson 2.2 persona rehearsal you already sketched role/industry/size - reuse it here.) | Bad: "small-business owners"
Good: "a 12-person law-firm office manager on Friday afternoon trying to invoice ten clients before Quickbooks logs her out" | +| **Customer (one sentence)** | Your `[CUSTOMER]` blank, expanded: *who* is this person in real-world detail - role, company size, the moment in their week when the pain happens. (If you ran the optional Lesson 2.2 persona rehearsal you already sketched role/industry/size - reuse it here.) | Bad: "small-business owners"
Good: "a 12-person law-firm office manager on Friday afternoon trying to invoice ten clients before Quickbooks logs her out" | | **Business (one sentence)** | The one line your hypothesis doesn't carry: what kind of business are *you* building? B2B SaaS, B2B services, B2C app, marketplace. Free or paid. Self-serve or sales-led. | Bad: "a SaaS tool"
Good: "B2B SaaS, self-serve, $29-49/month annual billing" | -| **Solution (one sentence)** | Your `[approach]` blank, rewritten as the change it makes. You won't pitch this in calls, but you need it written down to know which conversations confirm or kill it. | Bad: "a tool that automates invoicing"
Good: "I think a one-click invoice export to Stripe and Wave saves the office manager 90 minutes every Friday" | +| **Solution (one sentence)** | Your `[APPROACH]` blank, rewritten as the change it makes. You won't pitch this in calls, but you need it written down to know which conversations confirm or kill it. | Bad: "a tool that automates invoicing"
Good: "I think a one-click invoice export to Stripe and Wave saves the office manager 90 minutes every Friday" | If you can't write all three on a single napkin, do that first. @@ -80,14 +80,14 @@ My hypothesis (3 sentences): - Solution: [paste your solution sentence] Two competitors or adjacent products serving a similar customer -(start from the `[competition]` blank in your 1.1 hypothesis - what +(start from the `[COMPETITION]` blank in your 1.1 hypothesis - what your customer uses today): -- [competitor 1 URL] -- [competitor 2 URL] +- [COMPETITOR_1_URL] +- [COMPETITOR_2_URL] Seed pains from real posts (optional, from your Lesson 1.2 research): -- "[customer quote]" -- "[customer quote]" +- "[CUSTOMER_QUOTE]" +- "[CUSTOMER_QUOTE]" Return: 1. A sharper ICP profile (role, industry, company size, the moment in their week when the pain happens, one quote in their language). @@ -95,12 +95,12 @@ Return: 3. 5 Google + LinkedIn search strings I can paste in today to find named people complaining about this problem (use `site:`, quotes, and `intext:` where helpful). 4. 5 second-degree adjacent search terms I might miss (workarounds they use, related complaints, tool names they'd mention while frustrated). -If you cannot describe a real community for any item, respond with "NOT FOUND - [item]" rather than guessing. +If you cannot describe a real community for any item, respond with "NOT FOUND - [ITEM]" rather than guessing. ``` > No competitor URLs yet? Ask Claude or ChatGPT to name 3-5 competitors for your one-sentence hypothesis, or Google your problem in plain words plus `tool` or `software` and grab the top 2 results that aren't blog posts. -If a community the AI proposes is dead or off-topic, drop it and ask: `Suggest 3 alternatives more focused on [vertical].` +If a community the AI proposes is dead or off-topic, drop it and ask: `Suggest 3 alternatives more focused on [VERTICAL].` ## Read where they're already complaining diff --git a/content/course/tech-for-non-technical-founders-2026/find-10-people-with-problem-outreach-2026/index.md b/content/course/tech-for-non-technical-founders-2026/find-10-people-with-problem-outreach-2026/index.md index cc63d8b89..aaf7f63fb 100644 --- a/content/course/tech-for-non-technical-founders-2026/find-10-people-with-problem-outreach-2026/index.md +++ b/content/course/tech-for-non-technical-founders-2026/find-10-people-with-problem-outreach-2026/index.md @@ -57,9 +57,9 @@ You can do this from Gmail and a [NeetoCal](https://www.neeto.com/neetocal) book The Day-0 message is the one that has to work - the whole sequence rests on a first line that names something they actually wrote. Copy it verbatim, replace the brackets with their words from when you read where they're complaining in [Part 1](/course/tech-for-non-technical-founders-2026/find-10-people-where-to-look/), not yours: -> Subject: your post about [their exact words] +> Subject: your post about [THEIR_EXACT_WORDS] > -> Hi [name] - you wrote that [ONE SPECIFIC LINE FROM THEIR POST, PARAPHRASED]. I'm researching exactly that problem and would trade 20 minutes for everything you learned the hard way. No pitch, nothing to sell - I don't even have a product yet. Would [DAY] or [DAY] work? Booking link if that's easier: [NEETOCAL LINK] +> Hi [NAME] - you wrote that [ONE SPECIFIC LINE FROM THEIR POST, PARAPHRASED]. I'm researching exactly that problem and would trade 20 minutes for everything you learned the hard way. No pitch, nothing to sell - I don't even have a product yet. Would [DAY] or [DAY] work? Booking link if that's easier: [NEETOCAL LINK] Full 3-message sequence (Day 0 + Day 3 bump + Day 7 close) - copy it from the [Outreach Sequence Template](/course/tech-for-non-technical-founders-2026/outreach-sequence-template/). @@ -71,7 +71,7 @@ Teresa Torres names three reasons a stranger turns down an interview ask, and th - **Limited time** - ask for 20 minutes, not "a quick chat" or an open-ended hour. The Day-0 template already does this. - **Unclear benefit** - say what they get out of it. Talking about their own expertise to someone actually listening is the benefit; the opener leans on it. -- **Fear of the unknown** - people hesitate when they can't picture how the time will be spent. This is the one most first drafts skip. Tell them exactly what happens with one added sentence: *"We'll walk through what happened the last time you [problem] - no prep, no pitch."* Drop it into the Day-0 message right after the ask. +- **Fear of the unknown** - people hesitate when they can't picture how the time will be spent. This is the one most first drafts skip. Tell them exactly what happens with one added sentence: *"We'll walk through what happened the last time you [PROBLEM] - no prep, no pitch."* Drop it into the Day-0 message right after the ask. ### Volume targets @@ -105,7 +105,7 @@ flowchart TD ``` - **Research panel** - if your ICP can't be reached cold (a CFO at a regulated bank, an oncology nurse), a paid panel like [User Interviews](https://userinterviews.com) or [Respondent](https://respondent.io) books screened interviewees for a few hundred dollars. Use it only when replies run thin. -- **Smoke-test landing page** - the page from [Lesson 1.4](/course/tech-for-non-technical-founders-2026/smoke-test-landing-page-7-day-demand-test/) doubles as your warmest opener: *"You signed up for the waitlist on [page] last Tuesday - up for a 20-minute call?"* +- **Smoke-test landing page** - the page from [Lesson 1.4](/course/tech-for-non-technical-founders-2026/smoke-test-landing-page-7-day-demand-test/) doubles as your warmest opener: *"You signed up for the waitlist on [PAGE] last Tuesday - up for a 20-minute call?"* Both tracks, the parallel-run logic, and the part-time founder's batch-send variant are in the [full reference](/course/tech-for-non-technical-founders-2026/reference/find-10-people-full/). diff --git a/content/course/tech-for-non-technical-founders-2026/first-paying-customer-operating-kit/index.md b/content/course/tech-for-non-technical-founders-2026/first-paying-customer-operating-kit/index.md index 010bfedfe..aa2a99550 100644 --- a/content/course/tech-for-non-technical-founders-2026/first-paying-customer-operating-kit/index.md +++ b/content/course/tech-for-non-technical-founders-2026/first-paying-customer-operating-kit/index.md @@ -116,7 +116,7 @@ The Stripe deposit cleared on Friday. The pilot starts Monday. Your customer is | **0-5** | Introductions | Founder + 1-2 customer stakeholders by name; one-line each on what each person wants from the pilot (champion's measurable win + power-user's daily-job-to-be-done) | Each name + job-to-be-done in your Notion doc | | **5-15** | Success criteria recap from the DPA | Read aloud the 1-3 success criteria you wrote into the Design Partner Agreement. Confirm the customer still agrees with them this week. Ask: "If we hit these by Friday week 4, do you renew at the standard price?" | One-line yes/no answer recorded | | **15-30** | Friday demo cadence | Lock the recurring Friday 15-min demo slot for 4 weeks. You demo what shipped that week against the success criteria. Customer brings one piece of feedback or one new question. Calendar invites sent during the call. | 4 calendar invites on both sides | -| **30-40** | Shared Slack / Discord / WhatsApp channel | Create the channel during the call. Add 2 customer-side stakeholders + you. Standing rule: bug reports go in the channel, not email. Channel name: `pilot-[customer-name]`. | Channel live + invite link shared | +| **30-40** | Shared Slack / Discord / WhatsApp channel | Create the channel during the call. Add 2 customer-side stakeholders + you. Standing rule: bug reports go in the channel, not email. Channel name: `pilot-[CUSTOMER_NAME]`. | Channel live + invite link shared | | **40-50** | Single point of contact + escalation | Identify the one person on each side who owns "is this pilot on track?" Customer side is usually the champion who signed the DPA, not their CTO. Your side is you. Escalation path: if the champion is unreachable for 7 days, you escalate to who? Document. | Escalation tree in Notion | | **50-60** | Week 1 commitment + go/no-go gate naming | What ships this week (1-3 specific things, not a roadmap). When the go/no-go gate runs (end of week 4, by default - the [DPA template](/course/tech-for-non-technical-founders-2026/paid-pilot-charge-before-ship/) covers this). What "go" means (renew at standard price) and what "no-go" means (refund or graceful exit, no hard feelings, written reference from the customer). | Week 1 commitment + go/no-go date on both calendars | diff --git a/content/course/tech-for-non-technical-founders-2026/first-ten-customers-network-list/index.md b/content/course/tech-for-non-technical-founders-2026/first-ten-customers-network-list/index.md index 38d618c65..62369f3e3 100644 --- a/content/course/tech-for-non-technical-founders-2026/first-ten-customers-network-list/index.md +++ b/content/course/tech-for-non-technical-founders-2026/first-ten-customers-network-list/index.md @@ -40,7 +40,7 @@ related_posts: false Nearly every one of today's fastest-growing B2B startups got their first 10 customers from people who already knew the founder. Founders skip this step because it feels like begging. It's not. It's the highest-probability first sale you'll ever make. -After this lesson you will be able to: **sort 50 names into 4 outreach buckets so you know exactly who to message first.** +> → **Mia found 50 names** across LinkedIn, her old school contacts, and the parents' association. Five had already complained to her about the tutor search - those went straight into her champion bucket. [Full walkthrough →](/course/tech-for-non-technical-founders-2026/module-5-walkthrough-mia/) --- diff --git a/content/course/tech-for-non-technical-founders-2026/first-ten-customers-outreach-message/index.md b/content/course/tech-for-non-technical-founders-2026/first-ten-customers-outreach-message/index.md index 52cd18a2b..6656857f3 100644 --- a/content/course/tech-for-non-technical-founders-2026/first-ten-customers-outreach-message/index.md +++ b/content/course/tech-for-non-technical-founders-2026/first-ten-customers-outreach-message/index.md @@ -47,10 +47,10 @@ Every message follows the same 4-part structure. What changes by bucket is the o | Bucket | Opener | |---|---| -| **Champions** | "Hey [name], you mentioned [the exact thing they said] back in [month]. Still happening?" | -| **Hot** | "Hey [name], just saw [a specific thing they posted or shipped recently]. Have a question about [the problem]." | -| **Warm** | "Hey [name], have not caught up since [the last specific touchpoint]. Working on something I think you might have a take on." | -| **Cold** | "Hey [name], a true one-line reference ('we were both in the Acme batch')." | +| **Champions** | "Hey [NAME], you mentioned [the exact thing they said] back in [MONTH]. Still happening?" | +| **Hot** | "Hey [NAME], just saw [a specific thing they posted or shipped recently]. Have a question about [THE_PROBLEM]." | +| **Warm** | "Hey [NAME], have not caught up since [the last specific touchpoint]. Working on something I think you might have a take on." | +| **Cold** | "Hey [NAME], a true one-line reference ('we were both in the Acme batch')." | If no real reference exists for a cold-bucket name, move them to [Lesson 5.7 cold outbound](/course/tech-for-non-technical-founders-2026/outbound-without-sales-team/) instead. @@ -58,7 +58,7 @@ If no real reference exists for a cold-bucket name, move them to [Lesson 5.7 col **Part 3: A Loom video, not a paragraph.** Record one 90-second Loom. Show your product in 60 seconds, you on camera for the other 30. The Loom script comes directly from your Lesson 5.1 verbatims. Read the Q2-Q3 quotes aloud, then point at the product feature that addresses the pain they describe. -**Part 4: A specific ask.** "15 minutes to walk you through it and see if it solves [the problem]? Open to a paid pilot if it does. Calendly: [link]." (Calendly is a free scheduling page that lets people pick a call slot without the email back-and-forth.) The "paid pilot" teaser is load-bearing - you only *mention* it here. The full mechanic, contract, and deposit live in [5.6](/course/tech-for-non-technical-founders-2026/paid-pilot-charge-before-ship/), which you'll read before any money is due. +**Part 4: A specific ask.** "15 minutes to walk you through it and see if it solves [THE_PROBLEM]? Open to a paid pilot if it does. Calendly: [LINK]." (Calendly is a free scheduling page that lets people pick a call slot without the email back-and-forth.) The "paid pilot" teaser is load-bearing - you only *mention* it here. The full mechanic, contract, and deposit live in [5.6](/course/tech-for-non-technical-founders-2026/paid-pilot-charge-before-ship/), which you'll read before any money is due. **Total length:** 5-7 sentences. Anything longer and the recipient skims and forgets. diff --git a/content/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/index.md b/content/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/index.md index d94121953..350377b30 100644 --- a/content/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/index.md +++ b/content/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/index.md @@ -41,7 +41,7 @@ A first-time founder usually treats their strategy as a fact ("parents need this A **Founding Hypothesis** is a fill-in-the-blanks sentence (Mad Libs style) from Jake Knapp and John Zeratsky's *Click* (2025): -> *"If we help `[customer]` solve `[problem]` with `[approach]`, they'll choose it over `[competition]` because `[differentiation]`."* +> *"If we help `[CUSTOMER]` solve `[PROBLEM]` with `[APPROACH]`, they'll choose it over `[COMPETITION]` because `[DIFFERENTIATION]`."* Five blanks. One sentence - not a deck - because a sentence can't hide vague thinking, and because you'll reuse it everywhere: it feeds your landing-page headline in 1.2 (reshaped into a customer-plus-outcome one-liner) and tells Module 2 who to interview and which problem to ask about (you keep the sentence to yourself in interviews - pitching it contaminates the answers). The discipline is filling all five blanks with specifics, not categories. @@ -49,9 +49,9 @@ Each blank is an assumption, and each assumption has a test waiting for it later | Blank | Where it gets tested | |---|---| -| `[customer]` + `[problem]` | Strangers recognize themselves in your headline (1.2), then ten Mom Test interviews confirm the pain (Module 2) | -| `[approach]` | A clickable prototype in front of 5 interviewees (Module 2) | -| `[competition]` + `[differentiation]` | 300 cold strangers convert on your page - or don't (1.4) | +| `[CUSTOMER]` + `[PROBLEM]` | Strangers recognize themselves in your headline (1.2), then ten Mom Test interviews confirm the pain (Module 2) | +| `[APPROACH]` | A clickable prototype in front of 5 interviewees (Module 2) | +| `[COMPETITION]` + `[DIFFERENTIATION]` | 300 cold strangers convert on your page - or don't (1.4) | | The whole bet: will they pay? | The Stripe price test (1.5) | **Why this works:** when the sentence is vague, people nod politely because there's nothing to disagree with; when it's specific, they push back - and the pushback is what you're after: @@ -61,11 +61,11 @@ Each blank is an assumption, and each assumption has a test waiting for it later **What makes a blank specific:** -- **`[customer]`**: the specific person - "solo chiropractors," not "small businesses" -- **`[problem]`**: what they tried and failed at in the last 30 days, in their words -- **`[approach]`**: the shape of your solution - "one-click resubmit," not "AI-powered workflow" -- **`[competition]`**: what they currently use (a spreadsheet, a billing service, "doing nothing") -- **`[differentiation]`**: why they'd switch - faster or cheaper, with numbers +- **`[CUSTOMER]`**: the specific person - "solo chiropractors," not "small businesses" +- **`[PROBLEM]`**: what they tried and failed at in the last 30 days, in their words +- **`[APPROACH]`**: the shape of your solution - "one-click resubmit," not "AI-powered workflow" +- **`[COMPETITION]`**: what they currently use (a spreadsheet, a billing service, "doing nothing") +- **`[DIFFERENTIATION]`**: why they'd switch - faster or cheaper, with numbers ![5 blanks of the Mad Libs hypothesis sentence with a filled example below](hypothesis-mad-libs.svg) @@ -92,13 +92,13 @@ Score each lens 1-5. Be honest - this is for you, not an investor deck. > 2. Fill each blank with the most specific noun you can. If a blank says "small businesses," rewrite it until it names one person in one industry. > 3. Score your sentence using the four lenses above. > 4. **Success check:** total ≥14/20 (or ≥11/15 if Money is blank) AND no lens below 2. -> 5. Save the sentence to a Google Doc titled `Founding Hypothesis - [today's date]`, inside a new Google Drive folder called `Founder OS` - every module adds an artifact to that folder, and by the course's end it is your evidence pack. You'll paste it verbatim into Lessons 1.2, 1.4, and 1.5. Module 2 uses it too - to choose who you interview and what you ask about - but you never read it to an interviewee. +> 5. Save the sentence to a Google Doc titled `Founding Hypothesis - [TODAY'S_DATE]`, inside a new Google Drive folder called `Founder OS` - every module adds an artifact to that folder, and by the course's end it is your evidence pack. You'll paste it verbatim into Lessons 1.2, 1.4, and 1.5. Module 2 uses it too - to choose who you interview and what you ask about - but you never read it to an interviewee. --- **If this fails: your sentence scores below 14 or has a lens at 1.** - **Why:** a blank is still a category, not a specific noun. -- **Fix:** find a verbatim quote from a real person complaining about this problem ([Reddit](https://www.reddit.com/), [G2 reviews](https://www.g2.com/), or a conversation you had). The fastest way: the copy-paste research prompt in [Lesson 1.2](/course/tech-for-non-technical-founders-2026/smoke-test-build-page/) hands Perplexity your `[customer]` and `[problem]` blanks and returns 5-8 sourced quotes. Replace your `[problem]` blank with their exact words. If you don't have a quote yet, leave the `[problem]` blank as a placeholder and complete 1.2 - you'll fill it after Module 2 interviews. +- **Fix:** find a verbatim quote from a real person complaining about this problem ([Reddit](https://www.reddit.com/), [G2 reviews](https://www.g2.com/), or a conversation you had). The fastest way: the copy-paste research prompt in [Lesson 1.2](/course/tech-for-non-technical-founders-2026/smoke-test-build-page/) hands Perplexity your `[CUSTOMER]` and `[PROBLEM]` blanks and returns 5-8 sourced quotes. Replace your `[PROBLEM]` blank with their exact words. If you don't have a quote yet, leave the `[PROBLEM]` blank as a placeholder and complete 1.2 - you'll fill it after Module 2 interviews. **If this fails: every blank is specific but the sentence still sounds generic.** - **Why:** you're writing in market-research language instead of customer language. diff --git a/content/course/tech-for-non-technical-founders-2026/friday-demo-template/index.md b/content/course/tech-for-non-technical-founders-2026/friday-demo-template/index.md index 487cf4153..16ef56bc4 100644 --- a/content/course/tech-for-non-technical-founders-2026/friday-demo-template/index.md +++ b/content/course/tech-for-non-technical-founders-2026/friday-demo-template/index.md @@ -111,7 +111,7 @@ Forward the Loom URL to your own inbox with the date in the subject line. After > **📧 Copy-pasteable follow-up email - forward after each demo:** > -> Subject: `Friday demo - [date] - [one-line summary]` +> Subject: `Friday demo - [DATE] - [ONE_LINE_SUMMARY]` > > Forwarding the Loom from today's demo. [One sentence on what shipped.] [One sentence on what's blocked.] [One sentence on what's next.] > diff --git a/content/course/tech-for-non-technical-founders-2026/hire-track-supplementary-reference/index.md b/content/course/tech-for-non-technical-founders-2026/hire-track-supplementary-reference/index.md index 8f842acee..f4d78c3dc 100644 --- a/content/course/tech-for-non-technical-founders-2026/hire-track-supplementary-reference/index.md +++ b/content/course/tech-for-non-technical-founders-2026/hire-track-supplementary-reference/index.md @@ -222,7 +222,7 @@ If your contractor or FCTO proposes any of these in week 1, push back hard. They When you interview a contractor or FCTO, ask these three questions before signing anything. The right answers map to the recommendations above; the wrong answers are the red flags. 1. **"What stack would you build this in, and why?"** Good answer: "Rails (or Laravel/Django depending on team) - I can ship a working signup + paywall + one workflow end-to-end in 4-6 weeks solo, and the hire pool for the next engineer is deep." Bad answer: a 3-stack architecture diagram, or "whatever you prefer." The first signals over-engineering; the second signals they have no opinion (which means they'll default to what's trendy). -2. **"If we hit 5,000 paying users, what breaks first?"** Good answer: a specific component (database read replicas, background job queue, image processing). Bad answer: "we'll rewrite in [new stack] then." Rewrite-driven engineers are expensive. +2. **"If we hit 5,000 paying users, what breaks first?"** Good answer: a specific component (database read replicas, background job queue, image processing). Bad answer: "we'll rewrite in [NEW_STACK] then." Rewrite-driven engineers are expensive. 3. **"How many other engineers can I hire who would be productive in this stack within 30 days?"** Good answer: a real number for your market (Rails: thousands worldwide; Laravel: similar; Django: similar; Elixir or Clojure: dozens; Rust web framework: a handful). Bad answer: vagueness, or "we don't need to think about that yet." The Indie Hackers community spent the last decade learning what one-person and two-person engineering teams can sustain. The answer almost always rhymes with Rails / Laravel / Django + Postgres + a single hosted deployment + boring open-source libraries. Trust the empirical evidence; resist the JavaScript fashion cycle. diff --git a/content/course/tech-for-non-technical-founders-2026/hiring-interview-script/index.md b/content/course/tech-for-non-technical-founders-2026/hiring-interview-script/index.md index 5e5fe6dc4..2d0e39e01 100644 --- a/content/course/tech-for-non-technical-founders-2026/hiring-interview-script/index.md +++ b/content/course/tech-for-non-technical-founders-2026/hiring-interview-script/index.md @@ -32,9 +32,9 @@ Template companion to the [Hire Track Supplementary Reference](/course/tech-for- > > Subject: `[Date] interview prep - 7 questions` > -> Hi [first name], +> Hi [FIRST_NAME], > -> Looking forward to our call [tomorrow / Tuesday]. Here are the 7 questions we will work through together. Please come prepared to share your screen for Q3 and Q7. +> Looking forward to our call [TOMORROW_OR_TUESDAY]. Here are the 7 questions we will work through together. Please come prepared to share your screen for Q3 and Q7. > > [Paste Q1-Q7 from below - the bold headers only, not the scoring criteria.] > @@ -180,7 +180,7 @@ If you booked a reference call, the next step is the [SOW reading guide](/course > > Subject: `[Date] interview - follow-up` > -> Hi [first name], +> Hi [FIRST_NAME], > > Thank you for the time today. We are pausing the search to refine our requirements. We will keep your details on file. > diff --git a/content/course/tech-for-non-technical-founders-2026/how-this-course-works/index.md b/content/course/tech-for-non-technical-founders-2026/how-this-course-works/index.md index 11a51a3e1..6c650b44f 100644 --- a/content/course/tech-for-non-technical-founders-2026/how-this-course-works/index.md +++ b/content/course/tech-for-non-technical-founders-2026/how-this-course-works/index.md @@ -61,6 +61,8 @@ This course takes a non-technical founder from a rough idea to a signed paid pil | 1.4 | Run 300 cold visitors and read the signal | Ad platform of choice | | 1.5 | Add a Stripe price button to measure payment intent | Stripe Payment Links | +> → **Mia's Module 1:** spent $400 on Meta ads, 300 cold visitors, 6.5% conversion, six pre-orders at $99 each - before a line of product code. [Full walkthrough →](/course/tech-for-non-technical-founders-2026/module-1-walkthrough-mia/) + **Before you write the hypothesis:** spend 30 minutes with [Perplexity](https://www.perplexity.ai/) (an AI search engine that answers questions with cited sources). Ask it to find the top 5 user complaints about existing solutions in your niche, citing reviews from [G2](https://www.g2.com/) and [Capterra](https://www.capterra.com/) (the two big business-software review sites). Use the exact vocabulary from real complaints in your hypothesis blanks. If nobody is complaining about the problem anywhere online, the hypothesis is already in trouble. > **AI research layer (pre-hypothesis):** Perplexity + Trend Seeker (both have free tiers). Purpose: confirm people are actually searching for or complaining about the problem BEFORE you write a hypothesis about it. Verbatim quotes from Reddit and G2 feed directly into your landing page headline. @@ -80,6 +82,8 @@ This course takes a non-technical founder from a rough idea to a signed paid pil | 2.5 | Score the transcripts and make the build / pivot / kill call | Mom Test Synthesis page | | 2.6 | Build a throwaway 3-screen clickable prototype | Lovable | +> → **Mia's Module 2:** rehearsed questions with an AI persona, booked 10 interviews from a 30-name list, scored the transcripts to reach "build," and tested a clickable prototype with five parents. [Full walkthrough →](/course/tech-for-non-technical-founders-2026/module-2-walkthrough-mia/) + **The Mom Test is irreplaceable.** AI tools can tell you what people say online, but they cannot tell you whether a specific human will open their wallet. Without the interviews, you're building features for a problem nobody confirmed exists. > **After interviews, before the brief:** run your refined hypothesis through IdeaProof (free tier to start). Its multi-model ensemble stress-tests your business logic and catches legal, economic, and competitive blind spots you haven't considered. @@ -96,6 +100,8 @@ This course takes a non-technical founder from a rough idea to a signed paid pil | 3.1 | Write a one-page Product Brief - "Vibe PRD" (PRD = Product Requirements Document; the "Vibe" version is a one-pager an AI builder can act on, not a 30-page spec for a 6-person team) | Vibe PRD Template | | 3.2 | Quality-check: rewrite features as outcome-shaped job stories | Claude or ChatGPT | +> → **Mia's Module 3:** turned ten scored transcripts into a one-page product brief where every feature traced back to something a parent actually said. [Full walkthrough →](/course/tech-for-non-technical-founders-2026/module-3-walkthrough-mia/) + The brief is the handoff document. It goes to Lovable, a hired developer, or a fractional CTO. It prevents over-engineering because it describes what the customer needs to accomplish, not what features to build. Every feature in the brief must trace back to a verbatim quote from a Module 2 interview. --- @@ -113,6 +119,8 @@ The brief is the handoff document. It goes to Lovable, a hired developer, or a f | 4.4 | Walk the 4 build phases to a live MVP at a real URL | Same stack + a domain in your name | | 4.5 (optional) | Spot the 5 ceiling signals that mean it's time to graduate beyond no-code | Monthly calendar block | +> → **Mia's Module 4:** chose self-serve, locked ownership of every account, walked the four build phases, and shipped TutorMatch on Lovable + Supabase + Stripe - her spouse signed up in Phase 2. [Full walkthrough →](/course/tech-for-non-technical-founders-2026/module-4-walkthrough-mia/) +> > **Before you write code: the $0 Concierge MVP.** If you're not ready to commit to a full Lovable build, use Tally + Zapier (or Make.com) + Airtable to simulate your product's backend. Collect customer requests through a Tally form, route them to Airtable via Zapier, and process them manually. The customer experiences a working product. You validate demand before writing a line of code. All three tools have free tiers. --- @@ -132,6 +140,8 @@ The brief is the handoff document. It goes to Lovable, a hired developer, or a f | 5.6 | Sign a Design Partner Agreement - "DPA" (a short contract where a customer pays a deposit to test your product as a co-design partner; cheaper and faster than a full enterprise contract) - with a refundable deposit | DPA template + Stripe | | 5.7 (optional) | Go cold outbound: 30 filtered messages, book 1-2 pilots | LinkedIn Sales Navigator or manual | +> → **Mia's Module 5:** sent her DPA to the warmest lead from her champion bucket - the $1,200 deposit cleared before she built anything new. [Full walkthrough →](/course/tech-for-non-technical-founders-2026/module-5-walkthrough-mia/) + **Important distinction:** your warm network is the right place to sell your first paid pilot, and the wrong place to validate the problem. Friends and other founders will tell you your idea is great because they're being polite. Only cold strangers who describe the problem in their own words and pay money produce a real signal. > **Going further:** After your first paid pilot, the course has continuation chapters for churn triage, pivot-or-persevere decisions, hiring, management (Friday Demo Rule, Weekly Dev Report), and AI-era topics (token bill auditing, slopsquatting, agency AI questions). diff --git a/content/course/tech-for-non-technical-founders-2026/module-1-walkthrough-mia/index.md b/content/course/tech-for-non-technical-founders-2026/module-1-walkthrough-mia/index.md index 6bf72d653..996a167b5 100644 --- a/content/course/tech-for-non-technical-founders-2026/module-1-walkthrough-mia/index.md +++ b/content/course/tech-for-non-technical-founders-2026/module-1-walkthrough-mia/index.md @@ -43,7 +43,7 @@ She closed the doc and opened Reddit. r/Dyslexia. She searched "tutor." The thir > *"I've called 11 tutoring centers this month. Five never called back. Three said they don't specialize in dyslexia. Two had waitlists. One told me their 'learning differences' program was a generic curriculum with a different label."* -Mia copied the post into her notes. The blanks she'd left empty an hour earlier suddenly had specific names. The `[customer]` wasn't "parents" - it was parents of kids 8-14 with dyslexia or ADHD. The `[problem]` wasn't "finding tutors" - it was *finding a vetted specialist tutor*. The `[competition]` wasn't Google the company - it was the exact behavior the Vermont mother had described: Googling and calling dead numbers. By midnight her hypothesis read: +Mia copied the post into her notes. The blanks she'd left empty an hour earlier suddenly had specific names. The `[CUSTOMER]` wasn't "parents" - it was parents of kids 8-14 with dyslexia or ADHD. The `[PROBLEM]` wasn't "finding tutors" - it was *finding a vetted specialist tutor*. The `[COMPETITION]` wasn't Google the company - it was the exact behavior the Vermont mother had described: Googling and calling dead numbers. By midnight her hypothesis read: > *"If we help parents of kids 8-14 with dyslexia/ADHD solve finding a vetted specialist tutor with a search-by-specialty marketplace, they will choose it over Googling and calling dead numbers because it matches them in 48 hours with parent reviews."* @@ -122,7 +122,7 @@ She added a note to her Module 2 prep: when she interviewed parents, she'd ask w - **Six paying customers at $99 each.** $594 in revenue, before the product existed. - **A Google Drive folder** holding all five Module 1 outputs. Her Founder OS, started. -**Next: [Module 2, where Mia interviews ten parents using the Mom Test](/course/tech-for-non-technical-founders-2026/module-2-walkthrough-mia/).** Her interview script will ask whether parents have ever spent real money on a specialist tutor search (the `[problem]` blank in her hypothesis), and what they currently pay - so she can replace her Money lens guess with actual numbers from actual receipts. +**Next: [Module 2, where Mia interviews ten parents using the Mom Test](/course/tech-for-non-technical-founders-2026/module-2-walkthrough-mia/).** Her interview script will ask whether parents have ever spent real money on a specialist tutor search (the `[PROBLEM]` blank in her hypothesis), and what they currently pay - so she can replace her Money lens guess with actual numbers from actual receipts. --- diff --git a/content/course/tech-for-non-technical-founders-2026/mom-test-ask-about-past-not-future/index.md b/content/course/tech-for-non-technical-founders-2026/mom-test-ask-about-past-not-future/index.md index 764aab3a6..0cbe84c33 100644 --- a/content/course/tech-for-non-technical-founders-2026/mom-test-ask-about-past-not-future/index.md +++ b/content/course/tech-for-non-technical-founders-2026/mom-test-ask-about-past-not-future/index.md @@ -31,7 +31,7 @@ related_posts: false > **Module 2 · Lesson 2.1 · [CORE]** · [From Idea to First Paying Customer](/course/tech-for-non-technical-founders-2026/) > -> **Input:** a Founding Hypothesis sentence (from Lesson 1.1) + your `[customer]` blank from that sentence (the role, company size, and situation it names - that description is your ICP, your Ideal Customer Profile) +> **Input:** a Founding Hypothesis sentence (from Lesson 1.1) + your `[CUSTOMER]` blank from that sentence (the role, company size, and situation it names - that description is your ICP, your Ideal Customer Profile) > > **Output:** the 5-question Mom Test template + a draft question list (5-8 questions) ready to sharpen in Lesson 2.2 and then run in real interviews after Lesson 2.3-2.4 recruitment. The scoring rubric becomes your reference card once you have transcripts in hand. > @@ -53,11 +53,11 @@ Every question a first-time founder writes first feels like it gets to the truth | The question you'd write | Why it produces polite-yes | Fitzpatrick's past-behavior rewrite | |---|---|---| -| "Do you find `[problem]` frustrating?" | Leading. The interviewee hears that you want a yes; their politeness reflex supplies one. | "Tell me about the last time `[problem]` happened." | -| "Would you use a tool that solved `[problem]`?" | Hypothetical-future. Their answer is a guess about a person who doesn't exist yet. | "Walk me through what you did the last time you tried to handle `[problem]`." | -| "How important is solving `[problem]` for you?" | Asks for a self-rating, which everyone inflates. People rate everything 7/10 to avoid sounding rude. | "What did the workaround cost you - in time, money, or sanity - the last time?" | +| "Do you find `[PROBLEM]` frustrating?" | Leading. The interviewee hears that you want a yes; their politeness reflex supplies one. | "Tell me about the last time `[PROBLEM]` happened." | +| "Would you use a tool that solved `[PROBLEM]`?" | Hypothetical-future. Their answer is a guess about a person who doesn't exist yet. | "Walk me through what you did the last time you tried to handle `[PROBLEM]`." | +| "How important is solving `[PROBLEM]` for you?" | Asks for a self-rating, which everyone inflates. People rate everything 7/10 to avoid sounding rude. | "What did the workaround cost you - in time, money, or sanity - the last time?" | | "Would you pay $X for a solution?" | Pricing hypothetical. They have no skin in the game; saying yes costs them nothing. | "What have you already tried, paid, or built to deal with it?" | -| "Does this idea sound good to you?" | Compliment-fishing. The interviewee can't refuse without being mean to you. | "On a scale of 1-10, how would you rank fixing `[problem]` this year against the other 3 things on your list?" | +| "Does this idea sound good to you?" | Compliment-fishing. The interviewee can't refuse without being mean to you. | "On a scale of 1-10, how would you rank fixing `[PROBLEM]` this year against the other 3 things on your list?" | What a passing answer sounds like, versus a polite one, on the very first question: @@ -75,7 +75,7 @@ While the script runs, listen for three patterns. They do more work than the wor | Flag | Example Phrases | What it signals | |---|---|---| | **Frustration language** | "I hate this." "It drives me crazy." "Every single week." | The problem is felt. Polite interviewees suppress feeling - the opposite of what validation needs. | -| **Workaround language** | "I've been meaning to..." "We hacked together..." "I pay [tool] $X for this." | The interviewee already spent time or money on a solution that doesn't fully work. That budget is the line item your product would replace. | +| **Workaround language** | "I've been meaning to..." "We hacked together..." "I pay [TOOL] $X for this." | The interviewee already spent time or money on a solution that doesn't fully work. That budget is the line item your product would replace. | | **Urgency language** | "Last week." "This morning." "I missed my kid's birthday because of this." | A problem that happened today is felt more sharply than one that happens "sometimes." Time-anchored urgency is the strongest signal in the set. | **Scoring the flags:** A passing call has 3 or more flags spread across the five answers. A failing call has 0 or 1 - the interviewee is being polite to you. Two flags is ambiguous; treat as a 5/10 default. This 1-10 score per call is what Lessons 2.4-2.6 count to make the build / pivot / kill decision, so score every call the same way. @@ -84,7 +84,7 @@ While the script runs, listen for three patterns. They do more work than the wor > **Write:** > -> 1. Open a new Google Doc titled `Mom Test draft - [date]` in the same `Founder OS` folder as your Founding Hypothesis. +> 1. Open a new Google Doc titled `Mom Test draft - [DATE]` in the same `Founder OS` folder as your Founding Hypothesis. > 2. Copy the 5 verbatim rewrite questions from the table above. > 3. Add 2-3 ICP-specific probes of your own (e.g., for a chiropractor ICP: "Walk me through your last insurance-claim resubmission. When did it happen?"). > 4. **Success check:** you have a 5-8 question list, every question anchored in a past event, none asking "would you." diff --git a/content/course/tech-for-non-technical-founders-2026/mom-test-interview-script/index.md b/content/course/tech-for-non-technical-founders-2026/mom-test-interview-script/index.md index cf3a4bde4..052e56dd2 100644 --- a/content/course/tech-for-non-technical-founders-2026/mom-test-interview-script/index.md +++ b/content/course/tech-for-non-technical-founders-2026/mom-test-interview-script/index.md @@ -32,7 +32,7 @@ Template companion to the [Lesson 2.1 post](/course/tech-for-non-technical-found | Question | What it surfaces | |---|---| -| **Q1.** Tell me about the last time [problem] happened. Walk me through what you did. | Anchors in a real episode - story over preference. | +| **Q1.** Tell me about the last time [PROBLEM] happened. Walk me through what you did. | Anchors in a real episode - story over preference. | | **Q2.** What did that cost you - in time, money, or sanity? | Quantifies the pain - an unquantified problem won't get paid for. | | **Q3.** What have you tried already to fix this? | Surfaces existing workarounds - if they never tried anything, it never actually hurt. | | **Q4.** On a scale of 1-10, how big a problem is this compared to everything else on your plate? | Calibrates urgency against the interviewee's whole problem stack - most "would be great if" problems land at 4. | @@ -56,7 +56,7 @@ Time budget: 25 minutes for the questions, 5 minutes for scoring notes. Total 30 *Anchors in a real episode - story over preference.* -> "Tell me about the last time [problem] happened. Walk me through what you did." +> "Tell me about the last time [PROBLEM] happened. Walk me through what you did." **Pass signal:** A specific story with a date, a time of day, a tool they opened, a person they messaged. "Last Tuesday at 9pm I spent 40 minutes copying numbers from three spreadsheets into a slide for the board. I called my CFO and she pulled the numbers from QuickBooks for me." @@ -118,7 +118,7 @@ While you are reading the questions, listen for three patterns in their answers. **Frustration language.** "I hate this." "It drives me crazy." "Every single week." "I can't believe we still do it this way." If the interviewee uses words with feeling, the problem is felt. Polite interviewees suppress feeling, which is exactly why you ignore polite answers. -**Workaround language.** "I've been meaning to..." "We hacked together..." "I pay [tool] $X for this." "My VA does it manually." Workarounds prove the problem is real because the interviewee already spent time or money on a solution that doesn't fully work. The workaround is the budget you can pitch into. +**Workaround language.** "I've been meaning to..." "We hacked together..." "I pay [TOOL] $X for this." "My VA does it manually." Workarounds prove the problem is real because the interviewee already spent time or money on a solution that doesn't fully work. The workaround is the budget you can pitch into. **Urgency language.** "Last week." "This morning." "I missed my kid's birthday because of this." A problem that happened today is felt more sharply than a problem that happens "sometimes." Time-anchored urgency is the strongest signal in the set. @@ -149,7 +149,7 @@ The bad closing pulls them back into hypothetical preference and gives you a use - **Score the call 1-10 within 5 minutes of hanging up.** Use Q4 plus your emotional-flag count. Write the score in your notes file. If you score later you will round up. - **If 7 or more of your 10 interviews scored 7+:** the problem is validated - BUILD. Move to the [Mom Test Synthesis page](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) and the Validated Problem Statement template. - **If 4 to 6 scored 7+:** PIVOT - re-evaluate the ICP, the problem framing, or the question wording, then book 5 sharper interviews with the narrower group. Sometimes Q1 is wrong (the problem context is too narrow) - retry with broader phrasing first. -- **If fewer than 4 scored 7+:** KILL - the problem is too weak for this customer. Return to Lesson 1.1 with a different [customer] or [problem] blank. +- **If fewer than 4 scored 7+:** KILL - the problem is too weak for this customer. Return to Lesson 1.1 with a different [CUSTOMER] or [PROBLEM] blank. - **Forward the transcripts to your founder friend one step ahead, or a peer from any founder community** before you make the build/no-build call. Two readers catch what one misses. Skip this script and run "feature interest" interviews ("would you pay for X?") and you almost always launch into silence. The Mom Test isn't a productivity trick. It is the only way to keep your interviewees from being polite while you are gambling six months of your life on what they said. diff --git a/content/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/index.md b/content/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/index.md index 7b525e671..fada32da4 100644 --- a/content/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/index.md +++ b/content/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/index.md @@ -115,7 +115,7 @@ The [Validated Problem Statement Template](/course/tech-for-non-technical-founde > > **You have now:** question list (2.1-2.2) + 30-name list (2.3) + 10 scored interviews (2.4) + the build/pivot/kill decision. The orientation pages state this gate as "7 of 10 interviewees have spent time or money on the problem" - the same bar, because a transcript cannot score 7+ without real past spend surfacing in Q2/Q3. > -> **Next:** If build - [2.6 · Build a Clickable Prototype](/course/tech-for-non-technical-founders-2026/clickable-prototype-validation-2-hour-lovable/) to test the shape with 5 of your strongest-signal interviewees, then [3.1 · The One-Page Product Brief](/course/tech-for-non-technical-founders-2026/one-page-product-brief-vibe-prd/). If pivot - sharpen the `[customer]` blank, then rebuild your list in [2.3 · Find 10 People: Where to Look](/course/tech-for-non-technical-founders-2026/find-10-people-where-to-look/). If kill - the hypothesis is wrong, not the list; return to [1.1 · Form Your Founding Hypothesis](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/), rewrite the weakest blank, then re-run 2.3. +> **Next:** If build - [2.6 · Build a Clickable Prototype](/course/tech-for-non-technical-founders-2026/clickable-prototype-validation-2-hour-lovable/) to test the shape with 5 of your strongest-signal interviewees, then [3.1 · The One-Page Product Brief](/course/tech-for-non-technical-founders-2026/one-page-product-brief-vibe-prd/). If pivot - sharpen the `[CUSTOMER]` blank, then rebuild your list in [2.3 · Find 10 People: Where to Look](/course/tech-for-non-technical-founders-2026/find-10-people-where-to-look/). If kill - the hypothesis is wrong, not the list; return to [1.1 · Form Your Founding Hypothesis](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/), rewrite the weakest blank, then re-run 2.3. > > **If blocked:** see "If this fails" above. > diff --git a/content/course/tech-for-non-technical-founders-2026/must-have-segment-pmf-test/index.md b/content/course/tech-for-non-technical-founders-2026/must-have-segment-pmf-test/index.md index 8d0d6c362..99054d618 100644 --- a/content/course/tech-for-non-technical-founders-2026/must-have-segment-pmf-test/index.md +++ b/content/course/tech-for-non-technical-founders-2026/must-have-segment-pmf-test/index.md @@ -49,7 +49,7 @@ After this lesson you will be able to: **run the 5-question Sean Ellis survey ag ## The 40% test, in one paragraph -Sean Ellis ran growth at Dropbox, LogMeIn, and Eventbrite, and kept seeing the same dividing line between products that ignited and products that needed life support. He surveyed each product's existing users with one load-bearing question: "How would you feel if you could no longer use [product]?" The answer is one of four: very disappointed, somewhat disappointed, not disappointed, no longer use it. If at least 40% said "very disappointed," the product could almost always grow on outbound and word of mouth alone. Under 40%, growth stalled until the product changed. Ellis explained the cutoff and wording on [Lenny Rachitsky's podcast](https://www.lennysnewsletter.com/p/the-original-growth-hacker-sean-ellis). +Sean Ellis ran growth at Dropbox, LogMeIn, and Eventbrite, and kept seeing the same dividing line between products that ignited and products that needed life support. He surveyed each product's existing users with one load-bearing question: "How would you feel if you could no longer use [PRODUCT]?" The answer is one of four: very disappointed, somewhat disappointed, not disappointed, no longer use it. If at least 40% said "very disappointed," the product could almost always grow on outbound and word of mouth alone. Under 40%, growth stalled until the product changed. Ellis explained the cutoff and wording on [Lenny Rachitsky's podcast](https://www.lennysnewsletter.com/p/the-original-growth-hacker-sean-ellis). ![Semicircular gauge of the share of users answering very disappointed: amber below the 40% line means product problem, green at 40% or more means a must-have user](sean-ellis-gauge.svg) @@ -59,13 +59,13 @@ Use a free [Typeform](https://www.typeform.com) or [Tally](https://tally.so) for Open Typeform or Tally. Five questions, in this order. Wording matters - changing a word changes the answer. -> **Q1.** How would you feel if you could no longer use [product]? -> *(Multiple choice: Very disappointed / Somewhat disappointed / Not disappointed / No longer use [product])* +> **Q1.** How would you feel if you could no longer use [PRODUCT]? +> *(Multiple choice: Very disappointed / Somewhat disappointed / Not disappointed / No longer use [PRODUCT])* > -> **Q2.** What type of person do you think would most benefit from [product]? +> **Q2.** What type of person do you think would most benefit from [PRODUCT]? > *(Short text - 1 sentence. Reveals who the must-have segment thinks the target is.)* > -> **Q3.** What is the main benefit you get from [product]? +> **Q3.** What is the main benefit you get from [PRODUCT]? > *(Short text - 1 sentence. The verbatim language for your next ad copy if you do run paid later.)* > > **Q4.** How have you tried to solve this problem before? What did you switch from? @@ -96,7 +96,7 @@ The Sean Ellis test is directional at **≥ 10 respondents**, useful at **20+**, > > 1. Export your users CSV. Strip the friends-and-family and the never-returned users. Annotate each row with job title and company size. > 2. Open Typeform or Tally. Type the five questions above verbatim. -> 3. Send the email. Subject: *"Quick 90-second question about [product]"*. Re-send a few days later to non-openers. +> 3. Send the email. Subject: *"Quick 90-second question about [PRODUCT]"*. Re-send a few days later to non-openers. > 4. Export the responses. Compute overall must-have % and per-segment must-have %. > 5. Paste three Q2-Q3 verbatims from your top segment into a Google Doc. > 6. **Success check:** you have a headline %, a top-segment %, and 3 verbatim quotes - and you know whether any segment cleared 40%. diff --git a/content/course/tech-for-non-technical-founders-2026/one-page-product-brief-vibe-prd/index.md b/content/course/tech-for-non-technical-founders-2026/one-page-product-brief-vibe-prd/index.md index c03d78a12..178750d05 100644 --- a/content/course/tech-for-non-technical-founders-2026/one-page-product-brief-vibe-prd/index.md +++ b/content/course/tech-for-non-technical-founders-2026/one-page-product-brief-vibe-prd/index.md @@ -89,7 +89,7 @@ Skipping the brief and going straight into prompting is the most common way a no > **Done:** all 5 sections of your one-page brief are filled in, Section 1 is copied verbatim from your validated problem statement, and you have read the brief aloud to one peer. > -> **You have now:** a validated problem statement (2.5) + prototype vocabulary (2.6) + the one-page Product Brief (3.1). Save it as `Product Brief - [date]` in your `Founder OS` folder. Section 3 isn't stress-tested yet - Lesson 3.2 does that before Lovable touches it. +> **You have now:** a validated problem statement (2.5) + prototype vocabulary (2.6) + the one-page Product Brief (3.1). Save it as `Product Brief - [DATE]` in your `Founder OS` folder. Section 3 isn't stress-tested yet - Lesson 3.2 does that before Lovable touches it. > > **Next:** [3.2 · Quality-check your brief: features to outcomes](/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/) - stress-tests Section 3 of the brief you just wrote. > diff --git a/content/course/tech-for-non-technical-founders-2026/outreach-sequence-template/index.md b/content/course/tech-for-non-technical-founders-2026/outreach-sequence-template/index.md index 0168e252b..47a9cfed4 100644 --- a/content/course/tech-for-non-technical-founders-2026/outreach-sequence-template/index.md +++ b/content/course/tech-for-non-technical-founders-2026/outreach-sequence-template/index.md @@ -38,9 +38,9 @@ Everything below is copy-pasteable. Replace the `[BRACKETS]`, keep the shape. Th ## The Day-0 message (email or DM) -> Subject: your post about [their exact words] +> Subject: your post about [THEIR_EXACT_WORDS] > -> Hi [name] - you wrote that [ONE SPECIFIC LINE FROM THEIR POST, PARAPHRASED]. I'm researching exactly that problem and would trade 20 minutes for everything you learned the hard way. No pitch, nothing to sell - I don't even have a product yet. Would [DAY] or [DAY] work? Booking link if that's easier: [NEETOCAL LINK] +> Hi [NAME] - you wrote that [ONE SPECIFIC LINE FROM THEIR POST, PARAPHRASED]. I'm researching exactly that problem and would trade 20 minutes for everything you learned the hard way. No pitch, nothing to sell - I don't even have a product yet. Would [DAY] or [DAY] work? Booking link if that's easier: [NEETOCAL LINK] The whole message rests on the first line naming something they actually wrote. Send a handful a day, by hand, per the 2.4 cadence - a stagger beats a burst. @@ -62,7 +62,7 @@ Never claim conversations you have not had. The first-round variant works fine o ## LinkedIn DM opener (when there's no email) -> [name] - your comment on [POST/THREAD] about [TOPIC] is why I'm writing. I'm researching that exact problem (not selling anything - there's no product yet). 20 minutes this week for everything you'd warn someone about? +> [NAME] - your comment on [POST/THREAD] about [TOPIC] is why I'm writing. I'm researching that exact problem (not selling anything - there's no product yet). 20 minutes this week for everything you'd warn someone about? ## The Reddit research comment (public thread, DMs closed) @@ -70,7 +70,7 @@ Never claim conversations you have not had. The first-round variant works fine o ## The waitlist-signup opener (for your Module 1 smoke-test signups) -> Hi [name] - you joined the [PRODUCT] waitlist a while back. Before anything gets built, I'm talking to the people who signed up. 20 minutes on what made you click? You'll shape what gets built first. +> Hi [NAME] - you joined the [PRODUCT] waitlist a while back. Before anything gets built, I'm talking to the people who signed up. 20 minutes on what made you click? You'll shape what gets built first. People who already raised a hand reply at the highest rate of any group you will message - start with them if you have them. diff --git a/content/course/tech-for-non-technical-founders-2026/paid-pilot-charge-before-ship/index.md b/content/course/tech-for-non-technical-founders-2026/paid-pilot-charge-before-ship/index.md index f421bd835..bb68c099a 100644 --- a/content/course/tech-for-non-technical-founders-2026/paid-pilot-charge-before-ship/index.md +++ b/content/course/tech-for-non-technical-founders-2026/paid-pilot-charge-before-ship/index.md @@ -43,7 +43,7 @@ related_posts: false A free pilot feels collaborative: the customer says yes, you build for six weeks, and every Friday demo gets "this is great." Then Week 8 lands, you send the year-one contract, and the customer says "let me circle back to my CFO" - a CFO who never heard of you and never approved the pilot. A refundable Stripe deposit signed before kickoff is what turns that dead end into a formality. -After this lesson you will be able to: **sign a Design Partner Agreement with a refundable Stripe deposit before writing new code.** +> → **Mia sent her DPA** to a parent from her Module 2 interviews - someone who'd described paying $400/month for a tutor who didn't specialize. The $1,200 deposit cleared before she built anything new. [Full walkthrough →](/course/tech-for-non-technical-founders-2026/module-5-walkthrough-mia/) --- diff --git a/content/course/tech-for-non-technical-founders-2026/reference/ceiling-signals-full/index.md b/content/course/tech-for-non-technical-founders-2026/reference/ceiling-signals-full/index.md index 598cf12ef..34ce84847 100644 --- a/content/course/tech-for-non-technical-founders-2026/reference/ceiling-signals-full/index.md +++ b/content/course/tech-for-non-technical-founders-2026/reference/ceiling-signals-full/index.md @@ -88,7 +88,7 @@ Vanta, [Drata](https://drata.com), and [Secureframe](https://secureframe.com) au **What to say to the customer this week** (when they ask for SOC2 / HIPAA BAA / PCI before you can deliver it): respond within 48 hours with a 3-sentence email - do not ghost. Use this template: -> *"Thank you for the SOC2 / [BAA / PCI] questionnaire. We are pre-SOC2 [or pre-BAA] today and are starting the readiness work in Q3. In the meantime, I can share our security one-pager (encryption at rest via Supabase, payments via Stripe Checkout, data deletion on request) and offer a 90-day pilot with the data-handling restrictions of your choice - including hosting in a sandboxed instance if that helps your security team approve. Would that bridge work while we complete the formal certification?"* +> *"Thank you for the SOC2 / [BAA / PCI] questionnaire. We are pre-SOC2 [OR_PRE_BAA] today and are starting the readiness work in Q3. In the meantime, I can share our security one-pager (encryption at rest via Supabase, payments via Stripe Checkout, data deletion on request) and offer a 90-day pilot with the data-handling restrictions of your choice - including hosting in a sandboxed instance if that helps your security team approve. Would that bridge work while we complete the formal certification?"* This buys you 60-90 days to start the engineering work. Some enterprise security teams will accept a documented bridge for a small pilot; the rest will say "come back when SOC2 is done" - which is the same answer you would get from ghosting them, plus you have preserved the relationship for the rebid 6 months later. diff --git a/content/course/tech-for-non-technical-founders-2026/reference/channel-selection-full/index.md b/content/course/tech-for-non-technical-founders-2026/reference/channel-selection-full/index.md index 1edaab54c..a04cc43fb 100644 --- a/content/course/tech-for-non-technical-founders-2026/reference/channel-selection-full/index.md +++ b/content/course/tech-for-non-technical-founders-2026/reference/channel-selection-full/index.md @@ -65,7 +65,7 @@ At this stage you are choosing from four options. Here is what each one actually Pick the one that matches your buyer type, your price point, and your honest time budget - then commit. -> **A fifth play: Engineering as Marketing - a slower-burn, zero-CAC (Customer Acquisition Cost - what you spend to land one customer) option, not one of the four channels you score above.** Building a free micro-tool (a pricing calculator, a checklist generator, a "which plan is right for you" grader) on a free no-code stack (Carrd + Tally + Notion) attracts targeted organic search traffic. Users who find the tool useful are pre-warmed leads for your main product. The tool ranks for long-tail SEO keywords your competitors ignore. One afternoon to build, zero monthly cost, and the traffic compounds over months. Unlike content marketing (blog posts), a functional tool has a different backlink profile and ranks for different intent - someone searching "SaaS pricing calculator for [vertical]" is closer to buying than someone searching "how to price SaaS." The tool is not your product - it's a free side door that feeds your product's waitlist. +> **A fifth play: Engineering as Marketing - a slower-burn, zero-CAC (Customer Acquisition Cost - what you spend to land one customer) option, not one of the four channels you score above.** Building a free micro-tool (a pricing calculator, a checklist generator, a "which plan is right for you" grader) on a free no-code stack (Carrd + Tally + Notion) attracts targeted organic search traffic. Users who find the tool useful are pre-warmed leads for your main product. The tool ranks for long-tail SEO keywords your competitors ignore. One afternoon to build, zero monthly cost, and the traffic compounds over months. Unlike content marketing (blog posts), a functional tool has a different backlink profile and ranks for different intent - someone searching "SaaS pricing calculator for [VERTICAL]" is closer to buying than someone searching "how to price SaaS." The tool is not your product - it's a free side door that feeds your product's waitlist. ## Channel Selection Worksheet diff --git a/content/course/tech-for-non-technical-founders-2026/reference/find-10-people-full/index.md b/content/course/tech-for-non-technical-founders-2026/reference/find-10-people-full/index.md index 74353e381..5d8489c04 100644 --- a/content/course/tech-for-non-technical-founders-2026/reference/find-10-people-full/index.md +++ b/content/course/tech-for-non-technical-founders-2026/reference/find-10-people-full/index.md @@ -19,7 +19,7 @@ The AI ICP map (from Lesson 2.3) names your specific communities. Here is how to - **Industry Slack and Discord** - Indie Hackers, Lovable, No Code Founders, and the vertical-specific communities your AI map named. - **[G2](https://www.g2.com/) and [Capterra](https://www.capterra.com/) reviews (the two big business-software review sites)** - pull every 2-star and 3-star review of the closest competitor. Pain a stranger typed for free, organized by feature. - **Twitter/X** - the 280-character constraint forces complaints to be precise. -- **Personal network referrals** - text 10 people you know: `Do you know anyone who [painful task] regularly? Research call, not sales.` Warm referrals almost always show - the mutual contact is on the line for it. +- **Personal network referrals** - text 10 people you know: `Do you know anyone who [PAINFUL_TASK] regularly? Research call, not sales.` Warm referrals almost always show - the mutual contact is on the line for it. One Reddit rule: don't blast a launch post on day one. Read the sub for a week, leave three real comments, then post a research question. The [self-promotion on Reddit guide](/blog/self-promote-on-reddit-without-getting-banned-promotion/) covers the karma floor and the unwritten rules. @@ -128,7 +128,7 @@ Everything up to here costs $0 - Gmail and the 30-name list you built in Lesson While the cold-outreach path books the calls, the smoke-test landing page from [Lesson 1.4](/course/tech-for-non-technical-founders-2026/smoke-test-landing-page-7-day-demand-test/) (built in [1.2](/course/tech-for-non-technical-founders-2026/smoke-test-build-page/)) measures whether strangers will give you their email for the thing you described. Run it in parallel and drop the URL into your messages - it doubles as the warmest opener: -> "You signed up for the waitlist on [page] last Tuesday - up for a 20-minute call?" +> "You signed up for the waitlist on [PAGE] last Tuesday - up for a 20-minute call?" That opener out-performs every cold variant - the person already raised a hand. diff --git a/content/course/tech-for-non-technical-founders-2026/reference/hypothesis-sprint-full/index.md b/content/course/tech-for-non-technical-founders-2026/reference/hypothesis-sprint-full/index.md index 022b26dd2..5cb646dff 100644 --- a/content/course/tech-for-non-technical-founders-2026/reference/hypothesis-sprint-full/index.md +++ b/content/course/tech-for-non-technical-founders-2026/reference/hypothesis-sprint-full/index.md @@ -63,7 +63,7 @@ Sum each approach. Pick the highest sum. The lens that scored lowest across the Open the Mad Libs sentence. Fill in the five blanks using the winning approach from Step 4, the customer and problem from Step 1, the competition from Step 2, and the differentiator from Step 2. -Read it aloud three times. Stop when the sentence reads like a thing a friend could repeat back. Type the final sentence into a Google Doc titled `Founding Hypothesis - [date]` and save it to a `Founder OS` folder. This sentence becomes the raw material for your landing-page headline (1.2 reshapes it into a customer-plus-outcome one-liner), your interview script, and your Stripe price prompt. +Read it aloud three times. Stop when the sentence reads like a thing a friend could repeat back. Type the final sentence into a Google Doc titled `Founding Hypothesis - [DATE]` and save it to a `Founder OS` folder. This sentence becomes the raw material for your landing-page headline (1.2 reshapes it into a customer-plus-outcome one-liner), your interview script, and your Stripe price prompt. ### Step 6: Test Design @@ -75,12 +75,12 @@ The full test is two parts: (1) a smoke-test landing page for demand signal, and ## AI Deep-Research Prompts -### For the `[customer]` and `[problem]` blanks +### For the `[CUSTOMER]` and `[PROBLEM]` blanks Paste into Perplexity Pro ($20/mo), ChatGPT Deep Research (Pro tier), or Gemini Deep Research ($20/mo Advanced tier): ```text -Find the 5 most-named pain points among [customer] (your candidate version of the blank) in 2024-2026, from Reddit, LinkedIn posts, G2 reviews, and industry podcasts. Cite the exact source for each pain point and quote one verbatim phrase. If you cannot find a real source for any item, respond with "NOT FOUND - [item]" rather than estimating or paraphrasing. +Find the 5 most-named pain points among [CUSTOMER] (your candidate version of the blank) in 2024-2026, from Reddit, LinkedIn posts, G2 reviews, and industry podcasts. Cite the exact source for each pain point and quote one verbatim phrase. If you cannot find a real source for any item, respond with "NOT FOUND - [item]" rather than estimating or paraphrasing. ``` Keep the quotes AND their thread URLs - Lessons 1.2 and 2.3 reuse them. diff --git a/content/course/tech-for-non-technical-founders-2026/reference/mom-test-full/index.md b/content/course/tech-for-non-technical-founders-2026/reference/mom-test-full/index.md index 290c44f13..1c62742eb 100644 --- a/content/course/tech-for-non-technical-founders-2026/reference/mom-test-full/index.md +++ b/content/course/tech-for-non-technical-founders-2026/reference/mom-test-full/index.md @@ -16,7 +16,7 @@ slug: mom-test-full The script runs in order. Each question funnels the interviewee deeper into a real memory of the problem. Read the questions as written - small wording changes ("would you" instead of "did you") flip the answer back into hypothetical polite, which is exactly the failure mode you are paying 30 minutes to avoid. -### Q1: "Tell me about the **last time** `[problem]` happened. Walk me through what you did." +### Q1: "Tell me about the **last time** `[PROBLEM]` happened. Walk me through what you did." - **What it catches**: whether the problem actually happens, how often, what mechanic the interviewee uses. A real story has a date and a tool. - **Pass**: specific recent story. *"Last Tuesday at 9pm I spent 40 minutes copying numbers from three spreadsheets into a slide for the board."* Date, time, tool, duration, feeling. @@ -89,7 +89,7 @@ Stick to the order. Improvise mid-call ("oh that reminds me of my product idea") Expect your first two or three interviews to feel awkward - you will catch yourself pitching at least once. That's normal, not failure: score the contaminated call honestly (in the [Module 2 walkthrough](/course/tech-for-non-technical-founders-2026/module-2-walkthrough-mia/), Mia breaks her own script in interview one, scores it 3/10, and keeps the other nine clean). The skill is in the recovery, not in being perfect on call one. -One more failure mode worth naming: an interviewee with no story. If Q1 produces genuine blankness - not evasion, just no last time to walk through - they don't have the problem. End the call politely at the 10-minute mark and count it: a person who was supposed to be your customer and has no story IS data about your `[customer]` blank. +One more failure mode worth naming: an interviewee with no story. If Q1 produces genuine blankness - not evasion, just no last time to walk through - they don't have the problem. End the call politely at the 10-minute mark and count it: a person who was supposed to be your customer and has no story IS data about your `[CUSTOMER]` blank. ## What to do tomorrow diff --git a/content/course/tech-for-non-technical-founders-2026/reference/must-have-survey-full/index.md b/content/course/tech-for-non-technical-founders-2026/reference/must-have-survey-full/index.md index f509f7204..67196a3b2 100644 --- a/content/course/tech-for-non-technical-founders-2026/reference/must-have-survey-full/index.md +++ b/content/course/tech-for-non-technical-founders-2026/reference/must-have-survey-full/index.md @@ -29,13 +29,13 @@ What is left is your sample. Annotate each row with the user's job title and com ## Send it -Email subject line that works in 2026: *"Quick 90-second question about [product]"*. Body, three lines: +Email subject line that works in 2026: *"Quick 90-second question about [PRODUCT]"*. Body, three lines: -> Hi [first name], building [product] and trying to figure out who really uses it. Would you spend 90 seconds on this? [link] +> Hi [FIRST_NAME], building [PRODUCT] and trying to figure out who really uses it. Would you spend 90 seconds on this? [LINK] > > No pitch. No follow-up. I read every response by hand. > -> Thanks, [your name] +> Thanks, [YOUR_NAME] Send the first batch to your largest user cluster. Re-send a few days later to anyone who has not opened. You will hit a 30-50% response rate on a list under 100, which is enough. diff --git a/content/course/tech-for-non-technical-founders-2026/reference/mvp-build-phases-full/index.md b/content/course/tech-for-non-technical-founders-2026/reference/mvp-build-phases-full/index.md index ad0481410..953db74a0 100644 --- a/content/course/tech-for-non-technical-founders-2026/reference/mvp-build-phases-full/index.md +++ b/content/course/tech-for-non-technical-founders-2026/reference/mvp-build-phases-full/index.md @@ -67,7 +67,7 @@ Spend the rest of the phase running $1 test transactions through the flow: signu Switch Stripe out of test mode. Buy a domain (roughly $10/year for a .com on [Porkbun](https://porkbun.com/) or your registrar of choice; never let a tool hold your domain). Point the domain at the Lovable staging URL. Take final screenshots, write a 3-line cold email or LinkedIn DM, and send to 5 ICP prospects from your [Module 2 outreach list](/course/tech-for-non-technical-founders-2026/outreach-sequence-template/). -> "Hey [name] - the workflow you described recently (logging client check-ins by hand on a spreadsheet) is now a tool. Quick first-use, $29/month after a trial window. URL: [staging URL]. Honest reactions only." +> "Hey [NAME] - the workflow you described recently (logging client check-ins by hand on a spreadsheet) is now a tool. Quick first-use, $29/month after a trial window. URL: [STAGING_URL]. Honest reactions only." Watch what happens. If 0 of 5 click, the cold message is wrong, not the product (yet). If 5 click and 0 sign up, the landing screen is wrong, not the product. If 5 sign up and 0 pay, the paywall position or the price is wrong. Each failure shape tells you what to fix next. The demo is the data, not the screens. diff --git a/content/course/tech-for-non-technical-founders-2026/reference/outbound-full/index.md b/content/course/tech-for-non-technical-founders-2026/reference/outbound-full/index.md index 7403f7b5d..b37aa5d4e 100644 --- a/content/course/tech-for-non-technical-founders-2026/reference/outbound-full/index.md +++ b/content/course/tech-for-non-technical-founders-2026/reference/outbound-full/index.md @@ -151,7 +151,7 @@ A 30-message batch with zero replies is rare and almost always indicates a filte 2. **Is the filter right?** Re-read three random LinkedIn profiles from your sent list. If you cannot imagine the person reading the message and finding it relevant, your ICP filter is off. The fix is upstream of the script. -3. **Is the reference real?** Look at the first paragraph of your last 10 sent messages. If the "specific reference" sentence sounds generic ("noticed you work at [Company] in [role]"), it was not specific enough. Real specificity means the prospect can verify the claim - a date, a post title, a name, an event. +3. **Is the reference real?** Look at the first paragraph of your last 10 sent messages. If the "specific reference" sentence sounds generic ("noticed you work at [Company] in [ROLE]"), it was not specific enough. Real specificity means the prospect can verify the claim - a date, a post title, a name, an event. ## Compounding past customer 20 diff --git a/content/course/tech-for-non-technical-founders-2026/reference/paid-pilot-full/index.md b/content/course/tech-for-non-technical-founders-2026/reference/paid-pilot-full/index.md index e3578814a..fc722e843 100644 --- a/content/course/tech-for-non-technical-founders-2026/reference/paid-pilot-full/index.md +++ b/content/course/tech-for-non-technical-founders-2026/reference/paid-pilot-full/index.md @@ -129,7 +129,7 @@ The five responses below show up once you start talking to enterprise buyers or *Means:* Their commitment is real but they want defensible value. -*Say back:* "I cannot offer category exclusivity at the pilot stage - I do not have enough signal yet to know what the right exclusivity term looks like. What I can do: write into the DPA that you are my first paying customer in [vertical], and that we will revisit category exclusivity at year-one renewal once we both know whether this is working. That gives you the chronology advantage without locking me in before I have learned what to lock to." +*Say back:* "I cannot offer category exclusivity at the pilot stage - I do not have enough signal yet to know what the right exclusivity term looks like. What I can do: write into the DPA that you are my first paying customer in [VERTICAL], and that we will revisit category exclusivity at year-one renewal once we both know whether this is working. That gives you the chronology advantage without locking me in before I have learned what to lock to." ## When founders should not insist on a paid pilot diff --git a/content/course/tech-for-non-technical-founders-2026/reference/persona-rehearsal-full/index.md b/content/course/tech-for-non-technical-founders-2026/reference/persona-rehearsal-full/index.md index fba7af594..bed6a947d 100644 --- a/content/course/tech-for-non-technical-founders-2026/reference/persona-rehearsal-full/index.md +++ b/content/course/tech-for-non-technical-founders-2026/reference/persona-rehearsal-full/index.md @@ -103,7 +103,7 @@ Reuse the rehearsal stack when a round of real interviews ends in partial signal | **Product-direction pivot emerges** (round 1 surfaces a different problem) | Build a persona around the new problem before rebuilding the question list from scratch | Spinning up a persona costs 5 minutes; spinning up another 10 interview slots costs a week | | **Considering a customer pivot between validation rounds** | Compare question performance across both the old ICP persona and the new one before committing | Reveals which questions survive the ICP shift and which ones were persona-specific | -One constraint worth naming: the rehearsal only surfaces signal that's already in your mental model of the customer. Claude constructs the persona from what you tell it. If your ICP description is wrong - the wrong role, the wrong company size, the wrong industry detail - the persona will be wrong in the same direction, and the rehearsal will give you false confidence. If you notice you're struggling to write three distinct personas at all, that's a signal worth acting on: go back to [Lesson 1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) and tighten the `[customer]` blank before rehearsing questions against a customer you can't describe. +One constraint worth naming: the rehearsal only surfaces signal that's already in your mental model of the customer. Claude constructs the persona from what you tell it. If your ICP description is wrong - the wrong role, the wrong company size, the wrong industry detail - the persona will be wrong in the same direction, and the rehearsal will give you false confidence. If you notice you're struggling to write three distinct personas at all, that's a signal worth acting on: go back to [Lesson 1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) and tighten the `[CUSTOMER]` blank before rehearsing questions against a customer you can't describe. This is the other reason real interviews stay irreplaceable: a real customer can tell you your ICP description is wrong, while Claude can only simulate the ICP you described. diff --git a/content/course/tech-for-non-technical-founders-2026/reference/prototype-build-full/index.md b/content/course/tech-for-non-technical-founders-2026/reference/prototype-build-full/index.md index 704aea61f..00842f6ca 100644 --- a/content/course/tech-for-non-technical-founders-2026/reference/prototype-build-full/index.md +++ b/content/course/tech-for-non-technical-founders-2026/reference/prototype-build-full/index.md @@ -147,7 +147,7 @@ Write down their exact words. Do not prompt. If they give a vague answer, say: " - "What was the moment you felt most lost?" - "What did you expect to see on the second screen that wasn't there?" - "If you used this every week, what would you call the thing it does for you?" -- "What would have to be true for you to pay [your target price] for this?" (Use the price hypothesis you tested in [Lesson 1.5](/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/) - if you haven't run that test yet, the $49-$299 band from the [full price-test reference](/course/tech-for-non-technical-founders-2026/reference/stripe-price-test-full/) is your default starting point.) +- "What would have to be true for you to pay [YOUR_TARGET_PRICE] for this?" (Use the price hypothesis you tested in [Lesson 1.5](/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/) - if you haven't run that test yet, the $49-$299 band from the [full price-test reference](/course/tech-for-non-technical-founders-2026/reference/stripe-price-test-full/) is your default starting point.) Thank them. End the call. Score the session immediately. diff --git a/content/course/tech-for-non-technical-founders-2026/reference/smoke-test-channel-guide/index.md b/content/course/tech-for-non-technical-founders-2026/reference/smoke-test-channel-guide/index.md index 9ed3e9420..a01ad3238 100644 --- a/content/course/tech-for-non-technical-founders-2026/reference/smoke-test-channel-guide/index.md +++ b/content/course/tech-for-non-technical-founders-2026/reference/smoke-test-channel-guide/index.md @@ -103,7 +103,7 @@ You picked your channel above and created your ad account. Here are the settings ### Write the Ad With AI (Copy + Image) -You do not have to invent ad copy from a blank page. You already have everything the ad needs: your Founding Hypothesis, your landing page words, and your customer's own pains and goals. Paste this prompt into any AI chat tool (ChatGPT, Claude, Gemini) - fill the brackets with what you have, set `[channel]` to Meta, Google, LinkedIn, or Reddit, and it writes the ad for you: +You do not have to invent ad copy from a blank page. You already have everything the ad needs: your Founding Hypothesis, your landing page words, and your customer's own pains and goals. Paste this prompt into any AI chat tool (ChatGPT, Claude, Gemini) - fill the brackets with what you have, set `[CHANNEL]` to Meta, Google, LinkedIn, or Reddit, and it writes the ad for you: ```text You are a direct-response copywriter writing a first test ad for a product that has not launched yet. The goal is a simple demand test: get the right people to click through to a landing page and hand over an email. No hype, no fake urgency - just clear words in the customer's own language. @@ -114,10 +114,10 @@ Here is everything I have: - Landing page value props: [paste your 2-4 value prop lines] - Customer pains, in their own words: [paste the exact phrases your customers use - from interviews, Reddit, reviews] - Customer gains / goals: [what they are trying to achieve - the win they want] -- Channel this ad runs on: [channel] +- Channel this ad runs on: [CHANNEL] Write me: -1. Two to three PRIMARY TEXT variants (the main ad body). Use the customer's own vocabulary from the pains above - not marketing language. Match the tone of [channel] (Reddit = casual and honest, LinkedIn = professional, Meta = friendly and visual, Google = short and intent-driven). +1. Two to three PRIMARY TEXT variants (the main ad body). Use the customer's own vocabulary from the pains above - not marketing language. Match the tone of [CHANNEL] (Reddit = casual and honest, LinkedIn = professional, Meta = friendly and visual, Google = short and intent-driven). 2. Two HEADLINE variants (short, under 40 characters where the channel needs it). 3. One IMAGE CONCEPT: describe a single image I can either generate with an AI image tool or fake with a simple product screenshot. Tell me exactly what should be in the frame and why it fits the message. 4. A plain-English note telling me WHICH variant to run first and why - written so a non-marketer understands the reasoning. @@ -131,7 +131,7 @@ Run the ad it gives you first. If the click-through rate is low, come back to th 1. **Campaign objective:** Pick "Traffic" (not "Conversions" - you need pixel data before conversion optimization works). 2. **Budget:** $10-20/day. Set a lifetime budget of $70-140 to hit ~100-200 visits (CPC $0.70-$1.90). Add 20% for creative iteration. -3. **Audience:** Start broad. Meta's AI optimizer is better than manual interest stacking in 2026. If your `[customer]` blank is "solo chiropractors," add one interest (Chiropractic) and let the rest run broad. Age 25-55. All genders unless your product is gender-specific. +3. **Audience:** Start broad. Meta's AI optimizer is better than manual interest stacking in 2026. If your `[CUSTOMER]` blank is "solo chiropractors," add one interest (Chiropractic) and let the rest run broad. Age 25-55. All genders unless your product is gender-specific. 4. **Placement:** Advantage+ placements (automatic). Let Meta decide where your ad shows. 5. **Ad creative:** Single image (your hero image from Lesson 1.2, or the AI-generated one). Primary text: your value prop sentence (1-2 lines from your landing page). Headline: your landing page headline. CTA button: "Learn More" or "Sign Up." Destination: your landing page URL. 6. **Tracking:** Your Meta Pixel should already be installed (Lesson 1.4, step 1). In Ads Manager, under the ad set, verify the pixel is selected. If it says "No pixel," go back to that step and install it. @@ -141,7 +141,7 @@ Run the ad it gives you first. If the click-through rate is low, come back to th 1. **Campaign type:** Search campaign. NOT Performance Max (too broad for a smoke test). NOT Display (low intent). 2. **Budget:** $20-50/day. Set max CPC bid at $3-8 (see channel table above for your use case). -3. **Keywords:** 10-20 keywords in phrase match. Use your `[problem]` blank as the seed. Example: if your hypothesis is about chiropractor insurance claims, bid on "chiropractor insurance claim software," "resubmit denied claims chiropractor," "chiropractic billing automation." +3. **Keywords:** 10-20 keywords in phrase match. Use your `[PROBLEM]` blank as the seed. Example: if your hypothesis is about chiropractor insurance claims, bid on "chiropractor insurance claim software," "resubmit denied claims chiropractor," "chiropractic billing automation." 4. **Ad creative:** 3 headlines (Google shows 1-3). Headline 1: your landing page headline. Headline 2: one value prop. Headline 3: CTA ("Try It Free" or "See If It Works"). 2 descriptions. Description 1: your sub-headline. Description 2: one more value prop. Final URL: your landing page. 5. **Tracking:** GA4 is installed (Lesson 1.3). In Google Ads > Tools > Linked Accounts, link your GA4 property. This takes 30 seconds - click "Link" next to your GA4 property, confirm, done. 6. **Launch:** Submit. First-time accounts go into 24-hour review. Do not touch for 5-7 days. @@ -150,7 +150,7 @@ Run the ad it gives you first. If the click-through rate is low, come back to th 1. **Campaign objective:** Website visits. 2. **Budget:** $50-80/day minimum (LinkedIn CPC is $5.70-$22). If this is too steep, use the B2B budget alternatives section above instead. -3. **Audience:** Job title + industry + company size. Use your `[customer]` blank literally. If your hypothesis says "CTOs at 20-50 person SaaS companies," target exactly that. Do not broaden - on LinkedIn, narrow targeting is cheaper (less competition per audience slice). +3. **Audience:** Job title + industry + company size. Use your `[CUSTOMER]` blank literally. If your hypothesis says "CTOs at 20-50 person SaaS companies," target exactly that. Do not broaden - on LinkedIn, narrow targeting is cheaper (less competition per audience slice). 4. **Ad format:** Single image ad. 5. **Ad creative:** Intro text: your value prop (keep it professional - LinkedIn readers expect B2B tone). Headline: your landing page headline. Image: your hero image or a simple text-on-color card. CTA: "Learn More" or "Sign Up." Destination: your landing page. 6. **Tracking:** LinkedIn Insight Tag should already be installed (Lesson 1.4, step 1). In Campaign Manager, the tag should auto-detect if it's on your page. @@ -160,9 +160,9 @@ Run the ad it gives you first. If the click-through rate is low, come back to th 1. **Campaign objective:** Traffic. 2. **Budget:** $10-25/day. Reddit CPC is $1.25-$3.00. -3. **Targeting:** Community targeting. Pick 3-5 subreddits where your `[customer]` hangs out. For a developer tool: r/programming, r/webdev, r/SaaS. For B2B: r/startups, r/Entrepreneur. DO NOT target r/all - you'll burn budget on irrelevant clicks. +3. **Targeting:** Community targeting. Pick 3-5 subreddits where your `[CUSTOMER]` hangs out. For a developer tool: r/programming, r/webdev, r/SaaS. For B2B: r/startups, r/Entrepreneur. DO NOT target r/all - you'll burn budget on irrelevant clicks. 4. **Ad format:** Promoted post (looks like a regular Reddit post with a "Promoted" tag). -5. **Ad creative:** Title: your headline, rewritten in Reddit's casual tone. "We built a thing that [solves X problem]" works better than polished marketing copy. Body: 2-3 sentences. Problem → solution → link. Authentic, not salesy. Link: your landing page. +5. **Ad creative:** Title: your headline, rewritten in Reddit's casual tone. "We built a thing that [SOLVES_X_PROBLEM]" works better than polished marketing copy. Body: 2-3 sentences. Problem → solution → link. Authentic, not salesy. Link: your landing page. 6. **Tracking:** Reddit Pixel should be installed (Lesson 1.4, step 1). In Ads Manager, the pixel status should show "Active." 7. **Launch:** Submit. Reddit typically clears same-day. Comments will appear under your ad - leave them up unless they're spam. Real comments are free social proof or free feedback. diff --git a/content/course/tech-for-non-technical-founders-2026/reference/stripe-price-test-full/index.md b/content/course/tech-for-non-technical-founders-2026/reference/stripe-price-test-full/index.md index ef9fd8c78..90e114439 100644 --- a/content/course/tech-for-non-technical-founders-2026/reference/stripe-price-test-full/index.md +++ b/content/course/tech-for-non-technical-founders-2026/reference/stripe-price-test-full/index.md @@ -98,7 +98,7 @@ I'm testing a price hypothesis for a pre-product landing page. My hypothesis: [paste your one-sentence Founding Hypothesis from Lesson 1.1] My test price: [e.g., $97 one-time founding member access] -My target customer (the [customer] blank from the hypothesis above): [e.g., freelance bookkeepers who reconcile client accounts manually] +My target customer (the [CUSTOMER] blank from the hypothesis above): [e.g., freelance bookkeepers who reconcile client accounts manually] My hero benefit: [e.g., reconcile Stripe and QuickBooks in 90 seconds instead of 4 hours] Generate 2 button-label variants and a 1-sentence sub-copy for each: @@ -117,7 +117,7 @@ SUB-COPY: [one sentence under the button] Paste into Perplexity Pro ($20/mo), ChatGPT Deep Research (Pro tier), or Gemini Deep Research ($20/mo Advanced tier): ```text -What do [customer] currently pay for [YOUR CATEGORY]? Pull from G2 review price snippets, Reddit pricing threads, Capterra category averages, and competitor pricing pages. If you cannot find a real source for any item, respond with "NOT FOUND - [item]" rather than estimating or paraphrasing. +What do [CUSTOMER] currently pay for [YOUR CATEGORY]? Pull from G2 review price snippets, Reddit pricing threads, Capterra category averages, and competitor pricing pages. If you cannot find a real source for any item, respond with "NOT FOUND - [ITEM]" rather than estimating or paraphrasing. ``` Reuse the quotes you already pulled in Lesson 1.2's research prompt - this search is for PRICES, not pains. diff --git a/content/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-build-phases/index.md b/content/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-build-phases/index.md index 22f60fcdf..bcd579512 100644 --- a/content/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-build-phases/index.md +++ b/content/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-build-phases/index.md @@ -44,7 +44,7 @@ related_posts: false You validated the problem in Modules 1-3 and set up the stack in Lesson 4.3. What you do not have yet is a URL a stranger can pay on. This lesson is the build plan that gets you there - four phases, each ending in one working demo to one human who has not seen the build. -After this lesson you will be able to: **run the four build phases in order, each ending in one demo to one person, until you have a live MVP at a real URL that real users can click.** +> → **Mia walked the four phases** over three weekends. Her spouse signed up in Phase 2. By Phase 4, five parents clicked through the live URL. [Full walkthrough →](/course/tech-for-non-technical-founders-2026/module-4-walkthrough-mia/) ![Four build phases, then the five-green-lights gate. Phase 1 Lovable UI - screens click, nothing saved. Phase 2 Supabase and auth - a real signup persists. Phase 3 Stripe checkout - a $1 test charge flips the row to paid. Phase 4 go live - 5 ICP users click the live URL. All five exit lights green advances you to Module 5.](build-phases-strip.svg) @@ -89,7 +89,7 @@ Open your Lesson 2.3-2.4 interview list. For each of the 10, write a 3-line pers Three actions, in order. The first two cost $0. 1. **Sign up for the Lovable + Supabase free tiers** on [lovable.dev](https://lovable.dev) and [supabase.com](https://supabase.com), then connect GitHub sync inside Lovable so your code survives a cancelled subscription. -2. **Pick ONE feature from your one-page brief's "what you're building" section.** Not three. One. The smallest workflow that solves the validated problem for one persona. Write it as: "build a [screen] for [persona] to [outcome]." +2. **Pick ONE feature from your one-page brief's "what you're building" section.** Not three. One. The smallest workflow that solves the validated problem for one persona. Write it as: "build a [SCREEN] for [PERSONA] to [OUTCOME]." 3. **Generate the UI in Lovable and demo it.** Iterate by chatting: rename, resize, reposition. Then show one human who has not read the brief and watch them try it without a tour. > **Success check:** a clickable UI on a public staging URL, and one person navigated the core screen without you explaining it. Nothing needs to persist yet - that is Phase 2. diff --git a/content/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-lovable-supabase-stripe-2026/index.md b/content/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-lovable-supabase-stripe-2026/index.md index 8f6cd0bb0..8f8500238 100644 --- a/content/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-lovable-supabase-stripe-2026/index.md +++ b/content/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-lovable-supabase-stripe-2026/index.md @@ -44,7 +44,7 @@ related_posts: false Three tools do the whole self-serve build, and each one has exactly one job. The trap is opening Lovable before you know where its job ends and Supabase's begins - that is how a founder ends up with auth hand-rolled in the UI layer and payment state scattered across three places. Get the boundaries and three pre-flight rules right first, and the build in Lesson 4.4 stays inside the shed. -After this lesson you will be able to: **name what each of the three tools does, lock the 3 pre-flight rules, and run the AI leakage check that catches scope creep before you write a line of the build.** +> → **Mia had never set up a database.** She opened Lovable, pasted her brief's Section 3, and let the three tools handle the rest. [Full walkthrough →](/course/tech-for-non-technical-founders-2026/module-4-walkthrough-mia/) If you completed Modules 1-3, your default Module 4 path is to build it yourself with Lovable (an AI app builder that turns a plain-English prompt into a working web app) + Supabase (managed database + login system) + Stripe (the service that charges the card). Hiring is a ceiling-signal trigger covered in the [supplementary reference](/course/tech-for-non-technical-founders-2026/hire-track-supplementary-reference/), not a parallel choice. You will not write code. diff --git a/content/course/tech-for-non-technical-founders-2026/self-serve-stack-walkthrough/index.md b/content/course/tech-for-non-technical-founders-2026/self-serve-stack-walkthrough/index.md index 5dd4c8d00..50b0489b1 100644 --- a/content/course/tech-for-non-technical-founders-2026/self-serve-stack-walkthrough/index.md +++ b/content/course/tech-for-non-technical-founders-2026/self-serve-stack-walkthrough/index.md @@ -466,7 +466,7 @@ create policy "coaches see own check-ins" - [ ] Stripe account verified (email confirmed) - [ ] One product created (your monthly plan), one price (the price your PRD locked in) -- [ ] Webhook endpoint registered: `https://[your-supabase-project].supabase.co/functions/v1/stripe-webhook` +- [ ] Webhook endpoint registered: `https://[YOUR_SUPABASE_PROJECT].supabase.co/functions/v1/stripe-webhook` - [ ] Webhook events selected: `checkout.session.completed` (the one this walkthrough wires; add `customer.subscription.updated`, `customer.subscription.deleted`, and `invoice.payment_failed` later, when you build cancellation and failed-payment handling) - [ ] Webhook signing secret stored in Supabase Edge Function environment as `STRIPE_WEBHOOK_SECRET` - [ ] Stripe API key (live, secret) stored as `STRIPE_SECRET_KEY` in Supabase Edge Function environment diff --git a/content/course/tech-for-non-technical-founders-2026/should-you-hire-2026-decision-tree/index.md b/content/course/tech-for-non-technical-founders-2026/should-you-hire-2026-decision-tree/index.md index 265029ac9..4a8bb04c1 100644 --- a/content/course/tech-for-non-technical-founders-2026/should-you-hire-2026-decision-tree/index.md +++ b/content/course/tech-for-non-technical-founders-2026/should-you-hire-2026-decision-tree/index.md @@ -42,7 +42,7 @@ related_posts: false Hiring engineers before a single paying customer is confirmed is the most common build-decision mistake at the idea stage. The hire is the move that breaks the runway; the step it skips is the cheaper experiment that would have told you whether you need to build at all. Five questions route you to the smallest path that answers your next question. -After this lesson you will be able to: **decide which of four build paths fits your evidence and runway - validate without code, self-serve, fractional CTO, or hire a team - and write the verdict at the top of your worksheet.** +> → **Mia hit this gate** with a validated problem, a one-page brief, and zero experience hiring engineers. The decision tree said: self-serve. [Full walkthrough →](/course/tech-for-non-technical-founders-2026/module-4-walkthrough-mia/) Self-serve with Lovable (an AI app builder that turns a plain-English prompt into a working web app), Supabase (the database that stores what the app records), and Stripe (the service that takes the payments) is the default for a non-technical founder in 2026. Hiring - whether a full team or a Fractional CTO (a part-time senior engineer who owns architecture but doesn't write the code) - is what you do when you hit a specific ceiling signal, not the first decision after the brief. diff --git a/content/course/tech-for-non-technical-founders-2026/slopsquatting-ai-supply-chain-attack/index.md b/content/course/tech-for-non-technical-founders-2026/slopsquatting-ai-supply-chain-attack/index.md index d5ccfa454..a71c02351 100644 --- a/content/course/tech-for-non-technical-founders-2026/slopsquatting-ai-supply-chain-attack/index.md +++ b/content/course/tech-for-non-technical-founders-2026/slopsquatting-ai-supply-chain-attack/index.md @@ -82,7 +82,7 @@ jobs: ``` -That is the entire defense. The PR cannot merge until a human looks at the new gem, the new pip package, or the new npm module and confirms it exists, is maintained, has the download count it should, and matches the name a developer would actually write. The gate runs on every PR. It blocks every new dependency by default. The reviewer overrides with a `dep-approved` label or a `[skip-dep-gate]` commit message that the founder must co-sign. +That is the entire defense. The PR cannot merge until a human looks at the new gem, the new pip package, or the new npm module and confirms it exists, is maintained, has the download count it should, and matches the name a developer would actually write. The gate runs on every PR. It blocks every new dependency by default. To override: the founder manually approves the new dependency during PR review, confirming the package exists, is maintained, and has the expected download count. ```mermaid diff --git a/content/course/tech-for-non-technical-founders-2026/smoke-test-build-page/index.md b/content/course/tech-for-non-technical-founders-2026/smoke-test-build-page/index.md index d7f14e0d4..8f4a2ea88 100644 --- a/content/course/tech-for-non-technical-founders-2026/smoke-test-build-page/index.md +++ b/content/course/tech-for-non-technical-founders-2026/smoke-test-build-page/index.md @@ -26,7 +26,7 @@ related_posts: false > **Module 1 · Lesson 1.2 · [CORE]** · [From Idea to First Paying Customer](/course/tech-for-non-technical-founders-2026/) > -> **Input:** your Founding Hypothesis sentence from [Lesson 1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) (the one-sentence `if [customer] solves [problem] with [approach]...` you wrote) +> **Input:** your Founding Hypothesis sentence from [Lesson 1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) (the one-sentence `if [CUSTOMER] solves [PROBLEM] with [APPROACH]...` you wrote) > > **Output:** a live landing page that explains your offer to potential customers > @@ -67,7 +67,7 @@ Return 5-8 quotes. Prefer recent posts and specific frustration over general opinions. ``` -(These same quotes get reused later: your `[problem]` blank in 1.1 if it's still vague, and Module 2's people-hunting starts from the threads this search finds.) +(These same quotes get reused later: your `[PROBLEM]` blank in 1.1 if it's still vague, and Module 2's people-hunting starts from the threads this search finds.) ## Step 2: the prompt to paste @@ -134,13 +134,13 @@ Send the URL to **ONE real person** who has not seen your work. Any stranger wor **If this fails: strangers cannot name who the page is for or what it does, even after 2 headline rewrites.** -- **Why:** your hypothesis `[customer]` or `[differentiation]` blank is still too vague. +- **Why:** your hypothesis `[CUSTOMER]` or `[DIFFERENTIATION]` blank is still too vague. - **Fix:** back to [Lesson 1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) and tighten ("solo chiropractors," not "small businesses"). **If this fails: the builder's draft reads generic after 2 regenerations.** -- **Why:** your hypothesis `[problem]` blank is too vague. -- **Fix:** back to [Lesson 1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) and tighten the `[problem]` blank to one specific failure mode. +- **Why:** your hypothesis `[PROBLEM]` blank is too vague. +- **Fix:** back to [Lesson 1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) and tighten the `[PROBLEM]` blank to one specific failure mode. **If this fails: no AI builder fits your idea, or you want manual layout control.** diff --git a/content/course/tech-for-non-technical-founders-2026/smoke-test-landing-page-7-day-demand-test/index.md b/content/course/tech-for-non-technical-founders-2026/smoke-test-landing-page-7-day-demand-test/index.md index 6b7a1477e..b36dda8a2 100644 --- a/content/course/tech-for-non-technical-founders-2026/smoke-test-landing-page-7-day-demand-test/index.md +++ b/content/course/tech-for-non-technical-founders-2026/smoke-test-landing-page-7-day-demand-test/index.md @@ -37,7 +37,7 @@ After this lesson you will be able to: **make a go / iterate / kill decision on ## Pick your channel -Choose based on who your hypothesis names in the `[customer]` blank. The dollar ranges below are **CPC** (cost-per-click - what one ad click costs you): +Choose based on who your hypothesis names in the `[CUSTOMER]` blank. The dollar ranges below are **CPC** (cost-per-click - what one ad click costs you): - **Selling to individual people** → [Meta Ads](https://business.facebook.com/) ($0.70-$1.90 CPC). Best when the product is visual and the audience is broad. - **Selling to businesses, by job title** → [Google Search](https://ads.google.com/) ($3-$8 CPC) if your customer Googles the problem; [LinkedIn](https://www.linkedin.com/campaignmanager/) ($5.70-$22 CPC) if they don't. @@ -79,7 +79,7 @@ You will not have to figure out the ad on your own: the launch checklist below l ## If the number looks wrong **If this fails: conversion is below 3%.** -- **Why:** your `[customer]` or `[differentiation]` blank is too vague - strangers don't recognize themselves in the headline. +- **Why:** your `[CUSTOMER]` or `[DIFFERENTIATION]` blank is too vague - strangers don't recognize themselves in the headline. - **Fix:** go back to [Lesson 1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) and tighten the blank that scored lowest on your 4-lens test. **If this fails: conversion is above 20%.** diff --git a/content/course/tech-for-non-technical-founders-2026/sow-reading-guide/index.md b/content/course/tech-for-non-technical-founders-2026/sow-reading-guide/index.md index d66e4eb14..e78b9c122 100644 --- a/content/course/tech-for-non-technical-founders-2026/sow-reading-guide/index.md +++ b/content/course/tech-for-non-technical-founders-2026/sow-reading-guide/index.md @@ -152,7 +152,7 @@ The [step-by-step exit guide](/blog/fire-dev-shop-guide/) covers what a clean te > > Subject: `SOW review - [N] questions before we sign` > -> Hi [agency contact], +> Hi [AGENCY_CONTACT], > > I walked the SOW last night with the [8-clause scoring guide](https://jetthoughts.com/course/tech-for-non-technical-founders-2026/sow-reading-guide/). A few questions below - happy to jump on a call, but please reply in writing so we both have the answers on file. > diff --git a/content/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/index.md b/content/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/index.md index ef76c4f05..17b7881a3 100644 --- a/content/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/index.md +++ b/content/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/index.md @@ -55,9 +55,9 @@ Engineers and AI agents fill vague requests from training data - big-company Saa Rewrite every feature noun in three parts. Each part forecloses a category of overbuild. -- **When [trigger context]** - the specific situation that activates the need. Names the moment, the day, the deadline, the surrounding tools. *"When I prepare the weekly investor report"* tells the builder this happens once a week, that there is a deck, that there is a 4pm call. No real-time streaming dashboard for something that happens on a Tuesday afternoon. +- **When [TRIGGER_CONTEXT]** - the specific situation that activates the need. Names the moment, the day, the deadline, the surrounding tools. *"When I prepare the weekly investor report"* tells the builder this happens once a week, that there is a deck, that there is a 4pm call. No real-time streaming dashboard for something that happens on a Tuesday afternoon. - **I want [action + budget]** - a verb on a concrete object, with a limit. *"I want to grab the top 5 metrics in 30 seconds"* is a verb (grab), an object (the 5 metrics), and a budget (30 seconds). No 12-metric dashboard, no async export queue. -- **So I can [outcome]** - the result that proves the build worked. *"So I can paste them into the deck before the 4pm call"* is a finish line the builder holds every feature suggestion up against: does the audit log help you paste before 4pm? No? Cut it. +- **So I can [OUTCOME]** - the result that proves the build worked. *"So I can paste them into the deck before the 4pm call"* is a finish line the builder holds every feature suggestion up against: does the audit log help you paste before 4pm? No? Cut it. Put the three parts together and the builder has no gaps left to guess at. Drop any one - the timeframe, the action, or the outcome - and the gap gets filled from training data instead of your intent. diff --git a/content/course/tech-for-non-technical-founders-2026/validation-tools-field-guide/index.md b/content/course/tech-for-non-technical-founders-2026/validation-tools-field-guide/index.md index 125a41f38..3f1b9c7ef 100644 --- a/content/course/tech-for-non-technical-founders-2026/validation-tools-field-guide/index.md +++ b/content/course/tech-for-non-technical-founders-2026/validation-tools-field-guide/index.md @@ -70,10 +70,10 @@ The tools catch different things: | Blind spot | Which tool catches it | |---|---| | You named a competitor nobody has heard of (or missed the one everyone uses) | VenturusAI (Porter's Five Forces) | -| Your `[customer]` blank is "small businesses" - a category, not a person | Preuve AI (niche-segment scan) | +| Your `[CUSTOMER]` blank is "small businesses" - a category, not a person | Preuve AI (niche-segment scan) | | Your unit economics assume $50/mo pricing when the market pays $15 | DimeADozen (retention-curve section) | | Your problem is real but the market is too small to support a business | DimeADozen (market-sizing section) | -| Your `[differentiation]` is "easier to use" - the vaguest claim in SaaS | VenturusAI (SWOT strengths section flags it) | +| Your `[DIFFERENTIATION]` is "easier to use" - the vaguest claim in SaaS | VenturusAI (SWOT strengths section flags it) | None of these tools costs more than a month of Perplexity Pro. Two are free. Run at least one before you fill the five blanks. @@ -120,7 +120,7 @@ Every blank in the Mad Libs sentence is a blank in your VenturusAI input. Specif The report has 7-8 sections. You do not need to read all of them. Focus on three: -**Porter's Five Forces - Competitive Rivalry section.** If it names a competitor you had not thought of, add that competitor to the Competition column in the [full hypothesis sprint](/course/tech-for-non-technical-founders-2026/reference/hypothesis-sprint-full/). If it names one you already knew about but describes their advantage in a way you had not considered, rewrite your `[differentiation]` blank. +**Porter's Five Forces - Competitive Rivalry section.** If it names a competitor you had not thought of, add that competitor to the Competition column in the [full hypothesis sprint](/course/tech-for-non-technical-founders-2026/reference/hypothesis-sprint-full/). If it names one you already knew about but describes their advantage in a way you had not considered, rewrite your `[DIFFERENTIATION]` blank. **SWOT - Weaknesses.** This is the section that hurts. If the AI flags a weakness you already knew about (e.g., "founder has no engineering background"), that is expected. If it flags one you had not considered (e.g., "customer acquisition depends on insurance-industry partnerships that take 6-12 months to close"), pay attention. That is a structural blank in your hypothesis. @@ -160,7 +160,7 @@ The Starter report is 5-7 pages. You only need to read two sections on the first **Kill Risks.** This is the section that justifies the $9. It flags existential threats: market saturation (too many entrenched players), low barriers to entry (competitors can clone you in a weekend), CAC-to-LTV problems (acquiring a customer costs more than they will ever pay you), and regulatory hurdles. If any kill risk is specific - names a competitor, a regulation, or a cost number - take it seriously. If it is generic ("the market is competitive"), treat it as a yellow flag, not a red one. -**Retention-Curve / Unit Economics.** This section estimates whether the numbers work. If it says your target market is too small at your price point, revisit the `[customer]` blank in Lesson 1.1. If it says your CAC is too high relative to LTV, revisit your channel assumption. +**Retention-Curve / Unit Economics.** This section estimates whether the numbers work. If it says your target market is too small at your price point, revisit the `[CUSTOMER]` blank in Lesson 1.1. If it says your CAC is too high relative to LTV, revisit your channel assumption. Skip the Executive Summary and Go-To-Market sections on first read. They are AI-generated strategy and rarely say anything you could not have guessed. Come back to them after you have real interview data. @@ -213,7 +213,7 @@ The tool matches your description against live data sources. A broad description **Start with the Viability Score (0-100).** A score above 70 means the tool found positive market signals. A score below 40 means it found more problems than opportunities. A score between 40-70 means the data is mixed - drill into the specific sections that pulled the score down. -**Competitor Mapping.** Preuve identifies up to 15 competitors with pricing and "weak spots." The weak spots are the most actionable part of the report - they tell you where existing solutions fall short. If three competitors share the same weak spot, your `[differentiation]` blank should target it. +**Competitor Mapping.** Preuve identifies up to 15 competitors with pricing and "weak spots." The weak spots are the most actionable part of the report - they tell you where existing solutions fall short. If three competitors share the same weak spot, your `[DIFFERENTIATION]` blank should target it. **Source links.** Every claim is linked to its source. If a score looks off - too high or too low - drill into the cited source before dismissing it. Sometimes the AI misinterprets a data point (e.g., a Reddit post from 2018 gets weighted too heavily). You are the human in the loop. @@ -265,7 +265,7 @@ Run your hypothesis paragraph through VenturusAI. Read the Porter's Five Forces ### 2. Preuve AI free scan (second - free) -Run your refined hypothesis through Preuve's free scan. Check if the viability score is above 50 and whether the competitor mapping names companies in your space. If the score is low, revisit your `[customer]` or `[problem]` blank. If the score is solid, you have a data-backed signal that the market exists. +Run your refined hypothesis through Preuve's free scan. Check if the viability score is above 50 and whether the competitor mapping names companies in your space. If the score is low, revisit your `[CUSTOMER]` or `[PROBLEM]` blank. If the score is solid, you have a data-backed signal that the market exists. **Time:** 5 minutes. diff --git a/content/course/tech-for-non-technical-founders-2026/where-to-hire-developer-2026-map/index.md b/content/course/tech-for-non-technical-founders-2026/where-to-hire-developer-2026-map/index.md index 80d824bfe..d5013fcd6 100644 --- a/content/course/tech-for-non-technical-founders-2026/where-to-hire-developer-2026-map/index.md +++ b/content/course/tech-for-non-technical-founders-2026/where-to-hire-developer-2026-map/index.md @@ -158,7 +158,7 @@ The good answer names the framework conventions, the specific failure mode (hall > Bad: *"I have done a lot of full-stack work. Some Rails, some Node, some Python. I am a polyglot."* -> Good: *"Rails since 2019. Six production apps shipped, four still in production. The biggest is a [type] app at [scale], the smallest is a [type] app at [scale]. My most recent Rails ship was [last quarter] for [client / employer]. I prefer Postgres over MySQL because [specific reason about your scope]. Happy to walk you through the GitHub history of the most recent app on a screenshare."* +> Good: *"Rails since 2019. Six production apps shipped, four still in production. The biggest is a [TYPE] app at [SCALE], the smallest is a [TYPE] app at [SCALE]. My most recent Rails ship was [LAST_QUARTER] for [CLIENT_OR_EMPLOYER]. I prefer Postgres over MySQL because [SPECIFIC_REASON]. Happy to walk you through the GitHub history of the most recent app on a screenshare."* The good answer is countable: years, ships, scale, recent quarter, screenshare offer. The bad answer is a list of frameworks the candidate has touched. Polyglot reads as "no deep ship in any one framework." For a pre-seed Rails app, you want six Rails ships, not three Rails + three Node + three Python. @@ -172,7 +172,7 @@ The good review reads the dependency manifest as carefully as the application co ## What to do tomorrow -1. **Write your geography choice and your two platforms at the top of a fresh Notion doc.** One line: *"Region: [Tier-2 India / LATAM nearshore / US onshore]. Platforms: [primary] + [backup]. Posted on [date]. First slate by [date + 5 days]."* +1. **Write your geography choice and your two platforms at the top of a fresh Notion doc.** One line: *"Region: [Tier-2 India / LATAM nearshore / US onshore]. Platforms: [PRIMARY] + [BACKUP]. Posted on [DATE]. First slate by [DEADLINE]."* 2. **Schedule 5 intro calls in the same week.** Not three. Not ten. Five gives you a comparison and a rolling shortlist. Each call is 30 minutes. Use the [7-question hiring interview script](/course/tech-for-non-technical-founders-2026/hiring-interview-script/). 3. **Take the shortlist of 3-5 candidates to the [hiring interview](/course/tech-for-non-technical-founders-2026/hire-track-supplementary-reference/#interviews-that-catch-ai-theater).** That section covers the deep-dive interview that catches AI theater. This map gets you to the shortlist; that post gets you to the hire. diff --git a/docs/projects/2605-tech-for-non-technical-founders/30-39-architecture-design/30.05-icp-journey-sipoc.md b/docs/projects/2605-tech-for-non-technical-founders/30-39-architecture-design/30.05-icp-journey-sipoc.md new file mode 100644 index 000000000..a55ebcf27 --- /dev/null +++ b/docs/projects/2605-tech-for-non-technical-founders/30-39-architecture-design/30.05-icp-journey-sipoc.md @@ -0,0 +1,255 @@ +# 30.05 — ICP Journey SIPOC: Sam's Path Through the Course + +**Status:** Canonical journey map — agent-parseable and human-readable +**Date:** 2026-07-18 +**Purpose:** Visual source-of-truth for the full ICP journey. Agents can validate lesson ordering, gate thresholds, tool references, and artifact handoffs against this diagram. Humans can scan it to understand the course flow at a glance. + +**ICP:** Sam — first-time non-technical founder, idea-stage, ~$20K savings, evenings/weekends pace, zero coding ability. +**Course promise:** Rough idea → signed paid pilot, no coding required. +**Total time:** 10-16 weeks at evenings-and-weekends pace (6-10 weeks full-time). + +--- + +## Mermaid Flowchart (Machine-Readable) + +```mermaid +%%{init: {'theme':'base', 'themeVariables': {'fontFamily':'Inter, system-ui, sans-serif', 'fontSize':'13px', 'primaryColor':'#f0f9f0', 'primaryBorderColor':'#2e7d32', 'lineColor':'#555', 'primaryTextColor':'#1a1a1a'}}}%% +flowchart TB + %% ═══════════════════════════════════════ + %% ENTRY + %% ═══════════════════════════════════════ + Start(["Rough idea"]) + Start --> HowWorks["Ch.0 · How This Course Works
⏱ 10 min read
📦 Map: 5 modules, 20+ lessons, 6 artifacts"] + HowWorks --> QS(["Fast path? → Quickstart
⏱ 3 min
Core lessons only"]) + HowWorks --> FAQ(["Stuck? → FAQ
15 Q&A"]) + + %% ═══════════════════════════════════════ + %% MODULE 1: Hypothesis & Smoke Test + %% ⏱ 2-3 weeks evenings, ~7 days full-time + %% ═══════════════════════════════════════ + HowWorks --> M1_1 + QS --> M1_1 + subgraph M1["MODULE 1 · Hypothesis & Smoke Test
⏱ 2-3 weeks evenings / ~7 days full-time"] + direction TB + M1_1["1.1 · Form Your Founding Hypothesis
🛠 Notebook + kitchen timer
📦 Founding Hypothesis doc
Gate: ≥14/20, no lens <2"] + M1_1 --> M1_1Gate{Score ≥14/20?} + M1_1Gate -->|Yes| M1_2 + M1_1Gate -->|No| M1_1Fix["Fix: tighten blanks with Reddit/G2 quotes"] + M1_1Fix --> M1_1 + + M1_2["1.2 · Build Smoke-Test Page
🛠 Mixo or Carrd
📦 Live landing page URL
Check: one stranger names who it's for in 3s"] + M1_2 --> M1_2Gate{Stranger passes
3-second test?} + M1_2Gate -->|Yes| M1_3 + M1_2Gate -->|No| M1_2Fix["Fix: rewrite headline"] + M1_2Fix --> M1_2 + + M1_3["1.3 · Wire Tracking
🛠 Microsoft Clarity + GA4
📦 Tracking installed + verified"] + M1_3 --> M1_4 + + M1_4["1.4 · Run Smoke Test
🛠 Meta/Google/LinkedIn/Reddit Ads
📦 Conversion rate from 300 cold visitors"] + M1_4 --> M1_4Gate{Conversion rate?} + M1_4Gate -->|"<3% Kill/Pivot"| M1_Kill["↩ Back to 1.1 — rewrite hypothesis"] + M1_4Gate -->|"3–<6% Iterate"| M1_Iterate["Fix headline/audience, re-run"] + M1_Iterate --> M1_4 + M1_4Gate -->|"≥6% Promising"| M1_5 + + M1_5["1.5 · Price Hypothesis
🛠 Stripe Payment Links
📦 Click-to-payment signal"] + end + + M1_5 --> M1_Out(["✅ M1 OUT: Founding Hypothesis + live landing page + tracking + conversion data + price signal"]) + M1_Out --> M2_1 + + %% ═══════════════════════════════════════ + %% MODULE 2: Validate the Problem + %% ⏱ 3-5 weeks full-time + %% ═══════════════════════════════════════ + subgraph M2["MODULE 2 · Validate the Problem
⏱ 3-5 weeks full-time (booking interviews is the long pole)"] + direction TB + M2_1["2.1 · The Mom Test
🛠 Mom Test Interview Script
📦 5-8 past-tense question list"] + M2_1 --> M2_2Detour{First time
interviewing?} + M2_2Detour -->|Yes optional| M2_2["2.2 · AI Persona Rehearsal
🛠 Claude or ChatGPT
📦 Sharpened question list"] + M2_2Detour -->|No skip| M2_3 + M2_2 --> M2_3 + + M2_3["2.3 · Find 10 People: Where
🛠 Reddit, LinkedIn, X
📦 30-name list"] + M2_3 --> M2_4 + + M2_4["2.4 · Find 10 People: What to Say
🛠 Outreach Sequence Template
📦 10 booked interviews"] + M2_4 --> Interviews["▶ RUN 10 INTERVIEWS ◀
⏱ Days, not one sitting
Use 2.1 script
Score each within 5 min of hanging up"] + + Interviews --> M2_5 + + M2_5["2.5 · Synthesis: Build, Pivot, Kill
🛠 Validated Problem Statement Template
90 min: score 10 transcripts, count strong signals"] + M2_5 --> M2_5Gate{Strong signals
in 10 calls?} + M2_5Gate -->|"≥7 BUILD"| M2_6 + M2_5Gate -->|"4-6 PIVOT"| M2_Pivot["↩ Back to 2.3 — refine ICP, run 5 more interviews"] + M2_5Gate -->|"<4 KILL"| M2_Kill["↩ Back to 1.1 — rewrite hypothesis, re-run 2.3"] + + M2_6["2.6 · Build Clickable Prototype
🛠 Lovable
📦 5 silent-observation sessions"] + M2_6 --> M2_6Gate{"4+ of 5 pass?
(silent observation)"} + M2_6Gate -->|"No, fix"| M2_6Fix["Fix: iterate prototype
based on observation notes"] + M2_6Fix --> M2_6 + end + + M2_6Gate -->|"Yes, 4+ pass"| M2_Out(["✅ M2 OUT: 10 scored transcripts + build/pivot/kill decision + prototype feedback + verbatim vocabulary"]) + M2_Out --> M3_1 + + %% ═══════════════════════════════════════ + %% MODULE 3: Design from Evidence + %% ⏱ ~1 week + %% ═══════════════════════════════════════ + subgraph M3["MODULE 3 · Design from Evidence
⏱ ~3-5 days (one evening + lunch-break check)"] + direction TB + M3_1["3.1 · One-Page Product Brief
🛠 Vibe PRD Template
📦 5-section brief (≤250 words)"] + M3_1 --> M3_2 + + M3_2["3.2 · Quality-Check: Features → Outcomes
🛠 Claude or ChatGPT
📦 Outcome-shaped Section 3
Gate: peer review names nothing outside no-go list"] + end + + M3_2 --> M3_Out(["✅ M3 OUT: One-page Product Brief + outcome-shaped feature list + no-go list"]) + M3_Out --> M4_1 + + %% ═══════════════════════════════════════ + %% MODULE 4: Build It Yourself + %% ⏱ 2-4 weeks + %% ═══════════════════════════════════════ + subgraph M4["MODULE 4 · Build It Yourself
⏱ 2-4 weeks"] + direction TB + M4_1["4.1 · Should You Hire?
🛠 Build Path Decision Worksheet
📦 4-way path: self-serve / validate / fractional CTO / hire"] + M4_1 --> M4_1Gate{Build path?} + M4_1Gate -->|Self-serve| M4_2["4.2 · Ownership Audit
🛠 Ownership Checklist
📦 All accounts in founder's name
Applies to ALL paths"] + M4_1Gate -->|Validate| M4_Validate["Validate without code
Airbnb test"] + M4_1Gate -->|Fractional CTO| M4_Frac["Fractional CTO bridge
→ Hire-track supplementary reference"] + M4_1Gate -->|Hire| M4_Hire["Hire a team
→ SOW Reading Guide"] + + M4_Validate --> M4_2 + M4_Frac --> M4_2 + M4_Hire --> M4_2 + + M4_2 --> M4_Route{Building it
yourself?} + M4_Route -->|Yes| M4_3 + M4_Route -->|No hired/frac| M4_HireRef["→ Hire-track ref / SOW Guide / Fractional CTO"] + + M4_3["4.3 · Self-Serve Stack: Tools & Setup
🛠 Lovable + Supabase + Stripe
📦 3 pre-flight rules locked + scope-leak watchlist"] + M4_3 --> M4_4 + + M4_4["4.4 · Self-Serve Stack: Build Phases
🛠 Same stack + custom domain
📦 Live MVP at real URL
Gate: 5 green lights"] + M4_4 --> M4_4Gate{5 green lights?} + M4_4Gate -->|Yes| M4_Out + M4_4Gate -->|No| M4_4Fix["Fix red light first"] + M4_4Fix --> M4_4 + + M4_Out(["✅ M4 OUT: Build-path decision + locked ownership + live MVP at real URL"]) + M4_Out -.->|"Optional: monthly after launch"| M4_5Opt["4.5 · Ceiling Signals
🛠 Monthly calendar block
📦 Ceiling signal watchlist"] + M4_5Opt -.-> M5_1 + M4_Out -.->|"Optional"| M4_5Opt["4.5 · Ceiling Signals
🛠 Monthly calendar block
📦 Ceiling signal watchlist"] + M4_5Opt --> M5_1 + M4_Out --> M5_1 + + %% ═══════════════════════════════════════ + %% MODULE 5: First Paying Customer + %% ⏱ 2-4 weeks + %% ═══════════════════════════════════════ + subgraph M5["MODULE 5 · First Paying Customer
⏱ 2-4 weeks"] + direction TB + M5_1["5.1 · Sean Ellis 40% Test
🛠 PMF Survey Template
📦 Must-have segment identified
Gate: 40%+ 'very disappointed'"] + M5_1 --> M5_1Gate{40%+ very
disappointed?} + M5_1Gate -->|Yes| M5_2Detour + M5_1Gate -->|No| M5_FixProduct["Fix the product before acquiring"] + + M5_2Detour{Need to pick
a channel?} + M5_2Detour -->|Yes optional| M5_2["5.2 · Choose Your Channel
🛠 Channel Selection Framework
📦 One committed channel"] + M5_2Detour -->|No skip| M5_3 + M5_2 --> M5_3 + + M5_3["5.3 · Build 50-Name Network List
🛠 Google Sheet
📦 50 names in 4 buckets"] + M5_3 --> M5_4 + + M5_4["5.4 · Write the Outreach Message
🛠 Loom
📦 4 message variants + 90s Loom"] + M5_4 --> M5_5 + + M5_5["5.5 · Send, Track, Read Replies
🛠 Same spreadsheet
📦 Demos booked"] + M5_5 --> M5_6 + + M5_6["5.6 · Charge Before You Ship
🛠 DPA Template + Stripe
📦 Signed DPA + cleared deposit
Gate: $500+ deposit received"] + M5_6 --> M5_6Gate{Deposit
cleared?} + M5_6Gate -->|Yes| M5_Out + M5_6Gate -->|No| M5_6Fix["Objection-handle or move to next lead"] + + M5_FixProduct --> M4_4 + + M5_Out(["🏁 COURSE COMPLETE
Signed paid pilot
First dollar from a customer, not a favor"]) + + M5_FixProduct --> M4_4 + + M5_Out -.->|"Optional: if warm list runs dry"| M5_7Opt["5.7 · Cold Outbound
🛠 LinkedIn Sales Navigator
📦 30 filtered messages, 1-2 pilots"] + M5_7Opt -.-> GoingFurther + M5_Out -.->|"Optional"| M5_7Opt["5.7 · Cold Outbound
🛠 LinkedIn Sales Navigator
📦 30 filtered messages, 1-2 pilots"] + M5_7Opt --> GoingFurther + M5_Out --> GoingFurther["Going Further chapters
(trigger-based)
Churn triage · Pivot/Persevere · Hire track
Agency AI questions · Friday Demo Rule
Weekly Dev Report · Org Chart"] + + %% ═══════════════════════════════════════ + %% STYLING + %% ═══════════════════════════════════════ + classDef entry fill:#e8f4f8,stroke:#0277bd,stroke-width:2.5px,color:#1a1a1a + classDef lesson fill:#fff,stroke:#555,stroke-width:1.5px,color:#1a1a1a + classDef gate fill:#faf5ff,stroke:#a855f7,stroke-width:2px,color:#1a1a1a + classDef kill fill:#ffebee,stroke:#c62828,stroke-width:2px,color:#1a1a1a + classDef out fill:#f0f9f0,stroke:#2e7d32,stroke-width:2.5px,color:#1a1a1a + classDef finish fill:#e8f5e9,stroke:#2e7d32,stroke-width:3px,color:#1a1a1a + classDef optional fill:#f5f5f5,stroke:#999,stroke-width:1px,stroke-dasharray:5,color:#666 + classDef interview fill:#fff5f5,stroke:#cc342d,stroke-width:2px,color:#1a1a1a + + class Start,HowWorks entry + class M1_1,M1_2,M1_3,M1_4,M1_5,M2_1,M2_3,M2_4,M2_5,M2_6,M3_1,M3_2,M4_1,M4_2,M4_3,M4_4,M5_1,M5_3,M5_4,M5_5,M5_6,M2_6Fix lesson + class M1_1Gate,M1_2Gate,M1_4Gate,M2_5Gate,M2_6Gate,M4_1Gate,M4_4Gate,M5_1Gate,M5_2Detour,M5_6Gate gate + class M1_Kill,M2_Kill kill + class M1_Out,M2_Out,M3_Out,M4_Out out + class M5_Out,GoingFurther finish + class M2_2,M4_5Opt,M5_2,M5_7Opt,QS,FAQ optional + class Interviews interview +``` + +--- + +## Text Summary (Human-Readable) + +### Sam starts with: a rough idea, $20K savings, evenings/weekends, zero coding ability. + +| Module | Input | Lessons (Core) | Gate | Output | Time | +|---|---|---|---|---|---| +| **M1: Hypothesis & Smoke Test** | Rough idea | 1.1 Hypothesis → 1.2 Landing page → 1.3 Tracking → 1.4 300 visitors → 1.5 Price button | ≥6% conversion from cold traffic | Founding Hypothesis + live page + conversion data + price signal | 2-3 weeks | +| **M2: Validate the Problem** | M1 artifacts | 2.1 Mom Test script → 2.3 Find people → 2.4 Book interviews → [run 10 interviews] → 2.5 Synthesis → 2.6 Prototype | ≥7/10 have spent time/money on problem | 10 scored transcripts + build/pivot/kill + prototype feedback | 3-5 weeks | +| **M3: Design from Evidence** | Validated problem + prototype vocab | 3.1 Product Brief → 3.2 Features→Outcomes | Every feature traces to interview quote | One-page brief + outcome-shaped feature list + no-go list | ~1 week | +| **M4: Build It Yourself** | Quality-checked brief | 4.1 Hire decision → 4.2 Ownership → 4.3 Stack setup → 4.4 Build phases | 5 green lights (Stripe live, custom domain, ICP tested, no errors, demo recording) | Live MVP at real URL with all accounts in founder's name | 2-4 weeks | +| **M5: First Paying Customer** | Live MVP | 5.1 PMF test → 5.3 Network list → 5.4 Outreach → 5.5 Send/track → 5.6 Paid pilot | $500+ deposit cleared via Stripe | Signed DPA + first dollar from a customer | 2-4 weeks | + +### Branch paths (where Sam can loop back): +- **1.1 → 1.1**: Score <14/20 — tighten blanks +- **1.4 → 1.1**: <3% conversion — kill/pivot hypothesis +- **2.5 → 2.3**: 4-6 strong signals — pivot, refine ICP, 5 more interviews +- **2.5 → 1.1**: <4 strong signals — kill, rewrite hypothesis +- **4.4 → 4.4**: Red light — fix before advancing + +### Optional detours: +- **2.2**: AI persona rehearsal (skip if interviewed before) +- **4.5**: Ceiling signals (monthly check, start after launch) +- **5.2**: Channel selection (skip if channel is obvious) +- **5.7**: Cold outbound (skip if warm network produced customers) + +### Total artifacts (Founder OS): 6 +Founding Hypothesis · Landing page · Validated Problem Statement · Product Brief · Live MVP · Signed paid pilot + +--- + +## Agent Validation Checklist + +Agents reading this diagram can validate: + +- [ ] Every lesson slug in `data/course_sequence.yaml` appears as a node +- [ ] Gate thresholds match prose: ≥6% Promising (1.4), ≥7/10 build (2.5), $500+ deposit (5.6) +- [ ] Optional lessons are not prerequisites for core lessons in later modules +- [ ] Each module's output feeds the next module's first input +- [ ] No lesson references a tool that hasn't been introduced in a prior lesson +- [ ] Branch paths (pivot/kill) loop back to the correct re-entry point +- [ ] Time estimates are internally consistent (M1 2-3w + M2 3-5w + M3 ~1w + M4 2-4w + M5 2-4w = 10-17w evenings) diff --git a/docs/projects/2605-tech-for-non-technical-founders/30-39-architecture-design/30.06-operational-dependency-map.md b/docs/projects/2605-tech-for-non-technical-founders/30-39-architecture-design/30.06-operational-dependency-map.md new file mode 100644 index 000000000..75dcf99a9 --- /dev/null +++ b/docs/projects/2605-tech-for-non-technical-founders/30-39-architecture-design/30.06-operational-dependency-map.md @@ -0,0 +1,632 @@ +# 30.06 — Operational Dependency Map: How Sam Obtains Every Input + +**Status:** Canonical operational dependency map +**Date:** 2026-07-18 +**Purpose:** Maps every lesson's inputs — what Sam needs, **how Sam obtains it**, and which upstream lesson produced it. Also confirms that Sam's only original inputs are a rough idea and a Gmail address. Agents can validate that every `[BRACKET]` placeholder has a documented upstream source and that no step assumes a tool or account Sam hasn't set up yet. + +--- + +## The Original-Inputs Principle + +Sam arrives with exactly **three things** he already owns: + +| Original input | Why it's sufficient | +|---|---| +| **Rough idea or instinct** | The raw material for 1.1's hypothesis sentence — a problem he's observed, a market he knows, or something half-built he's been tinkering with | +| **Gmail account** | Powers the `Founder OS` Google Drive folder (1.1), Google Analytics (1.3), Google Sheets (5.3), and Google Forms (5.1). Also used for signup to every external service. | +| **Browser** | Required for every external signup (Mixo, Stripe, Lovable, Supabase, GitHub, AWS, etc.) and every AI tool (Perplexity, Claude). No assumption that Sam has a specific browser — any modern browser works. | + +Every other account, template, tool, and artifact is **set up or produced during the course** — no Stripe account, no ad account, no Lovable subscription, no domain, no GitHub account is assumed to exist before Day 1. + +--- + +## Legend + +| Icon | Meaning | +|---|---| +| 🔑 | External account required — signup + verification. Every 🔑 lists the exact URL Sam visits and what credential he needs. | +| ⏳ | Wait time / lead time — Sam starts these early or in parallel | +| 💰 | Cost / budget required | +| 📝 | Template blanks to fill — for every `[BRACKET]`, the source lesson is named | +| 📦 | Output artifact — feeds into named downstream lessons | +| 🆘 | Plan B / recovery path | + +--- + +## MODULE 1: Hypothesis & Smoke Test (2-3 weeks) + +### 1.1 · Form Your Founding Hypothesis + +- **⏳ Wait:** None +- **💰 Cost:** $0 +- **🔑 Setup:** Google Drive — Sam already has this via his Gmail. Creates a folder called `Founder OS` for all course artifacts. No new account needed. +- **📦 Input:** Rough idea or instinct (original input #1) +- **📝 Template — Mad Libs hypothesis sentence:** `If we help [CUSTOMER] solve [PROBLEM] with [APPROACH], they'll choose it over [COMPETITION] because [DIFFERENTIATION].` + | Blank | How Sam fills it | Source | + |---|---|---| + | `[CUSTOMER]` | Names one person in one industry — "solo chiropractors," not "small businesses." If stuck: the Perplexity prompt in 1.2 Step 1 surfaces real people complaining. | From Sam's head or 1.2 research | + | `[PROBLEM]` | What they tried and failed at in the last 30 days. If stuck: leave as placeholder, fill after 1.2's Perplexity search returns verbatim complaints. | From Sam's head, refined by 1.2 | + | `[APPROACH]` | The shape of the solution — "one-click resubmit," not "AI-powered workflow." | From Sam's head | + | `[COMPETITION]` | What they currently use — a spreadsheet, a billing service, "doing nothing." | From Sam's head | + | `[DIFFERENTIATION]` | Why they'd switch — faster or cheaper, with numbers. | From Sam's head | +- **📝 Quality gate:** Score 4 lenses (Customer, Pragmatic, Growth, Money) 1-5 each. Total ≥14/20, no lens below 2. +- **📦 Output:** One sentence saved as Google Doc `Founding Hypothesis - [today's date]` in `Founder OS` folder. Feeds: 1.2 (all blanks), 1.4 (campaign targeting), 2.1 (interview script), 2.3 (ICP map). +- **🆘 Plan B — can't fill blanks:** Perplexity search for 2-3 verbatim Reddit/G2 complaints (prompt in 1.2 Step 1). Replace `[PROBLEM]` blank with their exact words. Leave blanks as placeholders if no quotes yet. +- **🆘 Plan B — score below 14:** Find a verbatim quote from a real person. Three reads aloud to a stranger — the blank they trip on gets tightened first. + +### 1.2 · Build Smoke-Test Page + +- **⏳ Wait:** None +- **💰 Cost:** $0 (Mixo/Carrd free tier) +- **🔑 Setup:** Mixo account at [mixo.io](https://www.mixo.io/) — email signup, ~60 seconds. No payment needed. +- **📦 Input:** + | Input | How Sam obtains it | Upstream source | + |---|---|---| + | Founding Hypothesis sentence | Read from `Founding Hypothesis` Google Doc in `Founder OS` folder | **[1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) output** | + | `[CUSTOMER]` blank value | Copy from 1.1 `[CUSTOMER]` blank | **[1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/)** | + | `[PROBLEM]` blank value | Copy from 1.1 `[PROBLEM]` blank | **[1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/)** | + | `[COMPETITION]` blank value | Copy from 1.1 `[COMPETITION]` blank | **[1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/)** | + | `[DIFFERENTIATION]` blank value | Copy from 1.1 `[DIFFERENTIATION]` blank | **[1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/)** | + | 2-3 `[verbatim customer quote]` lines | Run Perplexity prompt in Step 1: searches Reddit/G2 for real complaints using `[CUSTOMER]` and `[PROBLEM]` from 1.1. Keep 2-3 best quotes AND their source URLs (needed for 2.3 people-hunting). | **[1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) blanks** → Perplexity search | + | Hero image | Ask AI assistant: "Photorealistic image: [pain scenario in one sentence]." Or grab a free stock photo from [Unsplash](https://unsplash.com/). Never use a product mockup of something not built. | Generated or found | +- **📝 Builder prompt blanks:** All `[BRACKET]` values in the Step 2 builder prompt are filled from 1.1 hypothesis + Step 1 Perplexity quotes. Nothing new is invented here. +- **📝 Success check:** One stranger names who the page is for and what it does in 3 seconds. +- **📦 Output:** Live landing page URL (e.g., `yourname.mixo.io`). Feeds: 1.3 (tracking install), 1.4 (traffic), 1.5 (price button). +- **🆘 Plan B — strangers can't name it after 2 headline rewrites:** `[CUSTOMER]` or `[DIFFERENTIATION]` blank is too vague → back to 1.1, tighten to a specific noun. +- **🆘 Plan B — no AI builder fits:** Drop to Carrd (no-code drag-drop). Same Step 2 prompt pasted into Carrd's AI assistant. + +### 1.3 · Wire Tracking + +- **⏳ Wait:** None +- **💰 Cost:** $0 (both tools free) +- **🔑 Setup:** Microsoft account (for Clarity) + Google account (for GA4). Sam already has Google via his Gmail; Microsoft signup if needed at [account.microsoft.com](https://account.microsoft.com). Most people already have both. +- **📦 Input:** Live landing page URL from 1.2. **How Sam obtains it:** the URL is in his browser from the Mixo publish step. No search needed. +- **📝 Action:** Paste 2 tracking snippets (Clarity + GA4) into page builder's head-tag field. Verify in incognito window. +- **📦 Output:** Clarity session recording verified + GA4 test visit confirmed. Feeds: 1.4 (traffic measurement). +- **🆘 Plan B — Clarity shows "No data yet":** Snippet is in wrong field (body instead of head tag). Move to head-tag field, publish, wait 1 hour. + +### 1.4 · Run Smoke Test (300 Cold Visitors) + +- **⏳ Wait:** Ad-account approval 24-72 hours. Meta slowest; Reddit same-day. 7-day traffic run. +- **💰 Cost:** See channel table below. $0 organic path exists via smoke-test channel guide. +- **🔑 Setup:** Ad platform account — Sam picks one (Meta/Google/LinkedIn/Reddit). Visits the platform's signup URL, attaches a payment method, waits for ad-account approval. Install channel's pixel in page head-tag. **How Sam chooses:** the channel-selection table in 1.4 ranks platforms by cost per click and Sam's ICP fit. +- **📦 Input:** Tracking-enabled landing page URL from 1.3. **How Sam obtains it:** same URL — he's been working on it since 1.2. +- **📝 Action:** Create campaign targeting the `[CUSTOMER]` from 1.1. Set daily budget to reach 300 visits. Do NOT touch the page for full run. +- **📦 Output:** Conversion rate (form submits ÷ campaign landing-page views). Feeds: 1.5 (price button placement), 1.1 loop-back (if <3%). + +| Channel | Budget (300 visits) | CPC range | Best for | Signup URL | +|---|---|---|---|---| +| Meta | $250-$700 | $0.70-$1.90 | B2C, broad consumer | [business.facebook.com](https://business.facebook.com/) | +| Reddit | $375-$900 | $1.25-$3 | Niche communities, B2B | [ads.reddit.com](https://ads.reddit.com/) | +| Google Search | $900-$2,400 | $3-$8 | Existing search demand | [ads.google.com](https://ads.google.com/) | +| LinkedIn | $1,650-$6,600 | $5.70-$22 | B2B, named companies | [linkedin.com/campaignmanager](https://www.linkedin.com/campaignmanager/) | +| Organic (free) | $0 | $0 | Slow but real — social sharing | None (no account needed) | + +- **🆘 Plan B — conversion <3%:** Hypothesis is wrong → back to 1.1, tighten the blank that scored lowest. +- **🆘 Plan B — ad budget out of reach:** Use $0 organic path in smoke-test channel guide. + +### 1.5 · Price Hypothesis + +- **⏳ Wait:** Stripe verification 1-3 business days. Bank account + tax ID required. **Start the weekend before launch.** +- **💰 Cost:** $0 (Stripe free to set up; per-transaction fees on actual payments) +- **🔑 Setup:** Stripe account at [stripe.com](https://stripe.com) — requires bank account + tax ID (SSN for US sole proprietors). Stripe doesn't verify incorporation at signup. **How Sam signs up:** visits stripe.com, clicks "Start now," follows the verification flow. Creates a Payment Link from Dashboard → Payments → Payment Links. +- **📦 Input:** Live landing page from 1.4. **How Sam obtains it:** same URL from 1.2 — he's been iterating on it since then. +- **📝 Price hypothesis:** + | Element | How Sam determines it | Source | + |---|---|---| + | **Number** | Find 2-3 existing tools in category, start at their middle tier. OR: price against time saved — tool that saves 4 hrs/month is worth a fraction of those hours' cost. | Web search (Google the category, look at pricing pages) | + | **Unit** | One-time (not subscription) for founding-member conversion. | 1.5 lesson guidance | + | **Framing** | Pick ONE: outcome framing ("Stop spending 4 hours on reconciliation - $97") OR risk-reduction ("Reserve your spot - $97 refundable for 30 days"). | 1.5 lesson template | +- **📝 Button copy:** Paste the Payment Link URL on CTA button. Below it: "Not ready? Join the waitlist instead." +- **📦 Output:** Stripe Payment Link live + measured click-to-payment rate. Feeds: 5.6 (deposit math — 1.5 price × 12 = year-one ACV). +- **🆘 Plan B — Stripe verification >3 days:** Build page without button. Run email-only smoke test. Demand signal doesn't depend on button being live today. + +--- + +## MODULE 2: Validate the Problem (3-5 weeks) + +### 2.1 · The Mom Test: Ask About the Past + +- **⏳ Wait:** None +- **💰 Cost:** $0 +- **📦 Input:** + | Input | How Sam obtains it | Upstream source | + |---|---|---| + | `[CUSTOMER]` description (ICP) | Read from 1.1 hypothesis Google Doc — the `[CUSTOMER]` blank value | **[1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/)** | + | Mom Test scoring rubric (1-10, strong signal at 7+) | Printed or open on screen from the 2.1 lesson | **2.1 lesson text** | +- **📝 Template — 5 interview questions from the Mom Test table:** + | Question | How Sam writes it | Source | + |---|---|---| + | 5 verbatim rewrite questions | Copy from Mom Test table in 2.1 lesson. Rewrite to anchor in past events. Start with "Tell me about the last time..." | **[2.1](/course/tech-for-non-technical-founders-2026/mom-test-ask-about-past-not-future/) lesson table** | + | 2-3 ICP-specific probes | Derived from the 1.1 `[PROBLEM]` and `[COMPETITION]` blanks — ask about specific workarounds | **[1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) blanks** | +- **🔑 Setup:** None. Google Doc in existing `Founder OS` folder from 1.1. +- **📦 Output:** 5-8 question list saved as `Mom Test draft - [date]` in `Founder OS` folder. Feeds: 2.2 (optional rehearsal), the 10 interviews before 2.5. +- **🆘 Plan B — questions still sound hypothetical:** Rewrite to "Tell me about the last time..." or "Walk me through what you did when..." + +### 2.2 · AI Persona Rehearsal (OPTIONAL) + +- **⏳ Wait:** None +- **💰 Cost:** $0 (Claude/ChatGPT free tier) +- **🔑 Setup:** Claude account at [claude.ai](https://claude.ai) or ChatGPT (free tier). Already introduced for the Perplexity research in 1.2 — Sam likely has one by now. +- **📦 Input:** Draft question list from 2.1. **How Sam obtains it:** open `Mom Test draft` Google Doc. +- **📦 Output:** Sharpened question list + Objection Tracker. Feeds: the 10 interviews. +- **🆘 Plan B — skip entirely:** If Sam has run customer interviews before, skip to 2.3. + +### 2.3 · Find 10 People: Where to Look + +- **⏳ Wait:** None (research step) +- **💰 Cost:** $0 +- **📦 Input:** + | Input | How Sam obtains it | Upstream source | + |---|---|---| + | `[CUSTOMER]` blank value | Read from 1.1 hypothesis Google Doc | **[1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/)** | + | Reddit/G2 source URLs | These are the URLs Sam saved from the 1.2 Step 1 Perplexity search | **[1.2](/course/tech-for-non-technical-founders-2026/smoke-test-build-page/) Step 1** | +- **📝 Template — AI ICP map prompt:** + | Element | How Sam fills it | Source | + |---|---|---| + | ICP description | Paste 1.1 `[CUSTOMER]` and `[PROBLEM]` blanks into Claude | **[1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/)** | + | 8 communities + 5 search strings | Claude generates these from the ICP description | AI-generated from 1.1 inputs | +- **📦 Output:** 30-name list in a spreadsheet. Feeds: 2.4 (outreach). +- **🆘 Plan B — can't find anyone:** `[CUSTOMER]` is too vague → tighten to "12-person law-firm office manager," not "small business owners." + +### 2.4 · Find 10 People: What to Say + +- **⏳ Wait:** 2-4 calendar weeks to book 10 interviews (the long pole of Module 2) +- **💰 Cost:** $0 (organic outreach). $250-$500 if using research panel fallback. +- **🔑 Setup:** LinkedIn account (for DMs) or email. Calendly free tier at [calendly.com](https://calendly.com) for scheduling (optional). Sam already has email via Gmail (original input). +- **📦 Input:** 30-name list from 2.3. **How Sam obtains it:** open the spreadsheet from 2.3. +- **📝 Template — Outreach Sequence Template (3 messages):** + | Element | How Sam fills it | Source | + |---|---|---| + | Problem description | Use verbatim language from 1.2 Perplexity quotes and 1.1 `[PROBLEM]` blank | **1.2 quotes + 1.1 problem blank** | + | "I'm researching how [CUSTOMER] handles [PROBLEM]" | `[CUSTOMER]` and `[PROBLEM]` from 1.1 | **[1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/)** | +- **📦 Output:** 10 booked interviews on the calendar. Feeds: the 10 interviews, then 2.5 (synthesis). +- **🆘 Plan B — reply rate under 15%:** Expand list to 60 names using 2.3 AI prompt. Usually an ICP-fit problem. + +### [Run 10 Mom Test Interviews — Days, Not One Sitting] + +- **⏳ Wait:** Days to weeks +- **💰 Cost:** $0 +- **📦 Input:** + | Input | How Sam obtains it | Upstream source | + |---|---|---| + | Interview script | `Mom Test draft` Google Doc in `Founder OS` folder | **[2.1](/course/tech-for-non-technical-founders-2026/mom-test-ask-about-past-not-future/) (or [2.2](/course/tech-for-non-technical-founders-2026/ai-persona-pre-validation-mom-test-prep/) if rehearsed)** | + | Booked interviewees | Calendar from 2.4 outreach | **[2.4](/course/tech-for-non-technical-founders-2026/find-10-people-with-problem-outreach-2026/)** | +- **📝 Template:** Score each interview 1-10 using the 2.1 rubric immediately after each call. +- **📦 Output:** 10 scored transcripts. Feeds: 2.5 (synthesis). +- **🆘 Plan B — fewer than 7 show up:** Book 12-15 expecting ~30% no-show. Research panel fallback (UserInterviews, $25-$50/screener) guarantees show rate. + +### 2.5 · Mom Test Synthesis: Build, Pivot, or Kill + +- **⏳ Wait:** None. 90 minutes with transcripts, printed template, pen. +- **💰 Cost:** $0 +- **📦 Input:** 10 scored Mom Test transcripts. **How Sam obtains them:** his own notes from the 10 calls he just ran. +- **📝 Validated Problem Statement Template — 5 sections:** + | Section | How Sam fills it | Source | + |---|---|---| + | Who has the problem | Name the persona from the interviews — not the 1.1 hypothesis; the actual people who showed pain | **10 interview transcripts** | + | What it costs them | Quantify from interviewee quotes — hours lost, dollars spent on workarounds | **Interview transcripts** | + | What they've tried | List workarounds named in interviews | **Interview transcripts** | + | Why now | What changed in the last 6 months that made this urgent | **Interview transcripts** | + | Pain magnitude | Count of 7+ scores vs total. ≥7/10 = BUILD, 4-6 = PIVOT, <4 = KILL | **Interview scores** | +- **📦 Output:** Build/pivot/kill decision + one-page Validated Problem Statement. Feeds: 2.6 (prototype prompt), 3.1 (Product Brief Section 1 — copied verbatim). +- **🆘 Plan B — pivot (4-6):** Sharpen ICP, run 5 more interviews. Cost: 1 week. +- **🆘 Plan B — kill (<4):** Return to 1.1, rewrite weakest blank, re-run 2.3. + +### 2.6 · Build a Clickable Prototype + +- **⏳ Wait:** None. 2 hours build + 5 × 30-minute sessions. +- **💰 Cost:** $0 (Lovable free tier) +- **🔑 Setup:** Lovable account at [lovable.dev](https://lovable.dev). Sam visits the URL, signs up with email (Gmail). No payment needed. +- **📦 Input:** + | Input | How Sam obtains it | Upstream source | + |---|---|---| + | BUILD decision | From 2.5 synthesis | **[2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/)** | + | Validated Problem Statement | `Validated Problem Statement` Google Doc | **[2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/)** | + | 5 strongest-signal interviewees (≥7) | Names from 2.5 scoring sheet | **[2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/)** | +- **📝 3-screen prototype prompt:** + | Blank | How Sam fills it | Source | + |---|---|---| + | `[PRODUCT CATEGORY]` | Derived from the problem statement — what kind of thing is this? | **[2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) problem statement** | +| `[CUSTOMER]` | The persona from the validated problem statement | **[2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/)** | +| `[PRIMARY ACTION]` | The one thing the user does — verb-led, from the problem statement | **[2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/)** | + | `[FAKE DATA]` | Realistic placeholder data Sam makes up matching the persona's world | Invented — realistic to the persona | + | `[BUTTON LABEL]` | The CTA verbatim from 2.5 interviewee vocabulary | **[2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) verbatim language** | +- **📦 Output:** 5 silent-observation sessions scored + verbatim vocabulary from closing question. Feeds: 3.1 (Section 2 user context, Section 3 build scope). +- **🆘 Plan B — 2-3 passes:** Revise one element (vocabulary, Screen 1 layout, or CTA), run 2 replacement sessions. + +--- + +## MODULE 3: Design from Evidence (~1 week) + +### 3.1 · One-Page Product Brief (Vibe PRD) + +- **⏳ Wait:** None. One focused sitting (after a night's sleep between drafts). +- **💰 Cost:** $0 +- **📦 Input:** + | Input | How Sam obtains it | Upstream source | + |---|---|---| + | Validated Problem Statement | Open `Validated Problem Statement` Google Doc in `Founder OS` folder | **[2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/)** | + | Verbatim prototype vocabulary | Notes from 2.6 closing question — the words interviewees used to describe the product | **[2.6](/course/tech-for-non-technical-founders-2026/clickable-prototype-validation-2-hour-lovable/)** | +- **📝 Vibe PRD Template — 5 sections:** + | Section | How Sam fills it | Source | + |---|---|---| + | **1. The problem** | Copied **word-for-word** from 2.5 validated problem statement. Do not paraphrase. | **[2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) (verbatim copy)** | + | **2. User & context** | Who the user is *while* using the product — 60 seconds before and after. Uses prototype vocabulary from 2.6. | **2.6 vocabulary + 1.1 customer blank** | + | **3. What you're building** | One verb-led paragraph. Input → output. Uses 2.6 prototype observations — what the 5 interviewees actually tried to do. | **[2.6](/course/tech-for-non-technical-founders-2026/clickable-prototype-validation-2-hour-lovable/) observations** | + | **4. Success metric** | One number, one unit, one timeframe. Measurable inside the app. | Sam defines from 2.5 problem cost | + | **5. What you're NOT building** | 5-8 no-go bullets. Start with: what a competent AI agent or junior would add unprompted. Add anything from the 1.1 `[APPROACH]` blank that didn't survive Module 2. | Sam's judgment + AI leakage check | +- **📝 Constraint:** ≤250 words, one side of paper. +- **📦 Output:** One-page Product Brief saved as `Product Brief - [date]` in `Founder OS` folder. Feeds: 3.2 (quality check), 4.3 (pre-flight rule 1), 4.4 (build prompt). +- **🆘 Plan B — can't fit Section 3 in one paragraph:** Scope too big → pick single smallest workflow, cut everything else to Section 5. + +### 3.2 · Quality-Check: Features to Outcomes + +- **⏳ Wait:** None. 20-minute rewrite + peer/AI review. +- **💰 Cost:** $0 (Claude/ChatGPT for AI reviewer if no peer available) +- **📦 Input:** One-page Product Brief from 3.1. **How Sam obtains it:** `Product Brief` Google Doc in `Founder OS` folder. +- **📝 Action:** Rewrite every feature noun in Section 3 as *When / I want / So I can* job stories. Then hand to peer (or paste Section 3 into Claude) with: "Name 3 things you'd build that are NOT in Section 3 and NOT in the no-go list." +- **📝 Gate:** Reviewer names nothing outside no-go list. FAILS if 2+ items are outside. +- **📦 Output:** Outcome-shaped Section 3 + quality-check verdict. Feeds: 4.1 (build-path decision), 4.3 (pre-flight rule 1 — "brief passed 3.2 quality-gate"). +- **🆘 Plan B — reviewer names 2+ things outside no-go list:** Section 3 is still vague → tighten *When/I want/So I can* shape on loosest line, ask fresh reviewer. + +--- + +## MODULE 4: Build It Yourself (2-4 weeks) + +### 4.1 · Should You Hire? The 2026 Decision Tree + +- **⏳ Wait:** None. 20-minute solo + 20-minute peer sanity check. +- **💰 Cost:** $0 +- **📦 Input:** Quality-checked one-page brief from 3.2. **How Sam obtains it:** `Product Brief` Google Doc — the 3.2 quality-checked version. +- **📝 Build Path Decision Worksheet — 5 yes/no questions:** + | Question | How Sam answers | Source | + |---|---|---| + | Can I describe the build in one sentence? | Yes if brief Section 3 fits one paragraph | **[3.2](/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/)** | + | Is my runway >4 months? | Sam's bank account / runway calculation | Sam knows this | + | ... (3 more questions from worksheet) | ... | **[4.1](/course/tech-for-non-technical-founders-2026/should-you-hire-2026-decision-tree/) lesson worksheet** | +- **📦 Output:** 4-way build-path decision (self-serve / validate / fractional CTO / hire). Feeds: 4.2 (ownership audit — all paths), 4.3 (self-serve path). +- **🆘 Plan B — routes to "hire" but runway <4 months:** Runway wins → default to self-serve, revisit when 4.5 ceiling signal fires. + +### 4.2 · Ownership Audit + +- **⏳ Wait:** Domain transfer: up to 14 days. GitHub org transfer: 7 days if contractor cooperates. AWS root recovery: 3-5 business days. +- **💰 Cost:** $0 (if accounts are in Sam's name). Domain: ~$10/year at [Porkbun](https://porkbun.com). +- **🔑 Setup:** Three accounts — all under Sam's Gmail (original input #2): + | Account | How Sam creates it | URL | + |---|---|---| + | GitHub | Visit [github.com](https://github.com), sign up with Gmail, create free account | github.com | + | AWS | Visit [aws.amazon.com](https://aws.amazon.com), sign up with Gmail, free tier | aws.amazon.com | + | Domain registrar (Porkbun) | Visit [porkbun.com](https://porkbun.com), sign up with Gmail, buy domain ~$10/yr | porkbun.com | + | Stripe | Already set up from 1.5. Sam uses the same account. | **[1.5](/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/) setup** | +- **📦 Input:** Build-path decision from 4.1. Applies to ALL paths. +- **📝 Ownership Checklist — 4 zones:** + | Zone | How Sam verifies it | + |---|---| + | Code | GitHub org Owner = Sam's account | + | Cloud | AWS root email = Sam's Gmail, MFA enabled | + | Secrets | Database passwords in Sam's possession | + | Domain | Registrar account shows Sam as the domain owner. If domain is in page builder's name (from 1.2 Mixo), transfer to Porkbun. | +- **📦 Output:** All infrastructure accounts confirmed in Sam's name. Feeds: 4.3 (pre-requisite), 4.4 (custom domain green light). +- **🆘 Plan B — contractor won't transfer GitHub org:** Retain lawyer, $2K-$5K. + +### 4.3 · Self-Serve Stack: Tools & Setup + +- **⏳ Wait:** None. Lovable + Supabase signups instant. GitHub sync immediate. +- **💰 Cost:** $0 (all three tools free tiers) +- **🔑 Setup:** + | Account | How Sam creates it | URL | + |---|---|---| + | Lovable | Already signed up from 2.6 prototype. If skipped 2.6: visit [lovable.dev](https://lovable.dev), sign up with Gmail. | lovable.dev | + | Supabase | Visit [supabase.com](https://supabase.com), sign up with Gmail, free tier | supabase.com | + | Stripe | Already set up from 1.5. Same account, same Payment Link experience. | **[1.5](/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/) setup** | + | GitHub sync | In Lovable Settings → turn on GitHub sync (pre-flight rule 3). Uses GitHub account from 4.2. | **[4.2](/course/tech-for-non-technical-founders-2026/github-aws-database-ownership-checklist/) GitHub account** | +- **📦 Input:** + | Input | How Sam obtains it | Upstream source | + |---|---|---| + | "Self-serve" build decision | From 4.1 worksheet | **[4.1](/course/tech-for-non-technical-founders-2026/should-you-hire-2026-decision-tree/)** | + | Quality-checked one-page brief | `Product Brief` Google Doc — the 3.2 quality-checked version | **[3.2](/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/)** | + | Passed ownership audit | 4.2 checklist completed | **[4.2](/course/tech-for-non-technical-founders-2026/github-aws-database-ownership-checklist/)** | +- **📝 3 pre-flight rules:** + | Rule | How Sam verifies it | Source | + |---|---|---| + | 1. Brief passed 3.2 quality-gate | Section 3 reads as outcomes, not features | **[3.2](/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/) output** | + | 2. One workflow, one persona, one happy path | Write one sentence naming all three — if it takes two sentences, scope is too big | **[3.2](/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/) Section 3** | + | 3. GitHub sync ON | Checked in Lovable Settings | **[4.2](/course/tech-for-non-technical-founders-2026/github-aws-database-ownership-checklist/) GitHub account** | +- **📝 AI leakage check:** Paste Section 3 into Claude with: "Name 3 things Lovable would build that are NOT in this list." Save flagged features as scope-leak watchlist. +- **📦 Output:** 3 pre-flight rules locked + scope-leak watchlist + tool boundaries clear. Feeds: 4.4 (build phases). +- **🆘 Plan B — 12-rules list overwhelming:** Only rules 1, 2, and 6 (the 3 pre-flight rules) must be true before starting. Other 9 fire inline during 4.4. + +### 4.4 · Self-Serve Stack: Build Phases + +- **⏳ Wait:** Build time: 2-4 weeks across 4 phases. +- **💰 Cost:** Lovable + Supabase entry paid tiers + domain ($10/yr) + Stripe per-transaction fees. +- **📦 Input:** + | Input | How Sam obtains it | Upstream source | + |---|---|---| + | 3 pre-flight rules locked | Verified in 4.3 setup | **[4.3](/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-lovable-supabase-stripe-2026/)** | + | One-page brief from Module 3 | `Product Brief` Google Doc | **[3.2](/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/)** | + | Scope-leak watchlist | 3 flagged features from Claude leakage check | **[4.3](/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-lovable-supabase-stripe-2026/)** | + | Supabase project | Created in 4.3 | **[4.3](/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-lovable-supabase-stripe-2026/)** | + | Lovable project with GitHub sync | Created in 4.3 | **[4.3](/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-lovable-supabase-stripe-2026/)** | + | Stripe account (live mode) | Already set up from 1.5, now switched to live mode | **[1.5](/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/) → [4.4](/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-build-phases/)** | + | Domain | Purchased in 4.2, now pointed to staging URL | **[4.2](/course/tech-for-non-technical-founders-2026/github-aws-database-ownership-checklist/)** | +- **📝 4 build phases:** Phase 1 UI → Phase 2 Supabase+auth → Phase 3 Stripe+checkout → Phase 4 staging URL+5 ICP users. +- **📝 5 green lights gate:** + | Green light | How Sam verifies it | Source of requirement | + |---|---|---| + | 1. Stripe in live mode, real card cleared | Test charge with own card, refund immediately | **[1.5](/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/) Stripe setup** | + | 2. Custom domain wired | Domain from 4.2 points to staging URL | **[4.2](/course/tech-for-non-technical-founders-2026/github-aws-database-ownership-checklist/) domain** | + | 3. ≥1 fresh ICP user tested paywall | Send staging URL to 1 person from 2.3 list or 5.1 survey pool | **[2.3](/course/tech-for-non-technical-founders-2026/find-10-people-where-to-look/) list** | + | 4. Zero red Console errors on signup+checkout | Open browser DevTools Console, run signup-to-checkout flow | Browser DevTools | + | 5. Weekly demo recording exists | Loom recording of the current state | Loom (free tier) | +- **📦 Output:** Live MVP at real URL. Feeds: 5.1 (users for Sean Ellis test), 5.6 (pilot demo). +- **🆘 Plan B — demo person needs a tour:** Rewrite Lovable prompt around the one job the screen does. If 2 testers stall on first screen, revisit 3.2 outcomes. + +### 4.5 · Ceiling Signals (OPTIONAL monthly check) + +- **⏳ Wait:** Monthly calendar block. Start after launch. +- **💰 Cost:** $0 +- **📦 Input:** None required — fires when a signal triggers. +- **📝 5 signals:** Feature Lovable can't build, query can't tune, auth flow limit, cross-tenant data leak risk, 5,000+ users. +- **🆘 Plan B — hit signal mid-build:** Bookmark this lesson. Signals are for the operating phase. + +--- + +## MODULE 5: First Paying Customer (2-4 weeks) + +### 5.1 · Sean Ellis 40% Test + +- **⏳ Wait:** None. 5 questions, Typeform/Google Form takes 2 minutes. Results within 24 hours. +- **💰 Cost:** $0 (Typeform/Google Form free tier) +- **🔑 Setup:** Google Forms at [forms.google.com](https://forms.google.com) (Sam already has Gmail) OR Typeform free tier. +- **📦 Input:** ≥10-30 users on MVP. **How Sam obtains them:** + | Source of users | How to reach them | + |---|---| + | 4.4 onramp waitlist | Emails collected from the 1.2/1.4 landing page waitlist — export from your page builder (Mixo Subscribers, Carrd form responses, etc.) | + | 2.3-2.4 interviewees | The 10 people Sam interviewed — message them with the survey link | + | Friends/network who tested 4.4 staging URL | The people Sam did demos for in 4.4 Phase 4 | +- **📝 5-question survey:** + | Question | How Sam fills it | Source | + |---|---|---| + | Q1: "How would you feel if you could no longer use this product?" | Copy verbatim from 5.1 lesson (Very disappointed / Somewhat disappointed / Not disappointed) | **[5.1](/course/tech-for-non-technical-founders-2026/must-have-segment-pmf-test/) lesson** | + | Q2: "Why?" (open) | Free text from respondent | n/a | + | Q3: "What would you use instead?" | Free text from respondent | n/a | + | Q4: "What's the primary benefit?" | Free text from respondent | n/a | + | Q5: Segment question (role / use case) | Sam defines based on 2.5 personas | **[2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) persona** | +- **📝 Gate:** 40%+ "very disappointed" in at least one segment. +- **📦 Output:** Must-have segment identified + per-segment %. Feeds: 5.3 (list seeding), 5.4 (message language — use Q3 verbatims). +- **🆘 Plan B — no segment ≥40%:** If any segment is 25-39% = product needs refinement (back to 4.4, ship against most common Q3 answer from that segment). If all segments below 25% = significant product problem (back to 4.4, focus on the segment with highest Q3 frustration signal). Gate threshold is 40%+ in at least one segment. + +### 5.2 · Channel Selection (OPTIONAL) + +- **⏳ Wait:** None. 30-minute solo. +- **💰 Cost:** $0 +- **📦 Input:** Q2-Q3 verbatim answers from 5.1 survey. **How Sam obtains them:** read the survey responses in Google Forms. +- **🆘 Plan B — skip entirely:** If channel is obvious (personal network), skip to 5.3. + +### 5.3 · Build Your 50-Name Network List + +- **⏳ Wait:** None. 30-60 minutes. +- **💰 Cost:** $0 +- **🔑 Setup:** Google Sheet in existing `Founder OS` folder. Sam already has Gmail → Google Sheets. +- **📦 Input:** Must-have segment from 5.1. **How Sam obtains it:** 5.1 survey results — the segment with highest "very disappointed" %. +- **📝 6-column spreadsheet — How Sam seeds it:** + | Seed source | How to retrieve it | Upstream | + |---|---|---| + | 2.4 interviewees | Names from 2.4 outreach tracking sheet | **[2.4](/course/tech-for-non-technical-founders-2026/find-10-people-with-problem-outreach-2026/)** | + | 1.4 waitlist signups | Export from your landing page builder (Mixo Subscribers, Carrd form responses, etc.) | **[1.2](/course/tech-for-non-technical-founders-2026/smoke-test-build-page/)/[1.4](/course/tech-for-non-technical-founders-2026/smoke-test-landing-page-7-day-demand-test/)** | + | 2.3 30-name list | Open the spreadsheet from 2.3 — many are still warm | **[2.3](/course/tech-for-non-technical-founders-2026/find-10-people-where-to-look/)** | + | Personal network | People Sam knows who match the must-have segment | Sam's own contacts | + | Cold names from Apollo/LinkedIn | If warm list <50, run 2.3 ICP map prompt again, this time for outbound targets | **[2.3](/course/tech-for-non-technical-founders-2026/find-10-people-where-to-look/) method** | +- **📦 Output:** 50 names sorted into 4 buckets (Champions/Hot/Warm/Cold). Feeds: 5.4 (message writing), 5.5 (send sequence). +- **🆘 Plan B — only 5 names:** Five is enough to start. Message all five before cold outbound. + +### 5.4 · Write the Outreach Message + +- **⏳ Wait:** None. 90 seconds to record Loom. +- **💰 Cost:** $0 (Loom free tier) +- **🔑 Setup:** Loom account at [loom.com](https://www.loom.com). Sign up with Gmail. Free tier. +- **📦 Input:** + | Input | How Sam obtains it | Upstream source | + |---|---|---| + | 50-name list with 4 buckets | Google Sheet from 5.3 | **[5.3](/course/tech-for-non-technical-founders-2026/first-ten-customers-network-list/)** | + | Must-have segment name | From 5.1 survey results | **[5.1](/course/tech-for-non-technical-founders-2026/must-have-segment-pmf-test/)** | +- **📝 4-part message structure:** + | Part | How Sam fills it | Source | + |---|---|---| + | 1. Bucket-specific opener | Champions: "Since we last spoke..." / Hot: "You signed up for the waitlist..." / Warm: "I noticed you're in [industry]..." / Cold: "I saw your post about [topic]..." | **[5.3](/course/tech-for-non-technical-founders-2026/first-ten-customers-network-list/) bucket labels** | + | 2. One line on the problem in their language | Paste exact Q3 verbatim answers from 5.1 survey | **[5.1](/course/tech-for-non-technical-founders-2026/must-have-segment-pmf-test/) Q3** | + | 3. 90-second Loom | Record: 60s product walkthrough (show the MVP from 4.4), 30s personal intro | **[4.4](/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-build-phases/) MVP** | + | 4. Specific ask + Calendly link | "Would you be open to a 15-minute call?" + Calendly link + "paid pilot" teaser | Calendly from 2.4 | +- **📦 Output:** 4 message variants + 90-second Loom. Feeds: 5.5 (send). +- **🆘 Plan B — message reads generic:** Using marketing voice not verbatim quotes → paste exact 5.1 Q3 answers into Part 2. + +### 5.5 · Send, Track, and Read the Replies + +- **⏳ Wait:** Reply tail 1-2 weeks +- **💰 Cost:** $0 +- **📦 Input:** 4 message templates + Loom from 5.4. +- **📝 Send sequence:** Champions Monday → Hot Tuesday → Warm Wednesday → Cold Thursday. Track in the same Google Sheet: Reply, Demo booked, DPA sent, Deposit cleared. +- **📦 Output:** Demos booked from warm list. Feeds: 5.6 (DPA send). +- **🆘 Plan B — reply rate under 5%:** Re-record Loom using 5.1 Q2-Q3 verbatims. Re-send to non-responders. + +### 5.6 · Charge Before You Ship: The Paid Pilot + +- **⏳ Wait:** DPA legal review: 2-3 business days if customer's legal reviews it. Most one-page DPAs clear without legal. +- **💰 Cost:** $0 (DPA template free). Stripe per-transaction fees on deposit. +- **🔑 Setup:** + | Tool | How Sam sets it up | Source | + |---|---|---| + | Stripe | Already set up from 1.5. Creates a Payment Link in Dashboard for the deposit. | **[1.5](/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/) Stripe account** | + | DocuSign/HelloSign OR PDF+email | Sam picks one. PDF+email is free (Google Doc → Download as PDF → attach to email). | New or from operating kit | + | Google Doc | Copy the DPA template below into a blank Google Doc in `Founder OS` | Google Drive (original input) | +- **📦 Input:** 3-5 warm leads with demos booked from 5.5. **How Sam obtains them:** the Google Sheet tracking column "Demo booked" from 5.5. +- **📝 DPA Template — 6 sections + signature block. For every `[BRACKET]`:** + | Blank | How Sam fills it | Source | + |---|---|---| + | `[Your Company Name]` | Sam's company name. If no company yet: Sam's full name. | Sam knows this | + | `[Customer Company Name]` | The company name of the warm lead from 5.5 tracking sheet | **[5.5](/course/tech-for-non-technical-founders-2026/first-ten-customers-send-track/) lead info** | + | `[YYYY-MM-DD]` | Today's date | Calendar | + | `[Outcome 1]`, `[Outcome 2]`, `[Outcome 3]` | 3 measurable outcomes. Derived from the validated problem (2.5) + what the customer named in their demo call. "Reduce weekly report prep from 3 hours to 30 minutes." | **2.5 problem + 5.5 demo conversation** | + | `[Use case 1]`, `[Use case 2]` | 2 specific ways the customer will use the product. Named during the 5.5 demo. | **[5.5](/course/tech-for-non-technical-founders-2026/first-ten-customers-send-track/) demo conversation** | + | `[time]` `[timezone]` | Friday demo time agreed during 5.5 | **[5.5](/course/tech-for-non-technical-founders-2026/first-ten-customers-send-track/) scheduling** | + | `$[deposit]` | **How Sam calculates it:** 1.5 price hypothesis × 12 = year-one ACV. Deposit = 10-30% of ACV. **$500 floor.** When 10% of ACV < $300: charge first month upfront instead. Example: $97/month → $1,164 ACV → 10% = $116 (below floor) → charge $97 (first month) or raise to $500. | **1.5 price × 12** | + | `[Measurable criterion 1/2/3]` | Same as outcomes above but with a verifiable metric. "Report prep time reduced to ≤30 min/week, verified in Friday demo." | **[2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) problem cost** | + | `$[amount] / [month or year]` | Year-one contract price. Based on the 1.5 price hypothesis, refined by what Sam learned in Module 2 interviews and pilot conversations. | **1.5 price → refined by M2-M5** | + | `[monthly / annual]` | Pick one. Annual gives Sam committed revenue; monthly is easier to sell. | Sam's judgment | + | `[Your Name]` | Sam's name | Sam knows this | + | `[Champion Name]` | The person Sam demoed to in 5.5 — their name from the tracking sheet | **[5.5](/course/tech-for-non-technical-founders-2026/first-ten-customers-send-track/) lead info** | +- **📝 Friday Demo follow-up email (after each pilot demo):** + | Blank | How Sam fills it | Source | + |---|---|---| + | `[DATE]` | Today's date — the date of the Friday demo. Forward the Loom to yourself with this date in the subject line. | Calendar | + | `[ONE_LINE_SUMMARY]` | One sentence on what shipped this week — the answer to Q1 from the [Friday Demo Template](/course/tech-for-non-technical-founders-2026/friday-demo-template/). | The demo conversation (team's Q1 answer) | +- **📝 Deposit math:** 1.5 price × 12 = year-one ACV. Deposit = 10-30% of ACV, standard **$500 floor**. Low-price exception: when 10% of ACV < $300, charge the first month's revenue upfront as the deposit instead. Example: $97/month → $1,164 ACV → 10% = $116 (below floor for percentage-based deposit) → charge $97 first month or raise to meet $500 floor. +- **📝 Gate:** Stripe deposit cleared. Standard: ≥$500. Low-price path: whatever was charged as the first-month deposit (≥ first month's value). That cleared deposit is the "first paying customer." +- **📦 Output:** Signed DPA + cleared deposit. This is the final course artifact — completes the `Founder OS` folder. +- **🆘 Plan B — "can we start free?":** Reframe deposit as year-one ACV prepaid, not added cost. +- **🆘 Plan B — "we do not do paid pilots":** Wrong buyer → move to next warm lead. + +### 5.7 · Cold Outbound (OPTIONAL) + +- **⏳ Wait:** 1-2 weeks reply tail +- **💰 Cost:** $0 (Apollo free tier or manual) +- **🔑 Setup:** Apollo free tier at [apollo.io](https://www.apollo.io) (contact enrichment) or manual LinkedIn search. +- **📦 Input:** Warm network exhausted (5.3-5.6 done). **How Sam knows:** the 5.3 50-name list — Champions/Hot/Warm buckets are all at "Replied" or "Deposit cleared" status. +- **📝 3 sector-specific scripts:** B2B SaaS / B2B services / B2C app. Sam picks one based on his product category. +- **🆘 Plan B — 0 replies from 30:** Tighten one of: 4-line script or ICP filter. Re-send 20. + +--- + +## Complete Dependency Chain: Where Every `[BRACKET]` Comes From + +``` +```text +ROUGH IDEA (original input #1) + GMAIL (original input #2) + BROWSER (original input #3) +│ +├─ [1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/): [CUSTOMER] [PROBLEM] [APPROACH] [COMPETITION] [DIFFERENTIATION] ← from Sam's head, refined by Perplexity in [1.2](/course/tech-for-non-technical-founders-2026/smoke-test-build-page/) +│ │ +│ ├─ [1.2](/course/tech-for-non-technical-founders-2026/smoke-test-build-page/): [CUSTOMER] [PROBLEM] [COMPETITION] [DIFFERENTIATION] ← COPY from [1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) blanks +│ │ [verbatim quote 1/2/3] ← Perplexity search using [1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) [CUSTOMER] + [PROBLEM] +│ │ Hero image ← AI generator or Unsplash (free stock photos) +│ │ +│ ├─ [1.3](/course/tech-for-non-technical-founders-2026/smoke-test-wire-tracking/): no blanks — pastes 2 tracking snippets into [1.2](/course/tech-for-non-technical-founders-2026/smoke-test-build-page/) page +│ │ +│ ├─ [1.4](/course/tech-for-non-technical-founders-2026/smoke-test-landing-page-7-day-demand-test/): campaign targeting ← [1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) [CUSTOMER] blank defines audience +│ │ ad account ← new signup, payment method from Sam's wallet +│ │ +│ └─ [1.5](/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/): price number ← web search for 2-3 existing tools in category +│ price framing ← pick ONE from [1.5](/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/) lesson template +│ Stripe account ← bank + tax ID (SSN for US) +│ +├─ [2.1](/course/tech-for-non-technical-founders-2026/mom-test-ask-about-past-not-future/): interview questions ← Mom Test table ([2.1](/course/tech-for-non-technical-founders-2026/mom-test-ask-about-past-not-future/) lesson) + [1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) [PROBLEM]/[COMPETITION] blanks +│ │ +│ ├─ [2.2](/course/tech-for-non-technical-founders-2026/ai-persona-pre-validation-mom-test-prep/) (opt): same question list ← [2.1](/course/tech-for-non-technical-founders-2026/mom-test-ask-about-past-not-future/) draft, tested against AI personas +│ │ +│ ├─ [2.3](/course/tech-for-non-technical-founders-2026/find-10-people-where-to-look/): ICP map prompt ← [1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) [CUSTOMER] + [PROBLEM] blanks + [1.2](/course/tech-for-non-technical-founders-2026/smoke-test-build-page/) Perplexity source URLs +│ │ +│ ├─ [2.4](/course/tech-for-non-technical-founders-2026/find-10-people-with-problem-outreach-2026/): outreach messages ← [1.2](/course/tech-for-non-technical-founders-2026/smoke-test-build-page/) verbatim quotes + [1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) [CUSTOMER]/[PROBLEM] blanks +│ │ +│ ├─ [2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/): Validated Problem Statement ← 10 interview transcripts (NOT [1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) hypothesis) +│ │ Gate: ≥7/10 = BUILD, 4-6 = PIVOT, <4 = KILL +│ │ +│ └─ [2.6](/course/tech-for-non-technical-founders-2026/clickable-prototype-validation-2-hour-lovable/): [PRODUCT CATEGORY] ← [2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) problem statement +│ [CUSTOMER] ← [2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) validated persona +│ [PRIMARY ACTION] ← [2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) problem statement +│ [FAKE DATA] ← invented, realistic to persona +│ [BUTTON LABEL] ← [2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) verbatim interviewee language +│ +├─ [3.1](/course/tech-for-non-technical-founders-2026/one-page-product-brief-vibe-prd/): Section 1 ← VERBATIM COPY of [2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) problem statement +│ Section 2 ← [2.6](/course/tech-for-non-technical-founders-2026/clickable-prototype-validation-2-hour-lovable/) prototype vocabulary + [1.1](/course/tech-for-non-technical-founders-2026/form-your-founding-hypothesis-90-minute-sprint/) customer blank +│ Section 3 ← [2.6](/course/tech-for-non-technical-founders-2026/clickable-prototype-validation-2-hour-lovable/) prototype observations +│ Section 4 ← Sam defines from [2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) problem cost +│ Section 5 ← Sam's judgment + AI leakage check +│ │ +│ └─ [3.2](/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/): Section 3 rewrite ← [3.1](/course/tech-for-non-technical-founders-2026/one-page-product-brief-vibe-prd/) Section 3 (feature→outcome job stories) +│ Gate: reviewer names 0 things outside no-go list +│ +├─ [4.1](/course/tech-for-non-technical-founders-2026/should-you-hire-2026-decision-tree/): build-path decision ← [3.2](/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/) quality-checked brief + Sam's runway +│ │ +│ ├─ [4.2](/course/tech-for-non-technical-founders-2026/github-aws-database-ownership-checklist/): GitHub ← new signup [github.com] with Gmail +│ │ AWS ← new signup [aws.amazon.com] with Gmail +│ │ Domain ← purchase at [porkbun.com] ~$10/yr +│ │ +│ ├─ [4.3](/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-lovable-supabase-stripe-2026/): Supabase ← new signup [supabase.com] with Gmail +│ │ Lovable ← signup [lovable.dev] (may exist from [2.6](/course/tech-for-non-technical-founders-2026/clickable-prototype-validation-2-hour-lovable/)) +│ │ 3 pre-flight rules ← [3.2](/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/) brief + scope sentence + GitHub sync +│ │ Scope-leak watchlist ← Claude leakage check on [3.2](/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/) Section 3 +│ │ +│ └─ [4.4](/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-build-phases/): 4 build phases ← [3.2](/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/) brief + [4.3](/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-lovable-supabase-stripe-2026/) stack + [4.2](/course/tech-for-non-technical-founders-2026/github-aws-database-ownership-checklist/) domain +│ Stripe live mode ← [1.5](/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/) account, now switched to live +│ 5 green lights ← each verifiable independently +│ +└─ [5.1](/course/tech-for-non-technical-founders-2026/must-have-segment-pmf-test/): 5 questions ← copy from [5.1](/course/tech-for-non-technical-founders-2026/must-have-segment-pmf-test/) lesson + [2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) persona for Q5 + │ Users ← [1.2](/course/tech-for-non-technical-founders-2026/smoke-test-build-page/)/[1.4](/course/tech-for-non-technical-founders-2026/smoke-test-landing-page-7-day-demand-test/) waitlist + [2.3](/course/tech-for-non-technical-founders-2026/find-10-people-where-to-look/)-[2.4](/course/tech-for-non-technical-founders-2026/find-10-people-with-problem-outreach-2026/) interviewees + [4.4](/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-build-phases/) testers + │ + ├─ [5.2](/course/tech-for-non-technical-founders-2026/channel-selection-before-outbound/) (opt): channel score ← [5.1](/course/tech-for-non-technical-founders-2026/must-have-segment-pmf-test/) Q2-Q3 verbatim answers + │ + ├─ [5.3](/course/tech-for-non-technical-founders-2026/first-ten-customers-network-list/): 50-name spreadsheet ← seed from [2.4](/course/tech-for-non-technical-founders-2026/find-10-people-with-problem-outreach-2026/) interviewees + [1.4](/course/tech-for-non-technical-founders-2026/smoke-test-landing-page-7-day-demand-test/) waitlist + [2.3](/course/tech-for-non-technical-founders-2026/find-10-people-where-to-look/) list + personal network + │ + ├─ [5.4](/course/tech-for-non-technical-founders-2026/first-ten-customers-outreach-message/): Part 2 (problem language) ← [5.1](/course/tech-for-non-technical-founders-2026/must-have-segment-pmf-test/) Q3 verbatim answers + │ Loom recording ← [4.4](/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-build-phases/) MVP walkthrough + │ + ├─ [5.5](/course/tech-for-non-technical-founders-2026/first-ten-customers-send-track/): send sequence ← [5.3](/course/tech-for-non-technical-founders-2026/first-ten-customers-network-list/) bucket labels determine order + │ + └─ [5.6](/course/tech-for-non-technical-founders-2026/paid-pilot-charge-before-ship/): [Your Company Name] ← Sam knows this + [Customer Company Name] ← [5.5](/course/tech-for-non-technical-founders-2026/first-ten-customers-send-track/) lead info + [Outcome 1/2/3] ← [2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) problem + [5.5](/course/tech-for-non-technical-founders-2026/first-ten-customers-send-track/) demo conversation + [Use case 1/2] ← [5.5](/course/tech-for-non-technical-founders-2026/first-ten-customers-send-track/) demo conversation + $[deposit] ← [1.5](/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/) price × 12 × 10-30%, $500 floor + [Measurable criterion 1/2/3] ← [2.5](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/) problem cost, verified in demo + $[amount]/[month or year] ← [1.5](/course/tech-for-non-technical-founders-2026/price-hypothesis-on-smoke-test-page/) price, refined by M2-M5 + [Your Name] ← Sam knows this + [Champion Name] ← [5.5](/course/tech-for-non-technical-founders-2026/first-ten-customers-send-track/) lead info +``` + +--- + +## Cross-Lesson Wait-Time Dependencies (Run in Parallel) + +These are the things Sam should start EARLY because they block multiple downstream steps: + +| What | When to start | Blocks | How to mitigate | +|---|---|---|---| +| **Stripe verification** | Weekend before 1.5 launch | 1.5 (price button), 5.6 (DPA deposit) | Run email-only smoke test while verifying | +| **Ad account approval** | 2-3 days before 1.4 launch | 1.4 (smoke test traffic) | Meta is slowest; Reddit clears same-day | +| **Interview booking** | Start in 2.3, runs through 2.4 | 2.5 (needs 10 transcripts) | The long pole; plan 2-4 calendar weeks. Book 12-15, expect ~30% no-show | +| **GitHub account** | Before 4.2 | 4.3 (sync), 4.4 (backup) | Create free account in 2 minutes at github.com | +| **GitHub org transfer** | Day of 4.2 audit | 4.3, 4.4 (no repo = no build) | 7 days if contractor cooperates. If not: retain lawyer | +| **AWS root recovery** | Day of 4.2 audit | 4.3, 4.4 (can't deploy) | 3-5 business days via AWS account recovery | +| **Domain registrar transfer** | Day of 4.2 audit | 4.4 (custom domain green light) | Up to 14 days. Start transfer in parallel with 4.3 build | +| **Domain purchase** | During 4.4 Phase 4 | 4.4 (custom domain green light) | $10/yr at porkbun.com | + +--- + +## Total Spend: Sam's Budget Trajectory + +| Module | Minimum | Typical | Maximum (LinkedIn B2B) | +|---|---|---|---| +| **M1** | $0 (organic) | $250-$700 (Meta) | $1,650-$6,600 (LinkedIn) | +| **M2** | $0 | $0 | $500 (research panel fallback) | +| **M3** | $0 | $0 | $0 | +| **M4** | $0 (free tiers) | ~$30/month (entry paid tiers + domain) | ~$80/month | +| **M5** | $0 | $0 | $100/month (Sales Navigator) | +| **Total** | $0 | ~$280-$780 | ~$2,230-$7,280 | + +At every step, a $0 path exists. The course teaches both and lets Sam choose. + +--- + +## Agent Validation Checklist + +Use these verifiable assertions when auditing the course for dependency completeness: + +1. ✅ Every `[BRACKET]` placeholder in every lesson has a documented upstream source in this map +2. ✅ No lesson requires an account or tool that hasn't been set up in an earlier lesson (or is an original input) +3. ✅ Original inputs are exactly: rough idea + Gmail + browser +4. ✅ Every 🔑 setup lists the exact URL Sam visits and what credential he needs +5. ✅ The deposit math in 5.6 traces back to the 1.5 price hypothesis (× 12, × 10-30%, $500 floor) +6. ✅ The DPA success criteria in 5.6 trace back to the 2.5 validated problem statement +7. ✅ The 5.4 outreach message language traces back to 5.1 Q3 verbatim answers +8. ✅ No "just sign up for X" statement exists without a URL and a credential description diff --git a/docs/projects/2605-tech-for-non-technical-founders/PROJECT-INDEX.md b/docs/projects/2605-tech-for-non-technical-founders/PROJECT-INDEX.md index e880a1b2c..0907f1cae 100644 --- a/docs/projects/2605-tech-for-non-technical-founders/PROJECT-INDEX.md +++ b/docs/projects/2605-tech-for-non-technical-founders/PROJECT-INDEX.md @@ -132,6 +132,17 @@ Post-ship work is tracked in `TASK-TRACKER.md` (see "Course Migration Schedule" | `20-29-strategy/20.11-course-migration-roadmap.md` | **CANONICAL** — dependency-aware Now/Next/Later roadmap for v2 micro-lesson migration. Task-level dependency graph, parallelization map, risks. Generated from `.agent/tasks.json`. | | `20-29-strategy/_ARCHIVED_20.07-content-plan-tnt-founders-2026.md` | ~~The 26-post map, 11 artifacts...~~ **ARCHIVED** — shipped course uses 5-module spine. Historical reference only. | +### 🏗 Architecture & Design (30-39) + +| File | Purpose | +|---|---| +| `30-39-architecture-design/30.02-adr-content-execution-readiness.md` | **CANONICAL** — content policy (no speculative time/money), binary anchor thresholds per chapter, Module 2 two-pass framing rationale, 4-persona critic gate, Tier 1/2/3 punch list shape | +| `30-39-architecture-design/30.03-course-format-requirements-for-creators.md` | **CANONICAL v2 spec** — micro-learning course format requirements, 8-part lesson template, core/optional tagging, gap analysis, migration guide | +| `30-39-architecture-design/30.05-icp-journey-sipoc.md` | **CANONICAL journey map** — agent-parseable Mermaid flowchart of Sam's full path: every lesson, gate threshold, branch path, tool, time estimate, and artifact handoff. Agents validate against this; humans scan it to understand the course flow. | +| `30-39-architecture-design/30.06-operational-dependency-map.md` | **CANONICAL dependency map** — per-lesson operational prerequisites: accounts needed, registrations, wait times, templates to fill, output artifacts, and Plan B recovery paths. Cross-lesson wait-time parallelism table and total budget trajectory. Agents validate tool ordering and prerequisite coverage. | +| `30-39-architecture-design/30.01-adr-course-url-migration.md` | [if exists] URL migration decision record | +| `30-39-architecture-design/30.04-m1-assessment-rubric.md` | [if exists] M1 assessment rubric | + ### 🛠️ Execution (50-59) | Sub-dir | Purpose | Status | diff --git a/package.json b/package.json index d46b9500a..994adc071 100644 --- a/package.json +++ b/package.json @@ -47,5 +47,43 @@ "repository": { "type": "git", "url": "https://github.com/jetthoughts/jetthoughts.github.io" + }, + "mcpServers": { + "description": "MCP servers available to agents on this project. No API keys, tokens, or secrets — values here are server names and tool names only.", + "chrome-devtools": { + "purpose": "Browser automation — screenshot capture, UI testing, visual regression", + "tools": ["new_page", "emulate", "take_screenshot"], + "ref": ".stitch/design.md" + }, + "context7": { + "purpose": "Framework documentation — official API references, feature specs, integration patterns", + "tools": ["resolve-library-id", "get-library-docs"], + "ref": "docs/mcp-tool-mastery-guide.md" + }, + "github": { + "purpose": "Repository coordination — PR management, issue tracking, repo analysis", + "tools": ["create_pull_request", "create_issue", "search_repositories"], + "ref": ".claude/commands/github/" + }, + "brave-search": { + "purpose": "Web search — technology best practices, emerging patterns", + "tools": ["search"], + "ref": "docs/mcp-tool-mastery-guide.md" + }, + "searxng": { + "purpose": "Web research — self-hosted metasearch, current best practices, community solutions", + "tools": ["search"], + "ref": "docs/mcp-tool-mastery-guide.md" + }, + "package-search": { + "purpose": "Package and dependency research — find and analyze npm/Ruby/Go packages before install", + "tools": ["package_search_hybrid", "package_search_grep"], + "ref": "docs/mcp-tool-mastery-guide.md" + }, + "semble": { + "purpose": "Semantic code search — natural-language queries with nearest-neighbor expansion", + "tools": ["search", "find_related"], + "ref": ".claude/agents/semble-search.md" + } } } diff --git a/skills-lock.json b/skills-lock.json new file mode 100644 index 000000000..b1f761b45 --- /dev/null +++ b/skills-lock.json @@ -0,0 +1,59 @@ +{ + "version": 1, + "skills": { + "37signals-rails": { + "source": "pproenca/dot-skills", + "sourceType": "github", + "skillPath": "skills/.experimental/37signals-rails/SKILL.md", + "computedHash": "940eafb68b5d64774e476d423651240da5a52642c72062bb01e230c8eabf7725" + }, + "blog": { + "source": "agricidaniel/claude-blog", + "sourceType": "github", + "skillPath": "skills/blog/SKILL.md", + "computedHash": "ba20db5779472b6015175f1fdeb3fccc41d0e722c4f0e6ec92b9e8d6719875ba" + }, + "copywriting": { + "source": "kostja94/marketing-skills", + "sourceType": "github", + "skillPath": "skills/content/copywriting/SKILL.md", + "computedHash": "79162e47f9a2eabcff5b69a5347909463cdded2608be7d2886392f9f28a7cd17" + }, + "git-commit": { + "source": "fvadicamo/dev-agent-skills", + "sourceType": "github", + "skillPath": "plugins/github-workflow/skills/git-commit/SKILL.md", + "computedHash": "c48c374ac84fff82f7ce5bfc670e3b065157fc8cb9582493a0429b5845423035" + }, + "hugo": { + "source": "jackspace/claudeskillz", + "sourceType": "github", + "skillPath": "skills/hugo/SKILL.md", + "computedHash": "caecc01bdd7f528de044b680da40c347451980a3cfdde927b81a01f98fd96791" + }, + "okf": { + "source": "scaccogatto/okf-skills", + "sourceType": "github", + "skillPath": "skills/okf/SKILL.md", + "computedHash": "32fd95e03e73ed45bf996976a00cbd195353af3ef1b5d849c6d57075e7f47489" + }, + "social-media-trends-research": { + "source": "drshailesh88/integrated_content_os", + "sourceType": "github", + "skillPath": "skills/cardiology/social-media-trends-research/SKILL.md", + "computedHash": "281ccb70325481022b45e880da19d353a37e31926dfdcc5942be5a92186ad379" + }, + "validate": { + "source": "scaccogatto/okf-skills", + "sourceType": "github", + "skillPath": "skills/validate/SKILL.md", + "computedHash": "fb6a412d9d80f5da4fff3e3557e1bc0007c4c6bada51d3f75acacccfc459d9a1" + }, + "visualize": { + "source": "scaccogatto/okf-skills", + "sourceType": "github", + "skillPath": "skills/visualize/SKILL.md", + "computedHash": "e44b9ea5c7f555ccd3a1b5d30d76e0165de50b55dc756d7a159ca39ee1feed26" + } + } +}