# Content ingestion progress + resume guide

The platform, member app, and import pipeline are built and verified. This file tracks the content grind so any session can resume cleanly.

## How ingestion works (per module)

1. In Drive, each course is a folder of ~12 module folders. Each module folder holds one "LESSON CONTENT" Google Doc (naming varies: "Module N STEP 3 | LESSON CONTENT", "Step 2 | MODULE N: LESSON CONTENT", etc.).
2. Find it: `search_files` with `title contains 'LESSON CONTENT' and parentId = '<module folder id>'`.
3. Read it: `read_file_content(docId)`.
4. Write `content/<course-slug>/NN-<title>.md` with frontmatter. Paste the body. Light editorial cleanup: turn ASCII-art diagrams into simple lists, turn fill-in-blank worksheet templates (lines of underscores) into clean checklists. The importer auto-handles em dashes, escaped markdown, headings, tables, and lists.
5. After a course is done, `npm run import`.

## Status

- Pillars seeded: 4 core + 10 bonus (14 total). ✓
- Pipeline verified end to end against libSQL (tables, escapes, em dashes all clean). ✓
- **lead-generation (Course 1): COMPLETE (all 12 lesson files written).** Module 1 was imported earlier. Modules 2 to 12 written and verified clean via the importer's exact converter (12/12 pass).
- **customer-profiling (Course 2): COMPLETE (all 9 lesson files written).** This course has 9 modules (not 12). All written and verified clean via the importer's converter (9/9 pass).
- **pitch-development (Course 3): COMPLETE (all 7 lesson files written).** This course has 7 modules. All written and verified clean via the importer's converter (7/7 pass). Drive title is "Elevator Pitch Development".
- **ai-automations (Course 4): COMPLETE (all 6 lesson files written).** This course has 6 modules. Source files are .docx (Word), not Google Docs, and the lessons are more concise than the others (about 9 to 13 KB of HTML each). All written this session and verified clean via the importer's converter: 6/6 pass (frontmatter ok, balanced HTML, no em dashes, no wrapper leftovers, 6 unique slugs, sort 1 to 6 complete, 3 lessons each, no worksheet underscores, GitHub-style "- [ ]" checkbox markers normalized to clean bullets).
- **landing-page-strategies (Course 5): COMPLETE (all 6 lesson files written).** 6 single-lesson modules. Source files are per-module `LP_M0N_Script.docx` video scripts (flat in the course folder, no module subfolders); video-production scaffolding (metadata tables, timestamped beats, stage directions, footers) stripped, teaching narration kept. Verified clean (6/6 pass). Lessons are short (about 5 to 6 min, 3 to 4 KB HTML each).
- **NOTE on Courses 5 to 10:** these are video-script courses. Each module = one `*_M0N_Script.docx` (the lesson body), plus Quiz / PageCopy / Kajabi HTML / worksheet support files that are NOT ingested. Single-lesson modules, no "LESSON N" structure. Courses 5 to 7 are flat; Courses 8 to 10 nest files in M1..M7 subfolders.
- **Still to do (all completed courses): `npm run import`** to load the new lessons into the DB (idempotent, safe to re-run). See the sandbox-mount note below for why this is run in a normal terminal.
- **business-blueprint (Course 6): COMPLETE (all 6 lesson files written).** 6 single-lesson modules from `BB_M0N_Script.docx`. Verified clean (6/6 pass).
- **marketing-architecture (Course 7): COMPLETE (all 6 lesson files written).** 6 single-lesson modules from `MA_M0N_Script.docx`. Verified clean (6/6 pass).
- **financial-command (Course 8): COMPLETE (all 7 lesson files written).** 7 single-lesson modules from `FC_M0N_Script.docx` (nested in M1..M7). Verified clean (7/7 pass).
- **ops-blueprint (Course 9): COMPLETE (all 6 lesson files written).** 6 single-lesson modules from `OB_M0N_Script.docx` (nested in M1..M6). Verified clean (6/6 pass).
- **social-systems (Course 10): COMPLETE (all 7 lesson files written).** 7 single-lesson modules from `SS_M0N_Script.docx` (nested in M1..M7). Verified clean (7/7 pass).
- **ALL 10 BONUS COURSES COMPLETE.** Final all-course sweep: 72 lessons total, 0 issues, 72 globally-unique slugs, every sort sequence complete. Totals by course: lead-generation 12, customer-profiling 9, pitch-development 7, ai-automations 6, landing-page-strategies 6, business-blueprint 6, marketing-architecture 6, financial-command 7, ops-blueprint 6, social-systems 7.
- **CORE PILLARS 2, 3, 4: COMPLETE (21 lesson files written).** market-and-revenue (7), operations-and-systems (7), scale-and-exit (7). Source: local video scripts at `0 - Website/Operator Academy Curriculum/Pillar N/Module N.M/3_Video_Script.md` (body) + `2_Page_Copy_Kajabi.md` (summary). Production scaffolding (runtime metadata, [timestamps], [ON SCREEN] directions, [END], — JT) stripped; single-lesson modules. Verified clean. Global sweep across all populated folders: 93 lessons, 0 issues, 93 globally-unique slugs.
- **CORE PILLAR 1 (foundation): COMPLETE (all 5 lesson files written).** Modules: Business Model Clarity, Legal Structure and Asset Protection, Financial Literacy and Operations, Pricing for Profit, Capital Strategy. Source: the Google Drive Foundation folder (`1zK7cNAPqOFsMymj6oqz7c3CNUamY3nfk`), each module's `OA_P1_M0N_Script.docx`. (JT provided the Drive folder directly; the Kajabi-via-Chrome route was blocked by a separate Chrome extension host-permission.) Slugs are explicitly prefixed `foundation-` to avoid colliding with same-named lessons elsewhere, notably Capital Strategy which also exists in Scale and Exit.
- **ALL CONTENT COMPLETE: 98 lessons across 14 groups (4 core pillars + 10 bonus courses).** Final global sweep: 0 issues, 98 globally-unique slugs, every sort sequence complete.
- **Launch progress:**
  1. **Import: DONE.** Run and verified on JT's machine, all 98 lessons loaded (idempotent on re-run). Live API confirmed serving 14 pillars with correct lesson counts.
  2. **Member-flow: DONE.** The woven library (bonus courses nested into their parent core pillar as collapsible tracks), search, gentle Start-with-Foundation default, XP/levels/streak/badges, progress rings, and the lesson reader (in-lesson TOC + next-lesson + Mark complete) are wired into the real `app/` against the live API. Added backend `GET /api/content/progress`. Verified rendering locally (backend on :4000, static app on :5173, logged in as the seeded admin jt@notebookofacoo.com).
  3. **Video hosting: library set up.** NOC has its OWN bunny.net account (separate from Promura), with a Stream library named "Small Business MBA", **library id 669923**, player accent set to brand gold #CBA85A, on trial credits (no payment). Embed pattern: `https://iframe.mediadelivery.net/embed/669923/<video-guid>`. VIDEO WIRING: DONE (build side). JT uploaded all 101 video/audio files to library 669923. Pulled the full title->GUID list via the dashboard (bearer token captured by hooking fetch). Built `content/videos.json` (lesson slug -> embed URL, pillar slug -> intro embed URL), verified byte-exact against the library by checksum. Extended the importer to apply it: `vLessons[slug] -> lesson.video_url`, `vPillars[slug] -> pillar.intro_video_url`. Embed pattern `https://iframe.mediadelivery.net/embed/669923/<guid>`. Mapping result: 65 lessons wired + 2 course intros (lead-generation, ai-automations). Coverage by course: customer-profiling 9, pitch-development 7, ai-automations 6 (B3_Course_2/3/4 Opening clips); social-systems 7, ops-blueprint 6, marketing-architecture 6, landing-page-strategies 6, financial-command 7 (Course_<PREFIX>_Audio); lead-generation 11 of 12 (Module 4 / lead-magnet-creation has NO source video). NO videos exist for: business-blueprint (all 6) and the 4 CORE pillars (Foundation, Market & Revenue, Operations & Systems, Scale & Exit) and Foundation modules. Closing/Outro clips intentionally not wired (the reader shows one video per lesson). **To apply: `npm run import` on JT's machine.** REMAINING: lock the library's embed allowed-referrers to the member domain at launch (left open now so localhost playback works).
  4. **NOC site integration: DONE.** In `0 - Website/`: added "The Small Business MBA" to the site nav (Work With Us dropdown, desktop + mobile) across ~70 pages, covering both nav variants (the new Fractional/Free-Guides nav and the legacy Operator-Hub cluster nav). Added the MBA as path 02 ("$10/mo, cancel anytime", gold CTA) in the homepage "Four ways to work with us" ladder (renumbered to 01 Free, 02 MBA, 03 Audit, 04 Fractional). Added a "Not ready for a fractional engagement? Start with The Small Business MBA" CTA block on `fractional/index.html` in the "who this is for / isn't" section. The marketing page `small-business-mba.html` already existed and is well-positioned ($10/mo, DIY-vs-done-for-you). Its "Join" buttons are intentionally stubbed via `JOIN_URL` placeholder (shows a "checkout switching on" alert) until Stripe. NOTE: the site has a legacy product cluster (operator-academy.html, courses.html, operator-hub.html, coo-on-demand.html, course-*.html) parallel to the new structure, a larger cleanup not in scope; SBM is now discoverable from both.
  5. **Stripe billing: CODE COMPLETE + verified.** Built `src/routes/billing.js` (POST /api/billing/checkout -> Checkout Session; GET /api/billing/portal -> billing portal), `src/routes/webhooks_stripe.js` (verifies signature, upserts the subscriptions table on checkout.session.completed + customer.subscription.*). server.js mounts the webhook with express.raw BEFORE express.json and mounts /api/billing; CORS is now an allowlist (member app + marketing + localhost). App side: app.js exposes startCheckout()/manageBilling() via delegated [data-activate]/[data-portal]; the "Activate membership" buttons in lesson.html, account.html, community.html now run Checkout, and account "Manage membership" opens the portal. config.js (member app) auto-switches apiBase by hostname (localhost -> http://localhost:4000, else https://api.notebookofacoo.com). Marketing `small-business-mba.html` JOIN_URL now points to https://app.notebookofacoo.com/login.html (Join -> sign up -> in-app Activate -> Checkout). `.env` + `.env.example` carry the STRIPE_* placeholders; .env.example URLs set to the prod subdomains. Both new route files pass `node --check`. The subscriptions table (migration 001) already has the needed columns, NO new migration.
  6. **REMAINING to go live (JT-only; Stripe is blocked to browser automation and there is no Stripe connector, so JT does these):**
     a. In Stripe: create a Product "The Small Business MBA" with a $10/mo recurring Price (copy the `price_...` id).
     b. In Stripe Developers -> Webhooks: add endpoint `https://api.notebookofacoo.com/api/billing/webhook`, events `checkout.session.completed`, `customer.subscription.created`, `customer.subscription.updated`, `customer.subscription.deleted` (copy the `whsec_...` signing secret).
     c. Paste `STRIPE_SECRET_KEY` (sk_), `STRIPE_WEBHOOK_SECRET` (whsec_), `STRIPE_PRICE_ID` (price_) into the production backend `.env`. (Use test keys + `stripe listen` for local testing.)
     d. Deploy: backend on `api.notebookofacoo.com` with the prod `.env` (DATABASE_URL -> Turso), member app `app/` on `app.notebookofacoo.com`, run `npm run migrate` + `npm run import` against prod DB, lock the Bunny library's embed allowed-referrers to the member domain.
- **Quizzes (Kajabi parity): ENGINE COMPLETE, content ingest in progress.** Migration `002_quizzes.sql` adds `quizzes` + `quiz_attempts`. The importer now loads `NN-title.quiz.json` sibling files (em dashes stripped). content.js has `GET /lessons/:slug/quiz` (answers hidden) and `POST /lessons/:slug/quiz/submit` (graded server-side; passing >= pass_pct records the attempt AND marks the module complete via lesson_progress). lesson.html renders the quiz with options, grading, explanations, and 80%-to-advance gating (a module with a quiz is completed by passing it, not the manual button). Verified end to end against libSQL in-sandbox (grading, 80% threshold, completion gating all correct). **ALL QUIZZES INGESTED: 97 `.quiz.json` files, 1,269 questions, verified loading clean.** Coverage is every module except `foundation/05-capital-strategy` (no quiz doc exists in Drive). The importer normalizes every quiz to an 80% pass-to-advance threshold (overrides per-file values). Question counts vary by source: core pillars 12 each, Foundation 9 (free-text Q10 dropped), Lead Gen/Customer Profiling/Pitch Dev 20-25 (the "Step 3 ... TEST" banks), AI Automations 20, the short video courses 3-5. Free-text/application questions were dropped (MC-only engine). **To apply:** `npm run migrate` (creates the quiz tables) then `npm run import` (loads lessons + quizzes), then restart `npm run dev`.
- **Resources (workbooks / tools / worksheets): ENGINE COMPLETE + Foundation done; other courses pending.** Design decision (per JT): resources are REBUILT on-brand as HTML, never the raw source file, no em dashes, shown in a prominent reader panel. Migration `003_resources.sql` adds `lesson_resources` (id, lesson_id, sort, type, title, body_html, timestamps). The importer loads `NN-title.resources.json` siblings: each resource's markdown `body` is run through `mdToHtml` (em dashes stripped), stored as HTML; re-import replaces a lesson's resources wholesale (idempotent). content.js has `GET /lessons/:slug/resources` (gated: body_html only when the viewer is active; locked viewers get a join prompt). lesson.html renders a gold-bordered "Resources & Downloads" panel after the lesson body, with a modal viewer (view + print). Added two backward-compatible primitives to `mdToHtml`: `[FILL n]` worksheet fill-in boxes and `- [ ]` checkbox checklists, with matching CSS in lesson.html. Verified end to end against libSQL (insert, idempotent replace, lock gating, zero em dashes).
  - **Foundation: COMPLETE.** `.resources.json` written for modules 1.1-1.4 (8 resources total, workbook + tool each), rebuilt on-brand from the Drive source docx/xlsx via the Google Drive connector. Module 1.5 (Capital Strategy) has NO workbook/tool in Drive (only a script + page copy), so it has no resources, matching its lack of a quiz. Source folder ids: M01 `1xuzp_huxUcV04_cz0CBJ6zyxAoQjB1qQ`, M02 `1gD3LNZVTFoKpukGG62AvBZnJ1Zdkapni`, M03 `1kuJ5gOskNT_gQhyzdKRFKIiMYApCUtX1`, M04 `1PE-w-z9L8ZVpn_-3SFfE2MqAaio-_uLw`.
  - **ALL 4 CORE PILLARS DONE + independently verified (29 modules of resources).** Foundation 1.1-1.4 (8 resources, from Drive docx/xlsx). Market & Revenue 2.1-2.7, Operations & Systems 3.1-3.7, Scale & Exit 4.1-4.7 (2 resources each: an interactive Workbook + a read-only "Answer Key and Coaching Notes" guide), rebuilt from local markdown at `0 - Website/Operator Academy Curriculum/Pillar N - .../Module N.M - .../` (`6_Workbook_Student.md`, `7_Workbook_Answer_Key.md`, `5_Tool_Instructions.md`). The 3 non-Foundation core pillars (20 modules) were built by parallel subagents to the 2.1 gold-standard template, then verified by a batch harness: all valid JSON, zero em/en dashes, every `{{in}}`/`{{= }}` token well-formed and confined to table cells, and every computed formula references only defined inputs. External-tool/Kajabi/submission references were folded inline so each resource is self-contained. Re-run `npm run import` on JT's machine to load all 29.
  - **ALL RESOURCES COMPLETE: 94 `.resources.json` files, 163 resources, across all 14 course groups.** Verified by the batch harness (`/tmp/res/batchall.mjs`): valid JSON, zero em/en dashes, every `{{in}}`/`{{= }}` token well-formed and confined to table cells, every computed formula references only defined inputs. Counts: foundation 4, market-and-revenue 7, operations-and-systems 7, scale-and-exit 7 (core, 2 resources each); ai-automations 6, business-blueprint 6, customer-profiling 9, financial-command 7, landing-page-strategies 6, lead-generation 12, marketing-architecture 6, ops-blueprint 6, pitch-development 7 (5 each), social-systems 4 (bonus). Bonus sources were Drive docx/xlsx/Google Docs pulled via the connector; core pillars from local curriculum markdown. NOTE: the Cowork bash mount serves STALE copies of just-edited files (so an in-sandbox json.load may falsely report errors on a file edited seconds earlier); the host Read/Edit/Grep tools are authoritative and confirm validity. **To load everything on JT's machine: `npm run migrate` then `npm run import`.**
  - (historical) Bonus-course resources were located in Drive then built (task #62). Each bonus course has ~1 worksheet/template/guide per module as a `.docx` in Drive, named by prefix: BB_ (business-blueprint), MA_ (marketing-architecture), FC_ (financial-command), OB_ (ops-blueprint), SS_ (social-systems), B3_Course1 / Module3_Funnel_Workbook_B3_Course1 (lead-generation), plus LP_ (landing-page-strategies) and likely prefixes for pitch-development, customer-profiling, ai-automations. They are scattered across individual Drive folders; enumerate via `search_files title contains '<PREFIX>_'`, read via the Drive connector `read_file_content`, then rebuild on-brand to match the lesson `.md` filenames in each course's content folder. Subagents do NOT have the Drive connector, so the docx reads must be done by the main agent (or the files exported locally first).
  - **A style preview** is saved at the workspace root: `resources-preview-module-1.1.html` (shows the panel + both resources opened in the brand-styled modal).
  - **INTERACTIVE + AUTOSAVE + AUTO-CALC (per JT): DONE for Foundation, baked into the engine.** Resources are no longer print/download; members fill them in on the site and answers save to their account. Migration `004_resource_responses.sql` adds `resource_responses` (PK user_id+resource_id, data JSON). content.js: resources GET now returns each resource `id` + the viewer's saved `response`; new `POST /api/content/resources/:id/response` upserts (active members only). lesson.html: the modal is now an editor, fill boxes become textareas, checklist items become clickable toggles, blank table cells become text inputs, debounced autosave (800ms) with a Saved indicator, save-on-close, and `current.response` is synced after each save so reopening shows saved answers (this sync was a bug fix: without it, reopening rebuilt blank and the close-save wiped the row). Print button + print CSS removed. **Auto-calculating tools:** `mdToHtml`/`inline` protect `{{ ... }}` tokens (so formula `*` and `/` survive emphasis parsing, via an `@@@N@@@` sentinel, NOT null bytes). Token syntax in resource markdown table cells: `{{in NAME money|pct|num}}` = a saved numeric input bound to variable NAME; `{{= EXPRESSION money|pct|num}}` = a live read-only computed cell. The reader has a tiny safe arithmetic evaluator (whitelisted chars, min/max/round/abs/ceil/floor) that recomputes on every input. All 4 Foundation tools rewritten with formulas (M01 revenue totals + health average, M02 weighted risk = (6-score)*weight*mult, M03 gross/net margin + runway + AR days, M04 margin floor = cost/(1-margin/100) + incremental + annual impact + combined). Verified end to end against the live local.db: a real save round-trips (n_c1=145, n_m1=52 persisted). **Apply on JT's machine: `npm run migrate` (004) + `npm run import` (reload tool bodies), already run once and confirmed live.**
  - **NOTE for the remaining courses' resources:** when rebuilding tool/calculator resources, use the `{{in ...}}` / `{{= ...}}` tokens so they auto-calculate; workbooks use plain markdown (fill boxes, `- [ ]` checklists, blank table cells become free-text inputs automatically).

> Note on running the import: `npm run import` should be run in a normal terminal in `backend/`. Running it inside the Cowork Linux sandbox failed because the sandbox's file mount served stale, truncated copies of pre-existing repo files (package.json, the schema, the importer). The repo files on disk are intact and correct; this is only a sandbox-mount artifact.

## Course → slug map + Drive folder IDs

| # | Drive course | slug | course folder id |
|---|---|---|---|
| 1 | Lead Generation Systems | lead-generation | 1_XgjQPL0qT3gEmDZapb-ZMnKKojhUq5O |
| 2 | Customer Profiling | customer-profiling | 1X46461DEqF7tDt0zSBXfLi213c0ktgn5 |
| 3 | Elevator Pitch Development | pitch-development | 1u7UNuEuN8TU6eztIopHysHItTVWUcdrh |
| 4 | AI Automations | ai-automations | 1YrXAQmi9NqVOMJBPGDcZGwbhHdzJJD3x |
| 5 | Landing Page Strategies | landing-page-strategies | 1ElS0RGPRKckXvPG9lANF1Jvo_ZsEwn9w |
| 6 | The Business Blueprint | business-blueprint | 1WNc3AO5mhcGmFWPNpZF9iFjWqyogsyxR |
| 7 | Marketing Architecture | marketing-architecture | 1bm6QK5o-Q4fB4Zl-23hLikW7RfRTisuA |
| 8 | Financial Command | financial-command | 1qLdHVxPObV4U2HO6BgBSFZh5adelneF3 |
| 9 | The Ops Blueprint | ops-blueprint | 1oqqXQDIn4f8lpg4fntYC84JCanmOhGhO |
| 10 | Social Systems | social-systems | 1YRnjb0SaNyUJe7K_u4p_6qDvrNtx5Pn9 |

## Course 1 module map (lead-generation)

All 12 lesson files written to `content/lead-generation/`. Doc ids now recorded (no more "look up").

| Module | LESSON CONTENT doc id | file | status |
|---|---|---|---|
| 1 The Lead Generation Mindset Shift | 1OqA3kh81ZZKPWbhWE8Nxx31mZh5JQ4RAyJRte6uEtOs | 01-the-lead-generation-mindset-shift.md | imported |
| 2 Assessment-First Methodology | 1NrL2lM2gCGWHJUHqhIU3W3W1gb7c4hEZMSqqf_-Qojg | 02-assessment-first-methodology.md | written |
| 3 Building Your Qualification Funnel | 1U7GJUetR8oJyYkYAg5TEM46--QwA9iQTasvA2IlOB9Q | 03-building-your-qualification-funnel.md | written |
| 4 Lead Magnet Creation | 1POp0ScvKeHJau-TARvaghZqqsmfmfzknGM59xKqwK1c | 04-lead-magnet-creation.md | written |
| 5 Multi-Channel Acquisition | 1iybkDznfjFU81rMB5QVjT7XEOO61WhzU8QRC7np90V0 | 05-multi-channel-acquisition.md | written |
| 6 Lead Scoring Systems | 1wuEP_99hnv7y9AyRrA158I_zZPkCigMHv0wpagLK6vs | 06-lead-scoring-systems.md | written |
| 7 Cost-Per-Lead Optimization | 1JRFRdnVWCyIHXEpUtl5jREe-xOgmG-x1fUtbyu601A0 | 07-cost-per-lead-optimization.md | written |
| 8 Pipeline Forecasting Models | 1Slnx3y9Q2DkNqGsSZlmwS81kzA-RsX4j36n5Gv38Z-g | 08-pipeline-forecasting-models.md | written |
| 9 Scaling Without Increasing CAC | 1_OEONlcgSjsmF0bJekeLAEpLKXZo_tcewHaBfWC2IHs | 09-scaling-without-increasing-cac.md | written |
| 10 Automation Architecture | 1jRtkvbK4XQnHIhRx43Amjcvj_vmVid77u4wDHQCv1Ek | 10-automation-architecture.md | written |
| 11 Conversion Rate Optimization | 1UXxpXfrHXyx8anLwRO4qJBYIYH0YGyacX0uyGqswwGc | 11-conversion-rate-optimization.md | written |
| 12 Putting It All Together | 1AGcXfCo0czYajrvuTz_4i-gzVB5IFS9wvfHKKdTLjWI | 12-putting-it-all-together.md | written |

## Course 2 module map (customer-profiling)

All 9 lesson files written to `content/customer-profiling/`. This course has 9 modules, not 12.

| Module | LESSON CONTENT doc id | file | status |
|---|---|---|---|
| 1 Why Demographics Fail | 1zUPFjll2V-G9nxZobIsqlkriiok-WBxXgB6JEZ9YP5k | 01-why-demographics-fail.md | written |
| 2 Data-Driven Segmentation | 1CSQyCnFsALaY6rEmoFEyS_wVGdjGMW_GU5xDyVIjxhA | 02-data-driven-segmentation.md | written |
| 3 Building Your ICP | 1FL-CVFuMeTjyiWdDCN3ryjLijR2PRvenrvQSRVwhH4c | 03-building-your-icp.md | written |
| 4 Psychographic Profiling | 11F8vkxEhDVxPEOVyRGsWDo9MAck0HAqVcfwxcQ-y4jg | 04-psychographic-profiling.md | written |
| 5 Customer Journey Mapping | 1l6dqEBNjIUVQ31YE8fLsgKOjkbT_Xfj3GLefWAtUOYM | 05-customer-journey-mapping.md | written |
| 6 Pain Point Analysis | 1O2GXZMKXpSM-ZqMGhHUP3dFThT3TMEIBqV-00Ow45g0 | 06-pain-point-analysis.md | written |
| 7 Purchase Behavior Patterns | 1oQ3_X2PbdexdKM7kxxpWaK5dCTyEStZVpbTRugRDbZs | 07-purchase-behavior-patterns.md | written |
| 8 Lifetime Value Calculation | 1Tb1tXo1PtWTSuTgyQDwSR4nv7uYk6WgzdwsvpXDbevc | 08-lifetime-value-calculation.md | written |
| 9 Message-to-Market Fit Testing | 13jkWRJc6Q-HKSCYiRrWpooiblsTUuPaZ6YVy7fAah0M | 09-message-to-market-fit-testing.md | written |

## Course 3 module map (pitch-development)

All 7 lesson files written to `content/pitch-development/`. This course has 7 modules. Drive title: "Elevator Pitch Development".

| Module | LESSON CONTENT doc id | file | status |
|---|---|---|---|
| 1 The Pitch Framework | 17oNIm7uzZGjZeT8HsVIMvdeHDqaQ_9_CNrKynzBizw4 | 01-the-pitch-framework.md | written |
| 2 Value Proposition Clarity | 1xQWtdesGjp_lrOm1SsEgQhty1TJaqRKXngNgjHovOWs | 02-value-proposition-clarity.md | written |
| 3 Differentiation Strategy | 1BUlbVs2xROlKOLxBEjpV1P5F755zembY0BO5Ep4IHnU | 03-differentiation-strategy.md | written |
| 4 Audience Variations | 1SAjvhxgv7N38-yL91SzzwUuwWkMSOrTVd08lWy5E680 | 04-audience-variations.md | written |
| 5 Social Proof Integration | 1fGdGP64Jx3OjMr5-chRtKY_TFH31KMjZuTt_ixXw830 | 05-social-proof-integration.md | written |
| 6 Call-to-Action Design | 1eyg3Z6jOgWfVfvDSGHd6rBOFh1qT2dgFoDbGB4iZp_w | 06-call-to-action-design.md | written |
| 7 Testing & Refinement | 1WDm6j4-oLyJWX2KFkgjMclUwZ95RmSlEfC-12VcJDfc | 07-testing-and-refinement.md | written |

## Course 4 module map (ai-automations)

All 6 lesson files written to `content/ai-automations/`. This course has 6 modules. Source docs are .docx (Word) files, read via the Drive connector's read_file_content (which supports docx).

| Module | LESSON CONTENT doc id (.docx) | file | status |
|---|---|---|---|
| 1 AI Fundamentals for Business Operators | 1M2ech3_tlVYHah34OayWuiZJexuxsGGh | 01-ai-fundamentals-for-business-operators.md | written |
| 2 Workflow Mapping and Automation Audits | 13aAIFxcCYqOdvMCCiRmMyeln98ClqC75 | 02-workflow-mapping-and-automation-audits.md | written |
| 3 Claude as Your Automation Engine | 16EFw6eZgnF4nGK54VVElcAFczKbiac4K | 03-claude-as-your-automation-engine.md | written |
| 4 Building Your First Simple Automation with Make | 1xkYnaLxzGP-xYzHVeLm6D_TRwXNmoTwC | 04-building-your-first-simple-automation-with-make.md | written |
| 5 Multi-Step Workflows and Autonomous Agents | 1Qov-8EwmZcfwcCUVVyY-hZBU6PyhwZ8J | 05-multi-step-workflows-and-autonomous-agents.md | written |
| 6 Measuring ROI and Scaling Your Automations | 1e7qvifioPYqkLy4ydu2f_Hp95PUT-XP7 | 06-measuring-roi-and-scaling-your-automations.md | written |

## Courses 5 to 10 module maps (video-script courses)

Source for every module below is the `*_M0N_Script.docx` video script. Courses 5 to 7 are flat in the course folder; Courses 8 to 10 nest in M1..M7 subfolders. All written and verified clean.

**Course 5 landing-page-strategies (6):** 1 Why Most Landing Pages Don't Convert (1vvd0syc_XY6cT8UQFw_kFInjlzSi5j0C) · 2 The Anatomy of a High-Converting Landing Page (1bUKFcx7VxA_HDZMlq9iqvDf7qbihIPBY) · 3 Headlines, Hooks, and the First Five Seconds (1rtTR3N7dh6b8fYU_Y3x8nDrtBasOvIUm) · 4 The Offer and the CTA (1Ct1Bvr8gE7HsA8Yri14A4H5ixqbEetYT) · 5 Trust Signals, Social Proof, and Friction Removal (1tSEUP1HROqyoOPbka1YswrmramEJsS71) · 6 Testing, Optimizing, and Scaling What Works (1Q8EKZQK90Eizj7Eqv7y6D0mAiZlHE1h3)

**Course 6 business-blueprint (6):** 1 Why Most Business Plans Fail Before They Start (1ZIDEqrHNHFNb-LnwNQwVGxG8EoaPDXpk) · 2 The One-Page Operating Plan Framework (1oU3LtiyJ630FaGE3HXxxYSJ5Sbv_R2S5) · 3 Revenue Model Clarity (1Nb4rWuk2oAHliaXlQJ2Xy1i1LMPYMCig) · 4 Market and Customer Definition (1h3u_2ko_6GDmWPQ41qsKllm3By409y1T) · 5 Your 90-Day Execution Priority Stack (1pc_8owAyU9lzs3d56cF7EzNODQ-6KpWR) · 6 The Plan Review System (1s0AXqSSaFufSuUcRIHxJB7dcUkTHTNwe)

**Course 7 marketing-architecture (6):** 1 The Marketing Audit (1HGrM_rlkoNU3YIdLl0lM9liDrdVRn7Fw) · 2 Building a Behavioral Profile (1I1SowaXz4Kpli6IGvmpNARfow6m-cbCg) · 3 Channel Strategy (1HRmgh9eZxJ2XzApWp-tcb4H1bboc3S0H) · 4 Content Architecture (113u2hVa9j6EKoQn0xstsZBobRhfnY5XZ) · 5 Campaign Execution (1eYuLgg4ZNI-qXHESGHHWPznZEwWKBUOg) · 6 Marketing Measurement (13B0xtUiWJdzsjqHZdbp9bCPu4mbxxgwv)

**Course 8 financial-command (7):** 1 P&L Mastery (1RcJWKC6emp7EZAJygGE5wc5yKDfPoVzx) · 2 Why Profit Does Not Mean Money in the Bank (1UcX9ibrQecFH1lZvNdvcf1ETAQfyBZmK) · 3 Budget Architecture (1ShoAVQ-EGpPsiHEFsi-GP6tcxRtusPG6) · 4 Financial KPIs (1fFbyCMvxt6qKHACqn_7W0XreEgqYKlva) · 5 Margin Analysis (1x81FeuyT7hrEefjW8LFmnYOxDASLUh75) · 6 Capital Planning (1tlQ6alUFYDx_RYFYUgkK6o1LKClGj_Z2) · 7 Financial Decision-Making (1OAW25yrNHgq_d6ljxLTO95QU4bQyWW6f)

**Course 9 ops-blueprint (6):** 1 Process Documentation (1G19GA3PVnfL0d21rZBQuE9SvYDST0lq0) · 2 SOP Architecture (1JxlyTG8YYSgy9U72yca-i5rbg1_vP9XF) · 3 Reducing Errors and Rework (1K0e9VRL5ZrifvyCd75vMz_rjZx7inVsv) · 4 Quality Control (1NKbYO7MRf6jNTYh8EuFGkCiw8tdXOlrU) · 5 Team Accountability Structures (1P3ItfHot-Ba09F3I91o5bmeTqZulo18K) · 6 Systems Integration (1RTttO2tVXtFV91zMl2xkJSUcYfIzCogV)

**Course 10 social-systems (7):** 1 Where You Should Actually Be (1cSgbDt4wHjDbGAtM3pIwcGfueo6hSlXc) · 2 Content Calendar Architecture (1KUz39HRd7nsUJqTCsebSc4HS36nYCgN9) · 3 Batch Production (1QZLbsxGlJAfzEBM2Jtm0Kqt219-tmXtg) · 4 Scheduling Systems (1ranoRPZCpJNrQkwehFKv60eFr4gAtY1c) · 5 Analytics Interpretation (1VeU8wV_RnNuEvEZf53DabmVFL72Zqb_a) · 6 One Idea, Five Formats (1nDZHUzbqq20F18BMlY1cBZ0JoOxiwqlO) · 7 What to Automate and What to Keep Human (1O6AdtZgMqWoog2jLHpTEN_OUZuo4M-TW)

## Core pillar module maps

**Pillar 1 foundation (5):** from Google Drive folder 1zK7cNAPqOFsMymj6oqz7c3CNUamY3nfk, each module's `OA_P1_M0N_Script.docx`. 1 Business Model Clarity · 2 Legal Structure and Asset Protection · 3 Financial Literacy and Operations · 4 Pricing for Profit · 5 Capital Strategy. (Slugs prefixed `foundation-`.)

Pillars 2 to 4 source per module: `0 - Website/Operator Academy Curriculum/Pillar N - .../Module N.M - .../3_Video_Script.md` (body) and `2_Page_Copy_Kajabi.md` (summary).

**Pillar 2 market-and-revenue (7):** 1 Market Positioning · 2 Customer Intelligence · 3 Revenue Architecture · 4 Advanced Lead Generation Systems · 5 Sales Systems That Don't Need You · 6 Retention and Customer Lifetime Value · 7 Content and Authority Strategy

**Pillar 3 operations-and-systems (7):** 1 The Operating System Mindset · 2 Documentation and SOPs · 3 Delegation and Org Design · 4 Cash Flow and Financial Controls · 5 Tech, Tools and Automation · 6 Meeting Architecture and Decision Rights · 7 Operating Reviews and Performance Management

**Pillar 4 scale-and-exit (7):** 1 The Scale Decision · 2 Operating Leverage · 3 Capital Strategy · 4 Geographic and Vertical Expansion · 5 Building Toward Exit · 6 M&A Mechanics · 7 Operator Next-Chapter Planning

## Access confirmed (ready to resume)

- Google Drive connector: working (source for the 10 bonus courses' lesson text).
- Chrome + Kajabi: connected and logged in (Browser 1). Note: `app.kajabi.com/admin/products` 404s for this account; open the dashboard and use its Products link to find the correct path. Use the Chrome tools to (a) extract Pillar 1 (Foundations) lesson text via get_page_text, and (b) capture each course's Hedra intro video embed URL via read_network_requests or the DOM, then set intro_video_url.

## Parallel items for JT

- Export Pillar 1 (Foundations) from Kajabi before June 2.
- Identify where the Hedra animated course intro videos live and how to host them (Bunny Stream or YouTube unlisted), so they can be set as each course's intro_video_url.

## Core pillars 2-4 (local, not Drive)

Source: `0 - Website/Operator Academy Curriculum/`. 21 modules, 7 files each. Use `3_Video_Script.md` for the body and `2_Page_Copy_Kajabi.md` for the summary. Strip stage directions and timestamps.
