feat(course): Module 3 v2 (Design from Evidence) + whole-course validity review fixes#352
Conversation
…label and Maven price sweep 3.1: v2 lesson header (Module 3 · Lesson 3.1 · CORE) + Progress chain, hook tightened to 3 sentences, Done/You-have-now/Next/If-blocked footer (hardcoded 'Artifact #4 of 6' index retired), Ch 2.5 synthesis attribution fixed (2 body leftovers), Maven cohort de-hardcoded (price + review score -> capability language). Sweep: same defect classes fixed in 5.1, 4.1, 4.3a, build-path-decision-worksheet, vibe-prd-template (incl. doubled-word typo). 6 ratchet signatures added in this commit; 8/8 validators green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
v2 header (Module 3 · Lesson 3.2 · CORE) + Progress chain; hook now
answers the recorded Sam objection ('why rewrite Section 3?') up front
(40.06); manual no-AI fallback added under the AI critic block; Done
footer states the explicit module gate (outcome-shaped Section 3 +
clean quality-check pass); Jump-to/Skip-to duplicate callouts merged.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
New module-3-walkthrough-mia page (brief drafted from M2 transcripts, price-on-profile finding promoted to requirement, failed-then-passed AI quality check). In-lesson Tomas & Mia case blocks removed from 3.1/3.2 per 30.03 §2.7; See-it-in-action links added same commit; case-study ratchet scope expanded to M3 bundles. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
M2-companion blockquote header (Input from 2.5 synthesis + 2.6 vocabulary, Output = filled brief), existing cover.png wired into frontmatter/og tags, 45-min vs 90-min time-budget contradiction resolved to one 90-minute sitting. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
…0-min template subtitle vibe-prd-template-visual.svg said 'copy from Chapter 2.1' and 'Fill in 45 minutes' (contradicting the 90-minute canon); pivot-ledger.svg credited the validated problem to Chapter 2.1. Caught by chrome-devtools visual QA - the banned-string validator does not scan SVGs. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
'the spaceship above' pointed the wrong way (SVG renders below the paragraph); caught in chrome-devtools visual QA. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
…ding Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
…pec/ICP/voice) Spec: stale 'manage-your-team' Chapter 5.2-5.5 banners on 4 Going Further pages relabeled (collided with live 5.x spine); operating-kit DPA mislabel 5.3→5.4; friday-demo-template repointed by name. ICP: 3 'Sam' persona leaks → second person; quickstart notes optional 2.2 on the fast path. Voice/claims: volatile price+plan-limit hardcodes de-hardcoded across 4.1/4.3a/4.3b/4.4/5.2/5.3b/5.5 (Lovable/Supabase/Apollo/Smartlead/ Loom/SalesNav/Porkbun/Resend/Sentry/Hunter/WorthBuild); OpenHunts stats repointed to primary source (openhunts.com, verified); unsourced 60%/ 30-40%/80% precision stats softened; 35→30 outreach-list canon (prose + airbnb-test.svg + worksheet); 'directional KILL' vocabulary retired; two fake-specific 47s varied; 4.2 glued blockquote fixed. Curriculum: 10.02 marked SUPERSEDED; 10.08 gap table statuses updated (5 of 6 shipped); YC Startup School alternative named on landing. 32 ratchet signatures added; ratchet immediately caught 2 more live instances outside review scope (worksheet + 4.1). 8/8 validators green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
|
Warning Review limit reached
Next review available in: 54 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (5)
📝 WalkthroughWalkthroughThe PR revises the 2026 course’s Module 3 lessons and templates, aligns chapter navigation and references, generalizes volatile pricing and usage claims, expands banned-string checks, fixes markdown formatting, and records curriculum review and sprint status. ChangesModule 3 lesson and artifact refresh
Curriculum references and navigation alignment
Outbound guidance and volatile claim updates
Content quality and rendering controls
Curriculum review records
Estimated code review effort: 3 (Moderate) | ~25 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…, cohort-structure leftover Scroll-through review at 1280x800 caught: 2-forks mermaid text clipped in every node (labels shortened, now renders clean); vibe-prd SVG subtitle + 3 example lines overflowed the notebook-card border (user-reported); Maven table still said 'spends 2 of 4 weeks'. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
Old cover carried the stale 'Curriculum 06/30' counter badge purged from spine covers in May; since the file is now wired as og:image, regenerated from the family template: 5-section panel, 90-minute chip, Lovable/Cursor hand-to, Curriculum 2026 badge. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
Boundary: walkthrough quality-check story made coherent (messaging was already no-go; calendar sync now resolves; feature-noun pair maps to her actual Section 3); credentials restored to profile canon; HTCW M3 time reads as calendar-vs-work; 4.1's '2.4 prototype' cite -> 2.6. Quality: 3.2 rubric self-contradiction removed (fail = cut item OR 2+ outside no-go); 5-10 -> 5-8 no-go canon; 90-minute write budget aligned in 3.1; sentence-level rewrite framing; SVG alt count claim dropped; why-now added to Section 1 description. ICP: magic-link/OAuth/CSV/Lovable/Cursor/MRR/SOW glossed at first mention; NPS dropped; 3.2 callout stacks broken up (Skip-to-action + cheap-fix + Optional now prose); Input line de-nested. Voice: 'Most first-timers' cohort dodge fixed in all 4 Stuck boxes; Sarah 17-toggle anecdote single-sourced to 3.1 (template cites it, collision de-duped, currency unified to $); 'nothing left to invent' tic varied; cross-page aphoristic closer reshaped; second 17 removed. 6 ratchet signatures added; 47-button entry documents 3.2 ownership. 8/8 validators green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
… check New canonical doc docs/workflows/visual-scroll-gate.md (protocol, per- view defect checklist, numeric probes, reporting format), wired into CLAUDE.md (visual verification section + workflow pointers), 30.03 §7 QA checklist, and 40.13 process rules. Grounded in the 2026-07-10 M3 pass: five rendered-output defect classes text validators cannot see. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
There was a problem hiding this comment.
Actionable comments posted: 14
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
content/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/index.md (1)
135-141: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick winFix the AI critic prompt/rubric mismatch.
The prompt asks for five things “NOT in Section 5's no-go list.” Any legitimate Section 3 requirement also satisfies that condition, so the critic is guaranteed to produce five apparent failures. Ask for additions that are neither required by Section 3 nor explicitly excluded by Section 5.
-Imagine you are a contractor reading this brief to build the product. Based ONLY on Section 3, name 5 things you would build that are NOT in Section 5's no-go list. Be specific - feature names, not categories. +Imagine you are a contractor reading this brief to build the product. Based ONLY on Sections 3 and 5, name up to 5 concrete features or assumptions you would add that are neither explicitly required by Section 3 nor explicitly excluded by Section 5. Be specific - feature names, not categories.Update the matching explanation in
module-3-walkthrough-mia/index.mdLine 35 so it uses the same definition.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@content/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/index.md` around lines 135 - 141, The AI critic prompt currently treats any item absent from Section 5 as a failure, including legitimate Section 3 requirements. Update the prompt and its surrounding explanation in `stop-specifying-features-start-outcomes/index.md` to request additions that are neither required by Section 3 nor explicitly excluded by Section 5, then update the matching explanation in `module-3-walkthrough-mia/index.md` to use the identical definition.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@content/course/tech-for-non-technical-founders-2026/build-path-decision-worksheet/index.md`:
- Line 192: Update the Path 1 failure-mode threshold in the worksheet’s
failure-mode section to match the 30-name outreach target, changing “0 of 35
click” to “0 of 30 click”; alternatively, consistently restore the target in the
Path 1 row to 35.
In
`@content/course/tech-for-non-technical-founders-2026/one-page-product-brief-vibe-prd/index.md`:
- Around line 83-85: Update the guidance around Section 3 and its companion
template, including the relevant example, to explicitly permit and require
stating authentication constraints when they affect the MVP. Remove the blanket
prohibition on authentication strategies while preserving the ban on unrelated
implementation details, and clarify that the brief should specify the chosen
authentication approach and any scope or storage constraints.
- Around line 38-40: Fix the blockquote in the introductory section by removing
the blank line between the “Progress” and “TL;DR” lines to satisfy MD028, and
change “one page Module 4 builds from” to “one-page Module 4 builds from.”
In
`@content/course/tech-for-non-technical-founders-2026/outbound-without-sales-team/index.md`:
- Line 140: Update the “Apollo free-tier reality” guidance to remove the fixed
“Sales Navigator trial (free for 1 month)” claim; replace it with wording such
as “if a trial is available” and, if appropriate, direct readers to current
vendor terms.
- Line 212: Revise the funnel paragraph to avoid presenting reply, demo, and
paid-pilot counts as expected outcomes. Label the figures as an illustrative
example with non-guaranteed conversion rates, or replace the fixed counts with
instructions to measure actual results at each stage.
- Around line 95-97: Remove all fixed pricing promises and plan/fee claims
surrounding the tools table, including the “under $100/month” pipeline language
and adjacent row wording. Keep pricing guidance non-specific and direct readers
to verify current provider pricing, including for LinkedIn Sales Navigator,
Apollo.io, and Loom.
In
`@content/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-build-phases/index.md`:
- Line 108: Replace the fixed “roughly $10/year” domain estimate in the
deployment instruction and the “First ship” cost-table row with “check registrar
pricing,” preserving the existing registrar link and surrounding guidance.
- Line 85: Revise the no-code path guidance to warn against applying
AI-generated Supabase RLS policies without review. In the instructions
surrounding the Claude/ChatGPT audit prompt, require manual inspection of the
proposed SQL and a two-user test verifying that each user can only read and
write their own rows before applying it in Supabase.
In
`@content/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-lovable-supabase-stripe-2026/index.md`:
- Line 109: Qualify the cost and effort claims in the paragraph around
Supabase’s generated API and auth: describe replacing Auth0/Clerk spend and RLS
replacing contractor work as illustrative, workload-dependent examples rather
than typical outcomes, especially for production authorization and audit
requirements.
- Line 99: The Lovable pricing paragraph makes an unsupported claim about what
most paying-MVP founders choose. Replace that sentence with neutral, usage-based
guidance directing readers to select a tier based on build velocity, usage, and
current pricing, while keeping the pricing link and avoiding population-level
adoption claims.
In
`@content/course/tech-for-non-technical-founders-2026/should-you-hire-2026-decision-tree/index.md`:
- Around line 65-73: Update all remaining references to 35 prospects on this
page to 30, including the “Two paying buyers” sentence and the decision matrix
near the cited section, so every outreach example and failure criterion
consistently uses 30 prospects.
- Line 154: The Q1 validation criterion is inconsistent with the rest of the
decision tree because it permits a 5%+ Stripe-click. Update the Q1 definition in
the “problem validated?” section to use 6%+ as the canonical Stripe-click
threshold, matching the flowchart and self-serve gate.
In
`@content/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/index.md`:
- Around line 39-40: Remove the blank lines inside the blockquotes in the
completion callouts, including the additionally referenced section, or prefix
those lines with ">"; ensure each blockquote remains contiguous and passes
MD028.
In `@docs/projects/2605-tech-for-non-technical-founders/TASK-TRACKER.md`:
- Around line 308-310: Synchronize the tracker’s active-sprint status: update
the parent status near the “M2 is the active sprint” statement to identify
Module 3 as the current sprint, or explicitly label that M2 statement as
historical, while preserving the Module 3 status in the referenced progress
entry as the authoritative current state.
---
Outside diff comments:
In
`@content/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/index.md`:
- Around line 135-141: The AI critic prompt currently treats any item absent
from Section 5 as a failure, including legitimate Section 3 requirements. Update
the prompt and its surrounding explanation in
`stop-specifying-features-start-outcomes/index.md` to request additions that are
neither required by Section 3 nor explicitly excluded by Section 5, then update
the matching explanation in `module-3-walkthrough-mia/index.md` to use the
identical definition.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: a9233077-9ae5-4086-904e-4c3164546afd
⛔ Files ignored due to path filters (4)
content/course/tech-for-non-technical-founders-2026/one-page-product-brief-vibe-prd/vibe-prd-template-visual.svgis excluded by!**/*.svgcontent/course/tech-for-non-technical-founders-2026/pivot-or-persevere-decision-framework/pivot-ledger.svgis excluded by!**/*.svgcontent/course/tech-for-non-technical-founders-2026/should-you-hire-2026-decision-tree/airbnb-test.svgis excluded by!**/*.svgcontent/course/tech-for-non-technical-founders-2026/vibe-prd-template/cover.pngis excluded by!**/*.png
📒 Files selected for processing (30)
content/course/tech-for-non-technical-founders-2026/_index.mdcontent/course/tech-for-non-technical-founders-2026/build-path-decision-worksheet/index.mdcontent/course/tech-for-non-technical-founders-2026/channel-selection-before-outbound/index.mdcontent/course/tech-for-non-technical-founders-2026/engineering-org-chart-non-technical-founder/index.mdcontent/course/tech-for-non-technical-founders-2026/find-10-people-where-to-look/index.mdcontent/course/tech-for-non-technical-founders-2026/first-paying-customer-operating-kit/index.mdcontent/course/tech-for-non-technical-founders-2026/first-ten-customers-outreach-message/index.mdcontent/course/tech-for-non-technical-founders-2026/friday-demo-rule-founder-progress/index.mdcontent/course/tech-for-non-technical-founders-2026/friday-demo-template/index.mdcontent/course/tech-for-non-technical-founders-2026/github-aws-database-ownership-checklist/index.mdcontent/course/tech-for-non-technical-founders-2026/how-this-course-works/index.mdcontent/course/tech-for-non-technical-founders-2026/module-3-walkthrough-mia/index.mdcontent/course/tech-for-non-technical-founders-2026/must-have-segment-pmf-test/index.mdcontent/course/tech-for-non-technical-founders-2026/one-page-product-brief-vibe-prd/index.mdcontent/course/tech-for-non-technical-founders-2026/outbound-without-sales-team/index.mdcontent/course/tech-for-non-technical-founders-2026/paid-pilot-charge-before-ship/index.mdcontent/course/tech-for-non-technical-founders-2026/quickstart/index.mdcontent/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-build-phases/index.mdcontent/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-lovable-supabase-stripe-2026/index.mdcontent/course/tech-for-non-technical-founders-2026/should-you-hire-2026-decision-tree/index.mdcontent/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/index.mdcontent/course/tech-for-non-technical-founders-2026/three-questions-turn-standup-into-proof/index.mdcontent/course/tech-for-non-technical-founders-2026/vibe-coding-ceiling-signals/index.mdcontent/course/tech-for-non-technical-founders-2026/vibe-prd-template/index.mdcontent/course/tech-for-non-technical-founders-2026/weekly-dev-report-template-founders/index.mddata/course_banned_strings.yamldocs/projects/2605-tech-for-non-technical-founders/10-19-research/10.02-curriculum-sequence-synthesis.mddocs/projects/2605-tech-for-non-technical-founders/10-19-research/10.08-validation-tools-analysis-2026.mddocs/projects/2605-tech-for-non-technical-founders/40-49-review/40.15-whole-course-review-2026-07-10.mddocs/projects/2605-tech-for-non-technical-founders/TASK-TRACKER.md
| | Path | Choose when | First action this week | Cost | | ||
| |---|---|---|---| | ||
| | **1. Validate without code** | Q1 = No, OR Q3 = less than 4 months | Ship Carrd page + Stripe checkout + Notion FAQ. Send to 35 ICP prospects. | $0 - $300 in tools + optional $100-200 in paid ads | | ||
| | **1. Validate without code** | Q1 = No, OR Q3 = less than 4 months | Ship Carrd page + Stripe checkout + Notion FAQ. Send to your 30-name outreach list. | $0 - $300 in tools + optional $100-200 in paid ads | |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Keep the outreach count consistent with the Path 1 failure mode.
Path 1 now requires a 30-name outreach list, but the failure-mode text at Line 198 still says “0 of 35 click.” Update the downstream threshold to 30 or restore the path target to 35.
Proposed fix
-- Path 1 -> 0 of 35 click. Pivot the pitch or the problem.
+- Path 1 -> 0 of 30 click. Pivot the pitch or the problem.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@content/course/tech-for-non-technical-founders-2026/build-path-decision-worksheet/index.md`
at line 192, Update the Path 1 failure-mode threshold in the worksheet’s
failure-mode section to match the 30-name outreach target, changing “0 of 35
click” to “0 of 30 click”; alternatively, consistently restore the target in the
Path 1 row to 35.
| > **Progress:** M3 · 1 of 2 · Results so far: a validated problem statement (2.5) + a prototype pass/fail with user vocabulary (2.6) - this page turns them into the one page Module 4 builds from | ||
|
|
||
| > **TL;DR:** One page, five sections. The problem (verbatim from interviews), the user's 60-second context, the one workflow, the one metric, and what you're NOT building. Hand it to Lovable or a contractor tomorrow morning. |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Fix the blockquote formatting and hyphenation.
The blank line at Line 39 triggers MD028, and “one page Module 4 builds from” should be “one-page Module 4 builds from.”
-> **Progress:** M3 · 1 of 2 · Results so far: a validated problem statement (2.5) + a prototype pass/fail with user vocabulary (2.6) - this page turns them into the one page Module 4 builds from
-
+> **Progress:** M3 · 1 of 2 · Results so far: a validated problem statement (2.5) + a prototype pass/fail with user vocabulary (2.6) - this page turns them into the one-page brief Module 4 builds from📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| > **Progress:** M3 · 1 of 2 · Results so far: a validated problem statement (2.5) + a prototype pass/fail with user vocabulary (2.6) - this page turns them into the one page Module 4 builds from | |
| > **TL;DR:** One page, five sections. The problem (verbatim from interviews), the user's 60-second context, the one workflow, the one metric, and what you're NOT building. Hand it to Lovable or a contractor tomorrow morning. | |
| > **Progress:** M3 · 1 of 2 · Results so far: a validated problem statement (2.5) + a prototype pass/fail with user vocabulary (2.6) - this page turns them into the one-page brief Module 4 builds from | |
| > **TL;DR:** One page, five sections. The problem (verbatim from interviews), the user's 60-second context, the one workflow, the one metric, and what you're NOT building. Hand it to Lovable or a contractor tomorrow morning. |
🧰 Tools
🪛 LanguageTool
[grammar] ~38-~38: Use a hyphen to join words.
Context: ...2.6) - this page turns them into the one page Module 4 builds from > TL;DR: ...
(QB_NEW_EN_HYPHEN)
🪛 markdownlint-cli2 (0.22.1)
[warning] 39-39: Blank line inside blockquote
(MD028, no-blanks-blockquote)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@content/course/tech-for-non-technical-founders-2026/one-page-product-brief-vibe-prd/index.md`
around lines 38 - 40, Fix the blockquote in the introductory section by removing
the blank line between the “Progress” and “TL;DR” lines to satisfy MD028, and
change “one page Module 4 builds from” to “one-page Module 4 builds from.”
Source: Linters/SAST tools
| What goes in it: one paragraph that names the smallest end-to-end thing a user can do. Verb-led. Mentions the inputs the user provides and the output they get back. No feature list, no tech stack instructions, no mention of microservices or auth strategies. | ||
|
|
||
| Example: *A web app where the founder pastes a Stripe payout CSV and the app returns a QuickBooks-compatible journal entry CSV they can import in one click. The first version supports USD only, one Stripe account per user, and no multi-currency. The user authenticates with email + magic link. We never store the CSV after the conversion completes.* | ||
| Example: *A web app where the founder pastes a Stripe payout CSV (a plain spreadsheet-style file exported from Stripe) and the app returns a QuickBooks-compatible journal entry CSV they can import in one click. The first version supports USD only, one Stripe account per user, and no multi-currency. The user authenticates with email + magic link (they type their email and click a one-time sign-in link - no password to build or store). We never store the CSV after the conversion completes.* |
There was a problem hiding this comment.
🔒 Security & Privacy | 🟠 Major | ⚡ Quick win
Allow explicit authentication constraints in Section 3.
Line 83 says not to mention authentication strategies, but this example and the companion template at Line 136 explicitly require an authentication choice. That contradiction can cause builders to invent security-sensitive defaults.
-What goes in it: one paragraph that names the smallest end-to-end thing a user can do. Verb-led. Mentions the inputs the user provides and the output they get back. No feature list, no tech stack instructions, no mention of microservices or auth strategies.
+What goes in it: one paragraph that names the smallest end-to-end thing a user can do. Verb-led. Mentions the inputs, output, and any load-bearing v1 constraints such as authentication, storage, and scope. No feature list or microservice instructions.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| What goes in it: one paragraph that names the smallest end-to-end thing a user can do. Verb-led. Mentions the inputs the user provides and the output they get back. No feature list, no tech stack instructions, no mention of microservices or auth strategies. | |
| Example: *A web app where the founder pastes a Stripe payout CSV and the app returns a QuickBooks-compatible journal entry CSV they can import in one click. The first version supports USD only, one Stripe account per user, and no multi-currency. The user authenticates with email + magic link. We never store the CSV after the conversion completes.* | |
| Example: *A web app where the founder pastes a Stripe payout CSV (a plain spreadsheet-style file exported from Stripe) and the app returns a QuickBooks-compatible journal entry CSV they can import in one click. The first version supports USD only, one Stripe account per user, and no multi-currency. The user authenticates with email + magic link (they type their email and click a one-time sign-in link - no password to build or store). We never store the CSV after the conversion completes.* | |
| What goes in it: one paragraph that names the smallest end-to-end thing a user can do. Verb-led. Mentions the inputs, output, and any load-bearing v1 constraints such as authentication, storage, and scope. No feature list or microservice instructions. | |
| Example: *A web app where the founder pastes a Stripe payout CSV (a plain spreadsheet-style file exported from Stripe) and the app returns a QuickBooks-compatible journal entry CSV they can import in one click. The first version supports USD only, one Stripe account per user, and no multi-currency. The user authenticates with email + magic link (they type their email and click a one-time sign-in link - no password to build or store). We never store the CSV after the conversion completes.* |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@content/course/tech-for-non-technical-founders-2026/one-page-product-brief-vibe-prd/index.md`
around lines 83 - 85, Update the guidance around Section 3 and its companion
template, including the relevant example, to explicitly permit and require
stating authentication constraints when they affect the MVP. Remove the blanket
prohibition on authentication strategies while preserving the ban on unrelated
implementation details, and clarify that the brief should specify the chosen
authentication approach and any scope or storage constraints.
| | LinkedIn Sales Navigator | Filter buyers by title, company size, funding signal, role tenure | Paid single-user plans - check LinkedIn pricing | | ||
| | Apollo.io (Starter / free tier) | Cheaper alternative to Sales Nav for B2B email + filters | Free tier available; paid plans for scale | | ||
| | Loom | 90s product walkthrough + you on camera | Free tier available | |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Remove the remaining fixed pricing promises around this table.
The table now says to check current pricing, but the surrounding section still promises an “under $100/month” pipeline and retains fixed plan/fee claims in the adjacent rows. That leaves readers with conflicting volatile guidance.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@content/course/tech-for-non-technical-founders-2026/outbound-without-sales-team/index.md`
around lines 95 - 97, Remove all fixed pricing promises and plan/fee claims
surrounding the tools table, including the “under $100/month” pipeline language
and adjacent row wording. Keep pricing guidance non-specific and direct readers
to verify current provider pricing, including for LinkedIn Sales Navigator,
Apollo.io, and Loom.
| You should be left with 30-50 clean names. Hold the bottom 20 for a later batch and send the top 30 in the first batch. | ||
|
|
||
| > **Apollo free-tier reality.** Apollo's free tier is credit-based (~100 email credits + ~10 EXPORT credits per month). The "pull 100-150 raw rows" instruction is achievable on the free tier only if you spread it across 10+ months OR use LinkedIn DM for batch 1 and reserve Apollo exports for batch 2+. Recommended sequence for free-tier founders: (1) build batch 1 from your existing LinkedIn 1st-degree connections + Sales Navigator trial (free for 1 month, no Apollo needed); (2) start Apollo on month 2 with the credits dripping in over time; (3) upgrade to Apollo Pro ($49/mo) only when you have a working reply-rate signal that justifies the spend. | ||
| > **Apollo free-tier reality.** Apollo's free tier is credit-based (a small monthly allowance of email and export credits). The "pull 100-150 raw rows" instruction usually exceeds one month of free credits, so either spread it over time OR use LinkedIn DM for batch 1 and reserve Apollo exports for batch 2+. Recommended sequence for free-tier founders: (1) build batch 1 from your existing LinkedIn 1st-degree connections + Sales Navigator trial (free for 1 month, no Apollo needed); (2) start Apollo on month 2 with the credits dripping in over time; (3) upgrade to a paid Apollo tier only when you have a working reply-rate signal that justifies the spend. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Remove the fixed one-month Sales Navigator trial claim.
“Free for 1 month” is still a time-sensitive plan allowance, contrary to the generalized pricing guidance. Say “if a trial is available” or link readers to current vendor terms.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@content/course/tech-for-non-technical-founders-2026/outbound-without-sales-team/index.md`
at line 140, Update the “Apollo free-tier reality” guidance to remove the fixed
“Sales Navigator trial (free for 1 month)” claim; replace it with wording such
as “if a trial is available” and, if appropriate, direct readers to current
vendor terms.
| The free tier comfortably covers early-stage usage - [check Supabase's pricing page](https://supabase.com/pricing) for current limits. Most pre-seed founders never outgrow the first paid tier before they hit the architectural ceiling. | ||
|
|
||
| Supabase auto-generates a REST API and a JavaScript client on top of any table you create, which is what Lovable calls when it needs to read or write a row. [Supabase's 2026 pricing](https://supabase.com/pricing) lists the bands clearly. The auth product replaces 80% of what founders used to pay Auth0 or Clerk for; the row-level security policies replace what a contractor would have hand-coded over two weeks. | ||
| Supabase auto-generates a REST API and a JavaScript client on top of any table you create, which is what Lovable calls when it needs to read or write a row. [Supabase's 2026 pricing](https://supabase.com/pricing) lists the bands clearly. The auth product replaces most of what founders used to pay Auth0 or Clerk for; the row-level security policies replace what a contractor would have hand-coded over two weeks. |
There was a problem hiding this comment.
🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win
Qualify the auth-cost and implementation estimate.
The rewrite removes the old percentage but still claims Supabase replaces “most” Auth0/Clerk spend and that RLS replaces two weeks of contractor work. Those are highly workload-dependent, especially for production authorization and audit requirements; label them as illustrative rather than typical.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@content/course/tech-for-non-technical-founders-2026/self-serve-mvp-stack-lovable-supabase-stripe-2026/index.md`
at line 109, Qualify the cost and effort claims in the paragraph around
Supabase’s generated API and auth: describe replacing Auth0/Clerk spend and RLS
replacing contractor work as illustrative, workload-dependent examples rather
than typical outcomes, especially for production authorization and audit
requirements.
| The 2026 version of the Airbnb test takes one afternoon: a Carrd page with a Stripe checkout for an annual plan, a Notion FAQ that explains exactly what the buyer gets, and the link sent to the 30 people from your [Find 10 People With the Problem](/course/tech-for-non-technical-founders-2026/find-10-people-with-problem-outreach-2026/) outreach list. The result you are watching for is in the next paragraph. | ||
|
|
||
|  | ||
|  | ||
|
|
||
| The signal you are looking for is small. Two paying buyers from 35 cold outreach hits is enough to flip the build switch. | ||
|
|
||
| We know a B2B SaaS founder who sold five annual contracts at $1,800 each via a Stripe link and a Notion doc before she wrote a line of code. By the time her contractor delivered the v1 web app eight weeks later, she had $9,000 in pre-revenue and a customer-feedback loop already running. The build was constrained by what she had already promised the five buyers, which is the cheapest scope-control mechanism that exists. | ||
|
|
||
| Zero clicks from 35 prospects is brutal in the other direction. The problem might be real (you validated it in [Decide What's Next](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/)) but your pitch is wrong, your price is wrong, or the timing is wrong. Find out for $200 instead of $30,000. | ||
| Zero clicks from 30 prospects is brutal in the other direction. The problem might be real (you validated it in [Decide What's Next](/course/tech-for-non-technical-founders-2026/mom-test-synthesis-build-pivot-kill/)) but your pitch is wrong, your price is wrong, or the timing is wrong. Find out for $200 instead of $30,000. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Align every outreach reference to 30 prospects.
The changed text and figure use 30 prospects, but Line 69 still says “35 cold outreach hits,” and the decision matrix at Line 87 also retains 35. This gives learners conflicting sample sizes and failure criteria.
Update the remaining 35-prospect references in this page to 30.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@content/course/tech-for-non-technical-founders-2026/should-you-hire-2026-decision-tree/index.md`
around lines 65 - 73, Update all remaining references to 35 prospects on this
page to 30, including the “Two paying buyers” sentence and the decision matrix
near the cited section, so every outreach example and failure criterion
consistently uses 30 prospects.
| | **Hire a team (Q2=Yes OR Q5=full team)** | Backend-heavy OR runway gives you 12+ months. Material monthly burn. Read the SOW first. | [SOW reading guide](/course/tech-for-non-technical-founders-2026/sow-reading-guide/) before signing anything | | ||
|
|
||
| **Q1 ("problem validated?")** counts as yes only if you have 10+ Mom Test interviews showing strong past-behavior signal, a smoke test that cleared the 6%+ "Promising" band (or a 5%+ Stripe-click), and a 2.4 prototype run with 4 of 5 testers reaching the right screen. | ||
| **Q1 ("problem validated?")** counts as yes only if you have 10+ Mom Test interviews showing strong past-behavior signal, a smoke test that cleared the 6%+ "Promising" band (or a 5%+ Stripe-click), and a Ch 2.6 prototype run with 4 of 5 testers reaching the right screen. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
file='content/course/tech-for-non-technical-founders-2026/should-you-hire-2026-decision-tree/index.md'
echo '--- lines 88-160 ---'
sed -n '88,160p' "$file" | cat -n
echo
echo '--- threshold mentions in file ---'
rg -n 'Promising|Stripe-click|6%|5%' "$file"Repository: jetthoughts/jetthoughts.github.io
Length of output: 11400
🏁 Script executed:
#!/bin/bash
set -euo pipefail
file='content/course/tech-for-non-technical-founders-2026/should-you-hire-2026-decision-tree/index.md'
sed -n '90,160p' "$file" | cat -n
echo '---'
rg -n 'Promising|Stripe-click|6%|5%' "$file"Repository: jetthoughts/jetthoughts.github.io
Length of output: 10867
Align the Q1 threshold across the decision tree.
This line allows a 5%+ Stripe-click, but the flowchart and self-serve gate only allow 6%+. Make 6%+ canonical here or add the Stripe-click exception everywhere else.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@content/course/tech-for-non-technical-founders-2026/should-you-hire-2026-decision-tree/index.md`
at line 154, The Q1 validation criterion is inconsistent with the rest of the
decision tree because it permits a 5%+ Stripe-click. Update the Q1 definition in
the “problem validated?” section to use 6%+ as the canonical Stripe-click
threshold, matching the flowchart and self-serve gate.
|
|
||
| > **TL;DR:** Rewrite every feature noun as an outcome-shaped job story. "Build a CSV export" becomes "When I prepare the weekly report, I want to grab the top 5 metrics in 30 seconds." The engineer has nothing left to invent. |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Remove blank lines inside blockquotes.
These blank lines trigger MD028 and can split the completion callouts during Markdown rendering. Remove the blank lines or prefix them with >.
Also applies to: 187-188
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)
[warning] 39-39: Blank line inside blockquote
(MD028, no-blanks-blockquote)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@content/course/tech-for-non-technical-founders-2026/stop-specifying-features-start-outcomes/index.md`
around lines 39 - 40, Remove the blank lines inside the blockquotes in the
completion callouts, including the additionally referenced section, or prefix
those lines with ">"; ensure each blockquote remains contiguous and passes
MD028.
Source: Linters/SAST tools
Summary
Module 3 (Design from Evidence) migrated to the v2 lesson format, plus a whole-course 4-lens validity review with all confirmed findings fixed.
Module 3 v2 (plan: TASK-TRACKER §Module 3, confirmed 2026-07-09)
ea8943ec): v2 template (Lesson header, Progress chain, Done/You-have-now/Next/If-blocked footer), hook tightened, "Artifact Style blog pages #4 of 6" hardcoded index retired, "Chapter 2.1 synthesis" renumber leftovers fixed, Maven cohort price de-hardcoded.4a2ff457): v2 template + the three 40.06-grounded improvements - hook answers the recorded "why rewrite Section 3?" objection, no-AI manual fallback under the AI critic block, explicit module gate in the Done footer.453fc5be): new page; See-it-in-action links added same commit; in-lesson Tomas & Mia case blocks removed per 30.03 §2.7; ratchet scope extended to M3.95a5c23e): M2-style Input/Output header, cover wired into frontmatter, 45-min vs 90-min contradiction resolved.3220e2f2,498974ca): "Chapter 2.1" inside vibe-prd-template-visual.svg + pivot-ledger.svg, 45-min subtitle, wrong-direction "spaceship above" - all caught by chrome-devtools visual QA (the ratchet does not scan SVGs).Course-wide sweeps (found while migrating)
ea8943ec).Whole-course 4-lens review (user request; report:
40.15)Verdict: course is VALID - spine matches research base, 10.04 competitor recommendations absorbed, module boundaries chain Input/Output cleanly, gate canon consistent. 13 finding-classes fixed (
46b3f0a4):Gates
bin/rake test:critical: 46 runs, 124 assertions, 0 failures; 84 screenshots, no diffs.🤖 Generated with Claude Code
https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V
Summary by CodeRabbit
New Features
Documentation