outreach batch 1: 20-slot prospect list template + opener templates#106
Merged
Conversation
…s, sourcing queries, 3 pre-fill candidates
…xcluded out-of-band
- outreach_sourcer.py: YouTube API v3 sourcer with burn validation, quota tracking, false-positive filtering (1,087u used, 11% free tier) - 20 prospects fully enriched: verified subs, gap %, burn events with URLs, M0 fit assessment, personalized openers - 5 prospects have biz emails (TSO_Sage, Shijo p Abraham, 8sxope, Monkey Economics, Spooky Scary Socialist) - 6 false positives filtered (gaming shadowbans, advice videos, third-party references) - segment split: 3 right-coded, 2 left-coded, 15 wildcard
- M0 fit now uses signal-based scoring (YES/POOR/PARTIAL) instead of broken binary check that classified everything as PARTIAL - 10 YES fits (recipes, crafts, tutorials, fashion, finance, podcasts, nutrition, fitness), 4 PARTIAL, 3 POOR (animation, cinematic, vlogs) - 2 slots open for right-coded M0-YES prospects (need X/Twitter search) - outreach_sourcer.py: added M0_YES_SIGNALS/M0_POOR_SIGNALS scoring
…ch-1 # Conflicts: # CHANGELOG.md
jacoby149
added a commit
that referenced
this pull request
Jul 19, 2026
* restructure: create marketing/ folder for marketing-api, marketing-ui, web10-cli, web10-social (#91) Group all accessibility + growth surfaces under marketing/. Update all path references in CI workflows, validation.py, CLAUDE.md, decisions.md, plan.txt, and parallel execution.txt. * Board sync fixes, CI board-sync guard, and whole-repo CI/CD repair (#93) * Fix plan/parallel-execution drift vs changelog; add ci board-sync guard Tick C1 (1.0.25) and D3 (1.0.27), refresh wave-0 status and the conductor board, tick the shipped cd items, correct phase 7 crm/mail wording and lane C ownership, refresh CLAUDE.md stack section. changelog.yml gains a board-sync step: version monotonicity (error) + lane-tick reminder (warning, visibility-first). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Repair ci/cd so every test suite in the repo runs and reports js-ci: add marketing-ui + encryptor jobs, drop dead exporters job, commit sdk/marketing-ui bun.lock (sdk job died at install), remove continue-on-error from tests. New marketing-api workflow (uv+ruff+ pytest, smoke tests); ruff caught two real bugs (missing BackgroundTasks param, missing find_json_entries import) — fixed. docker/cd matrices rebuilt on real Dockerfiles; media.yml deleted. marketing-ui type errors fixed (vite-env.d.ts, ImportProgress). .gitignore rewritten; ui/dist, mobile/.expo, node_modules untracked. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Add Proxmox deployment plan + ubuntu-deploy script (#94) * Add Proxmox deployment plan, LANE E, and ubuntu-deployment script - plan.txt: new CROSS-CUTTING deployment section for Proxmox homelab (staging node, marketing sites, caddy reverse proxy, provisioning) - parallel execution.txt: new LANE E for infrastructure/deployment - ubuntu-deployment/: one-shot deploy script (Docker, Caddy, web10 node, marketing) + README with VM creation instructions - .gitignore: added .env (proxmox creds) * fix(ci): fetch full history so changelog check can diff against base * chore: add changelog entry for ubuntu-deployment + LANE E * A2: rename mongo.py -> documentdb.py + docker-compose update (#95) Adapter renamed from mongo.py to documentdb.py — the module is backend-agnostic (pymongo speaks to either real Mongo or FerretDB/DocumentDB). All imports, test files, and patch paths updated. Test files renamed to test_documentdb*.py. Docker-compose updated with FerretDB/DocumentDB default, real Mongo as profile. 235 tests green. * E2: marketing deploy — Dockerfile, compose, deploy script (#96) * E2: marketing deploy — Dockerfile, compose, and deploy script - marketing-api/Dockerfile: multi-stage python 3.12 + uv + uvicorn - docker-compose.marketing.yml: standalone compose for marketing-ui + marketing-api - ubuntu-deploy.sh: full marketing service setup (compose copy, path fixup, Caddy proxy with separate RTC subdomain, auto build+start) * Tick E2 in CHANGELOG, plan, and parallel execution * setup wizard + admin config screen (A3/B3/B4) (#97) API: /ready, /setup, /config endpoints; config persistence service; JWT key generation; admin creation UI: 6-step setup wizard; admin config panel for all node settings; auto-detect unconfigured nodes Models: SetupRequest, SetupStatus, ConfigUpdate, NodeConfig schemas * Wave 0: endpoint-level permission-matrix suite (45 tests) (#98) * A2: rename mongo.py -> documentdb.py + docker-compose update Adapter renamed from mongo.py to documentdb.py — the module is backend-agnostic (pymongo speaks to either real Mongo or FerretDB/DocumentDB). All imports, test files, and patch paths updated. Test files renamed to test_documentdb*.py. Docker-compose updated with FerretDB/DocumentDB default, real Mongo as profile. 235 tests green. * wave 0: endpoint-level permission-matrix suite (45 tests) 45 new endpoint tests through FastAPI TestClient covering auth flows, CRUD routes, aggregate, star protection (I3), forged-token rejection (I1), scoped-token enforcement (I5), metering/billing, certify, and system endpoints. 280 total api tests green. Also adds a bare exception handler in main.py that maps legacy Exception('TOKEN') etc. to proper HTTP 401s, a JWT PyJWTError handler for forged/expired tokens, and fixes a models.dotdict -> dotdict bug in documentdb.py. * Add PR-to-dev rule to AGENTS.md * Re-plan lens chatbox LLM backing: BYOK-only, phone-wallet key (D19) (#101) Phase 8 llm-backing item flipped from operator-pays-by-default to bring-your-own-key only: v1 key stays client-side (browser -> provider direct), presets need zero LLM, node-provided inference demoted to a capped operator opt-in. Phase 11 wallet gains an opaque-secrets item: the phone beams the e2e-encrypted LLM key to the apps the user picks. New decisions.md entry D19; CHANGELOG 1.0.41. Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * D20/D21 strategy pivot: creator-first plan, business plan, sales kit, timeline (#102) Refactor plan.txt around the creator proposition (own your audience, no shadow ban by architecture): THE STORY + THE RISE, M0 redefined as "stands on its own" (chronological feed + sort dropdown + the Studio money screen), lens/chatbox cut to later.md, rule-of-100 kill test. New docs: business-plan.md (real numbers, breakeven ~5 creators), outreach.md (sales kit), manifesto.md (fan join page), timeline.md (10-week M0→M2 schedule). D20+D21 in decisions.md; boards, glossary, CLAUDE.md kept true. CHANGELOG 1.0.42–1.0.46. Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Refresh conductor board for D20/D21 pivot + timeline week 0 (1.0.47) (#104) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Spec UI stability plan: e2e suite, feedback loop, ux telemetry (1.0.48) (#105) Expands the thin playwright line in plan.txt into a full browser-e2e item (playwright-in-docker vs the compose stack, ~6-10 smoke journeys across ui/social/marketing-ui), records the marketing-ui zero-test and js-workflow continue-on-error gaps, adds a report-a-bug loop and a privacy-split ux telemetry item, and puts C5/D10/D11 on the lane board. Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * 1.0.48: wave-0 security fixes — CORS, bare excepts, provider URL SSRF guard (#107) * 1.0.48: wave-0 security fixes — CORS, bare excepts, provider URL SSRF guard * fix: preserve port/path in provider URL validation; simplify twilio except * D4: web10-social data layer — conventions-schema stack for M0 (#108) * D4: web10-social data layer — conventions-schema stack for M0 killer app slice - src/data/: typed modules for posts, feed, profile, contacts, dms, comments, reactions, media upload via API presigned URLs - src/data/wapi.ts: thin typed fetch wrapper over legacy wapi.js - Web10SocialAdapter wired with 30+ new data-layer methods (backward compat) - SMR terms extended for profile, contacts, inbox, comments, reactions, media - 55 new vitest tests (227 total, all green) - Screens deferred to D2.5 post-B2.5 tokens * fix: remove stray leftover lines from D4 lane tick in parallel execution.txt * 1.0.51: CLAUDE.md hand-off convention — agents end merges with next lane item + paste-ready kickoff (#110) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * B2.5: ui makeover — rectangles-npm out, Tailwind CSS + design tokens in (#109) * D22: record stack pick — Tailwind CSS + shadcn/ui replaces rectangles-npm * B2.5: ui makeover — rectangles-npm out, Tailwind CSS + design tokens in - D22 recorded in decisions.md (Tailwind CSS + shadcn/ui pick) - rectangles-npm and react-bulma-components dropped from package.json - Design token layer: ui/src/styles/tokens.css (color, type, spacing, radius, dark mode, CSS custom properties for creator theming) - All ui/ screens restyled on Tailwind: login/signup/forgot, contracts, requests, settings, setup wizard, config page - Shared components (SideBar, TopBar, Icon, Branding) rewritten - Card pattern replaces Bulma cards; form inputs use consistent rounded inputs with icon prefixes - Old rectangles CSS (index.css, Components.css, bulma.min.css) removed - 43/43 vitest tests green * fix: CredentialPage stale rectangles import, CHANGELOG version order, Docker build type errors - Remove leftover 'import { R } from rectangles-npm' in CredentialPage.tsx - Swap CHANGELOG versions: B2.5 entry is now 1.0.49 (unique highest), dev plan entry demoted to 1.0.48 — fixes changelog CI check - Add vite-env.d.ts with ambient module declarations for CSS imports from node_modules (react-phone-input-2, @chatscope) - Fix @import path for tokens.css in index.css (./styles/tokens.css) - MockMedia: replace missing asset imports with string paths - Update parallel execution.txt B2.5 tick to 1.0.49 * outreach batch 1: 20-slot prospect list template + opener templates (#106) * outreach batch 1 template: 20-slot prospect list with opener templates, sourcing queries, 3 pre-fill candidates * outreach batch 1 enriched: 5 Gemini pre-fills, 15 template slots, 3 excluded out-of-band * outreach batch 1: 20 API-verified prospects via YouTube Data API - outreach_sourcer.py: YouTube API v3 sourcer with burn validation, quota tracking, false-positive filtering (1,087u used, 11% free tier) - 20 prospects fully enriched: verified subs, gap %, burn events with URLs, M0 fit assessment, personalized openers - 5 prospects have biz emails (TSO_Sage, Shijo p Abraham, 8sxope, Monkey Economics, Spooky Scary Socialist) - 6 false positives filtered (gaming shadowbans, advice videos, third-party references) - segment split: 3 right-coded, 2 left-coded, 15 wildcard * outreach: fix M0 fit logic + rebuild batch 1 list - M0 fit now uses signal-based scoring (YES/POOR/PARTIAL) instead of broken binary check that classified everything as PARTIAL - 10 YES fits (recipes, crafts, tutorials, fashion, finance, podcasts, nutrition, fitness), 4 PARTIAL, 3 POOR (animation, cinematic, vlogs) - 2 slots open for right-coded M0-YES prospects (need X/Twitter search) - outreach_sourcer.py: added M0_YES_SIGNALS/M0_POOR_SIGNALS scoring * chore: add raw full outreach prospects output --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
jacoby149
added a commit
that referenced
this pull request
Jul 19, 2026
* restructure: create marketing/ folder for marketing-api, marketing-ui, web10-cli, web10-social (#91) Group all accessibility + growth surfaces under marketing/. Update all path references in CI workflows, validation.py, CLAUDE.md, decisions.md, plan.txt, and parallel execution.txt. * Board sync fixes, CI board-sync guard, and whole-repo CI/CD repair (#93) * Fix plan/parallel-execution drift vs changelog; add ci board-sync guard Tick C1 (1.0.25) and D3 (1.0.27), refresh wave-0 status and the conductor board, tick the shipped cd items, correct phase 7 crm/mail wording and lane C ownership, refresh CLAUDE.md stack section. changelog.yml gains a board-sync step: version monotonicity (error) + lane-tick reminder (warning, visibility-first). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Repair ci/cd so every test suite in the repo runs and reports js-ci: add marketing-ui + encryptor jobs, drop dead exporters job, commit sdk/marketing-ui bun.lock (sdk job died at install), remove continue-on-error from tests. New marketing-api workflow (uv+ruff+ pytest, smoke tests); ruff caught two real bugs (missing BackgroundTasks param, missing find_json_entries import) — fixed. docker/cd matrices rebuilt on real Dockerfiles; media.yml deleted. marketing-ui type errors fixed (vite-env.d.ts, ImportProgress). .gitignore rewritten; ui/dist, mobile/.expo, node_modules untracked. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Add Proxmox deployment plan + ubuntu-deploy script (#94) * Add Proxmox deployment plan, LANE E, and ubuntu-deployment script - plan.txt: new CROSS-CUTTING deployment section for Proxmox homelab (staging node, marketing sites, caddy reverse proxy, provisioning) - parallel execution.txt: new LANE E for infrastructure/deployment - ubuntu-deployment/: one-shot deploy script (Docker, Caddy, web10 node, marketing) + README with VM creation instructions - .gitignore: added .env (proxmox creds) * fix(ci): fetch full history so changelog check can diff against base * chore: add changelog entry for ubuntu-deployment + LANE E * A2: rename mongo.py -> documentdb.py + docker-compose update (#95) Adapter renamed from mongo.py to documentdb.py — the module is backend-agnostic (pymongo speaks to either real Mongo or FerretDB/DocumentDB). All imports, test files, and patch paths updated. Test files renamed to test_documentdb*.py. Docker-compose updated with FerretDB/DocumentDB default, real Mongo as profile. 235 tests green. * E2: marketing deploy — Dockerfile, compose, deploy script (#96) * E2: marketing deploy — Dockerfile, compose, and deploy script - marketing-api/Dockerfile: multi-stage python 3.12 + uv + uvicorn - docker-compose.marketing.yml: standalone compose for marketing-ui + marketing-api - ubuntu-deploy.sh: full marketing service setup (compose copy, path fixup, Caddy proxy with separate RTC subdomain, auto build+start) * Tick E2 in CHANGELOG, plan, and parallel execution * setup wizard + admin config screen (A3/B3/B4) (#97) API: /ready, /setup, /config endpoints; config persistence service; JWT key generation; admin creation UI: 6-step setup wizard; admin config panel for all node settings; auto-detect unconfigured nodes Models: SetupRequest, SetupStatus, ConfigUpdate, NodeConfig schemas * Wave 0: endpoint-level permission-matrix suite (45 tests) (#98) * A2: rename mongo.py -> documentdb.py + docker-compose update Adapter renamed from mongo.py to documentdb.py — the module is backend-agnostic (pymongo speaks to either real Mongo or FerretDB/DocumentDB). All imports, test files, and patch paths updated. Test files renamed to test_documentdb*.py. Docker-compose updated with FerretDB/DocumentDB default, real Mongo as profile. 235 tests green. * wave 0: endpoint-level permission-matrix suite (45 tests) 45 new endpoint tests through FastAPI TestClient covering auth flows, CRUD routes, aggregate, star protection (I3), forged-token rejection (I1), scoped-token enforcement (I5), metering/billing, certify, and system endpoints. 280 total api tests green. Also adds a bare exception handler in main.py that maps legacy Exception('TOKEN') etc. to proper HTTP 401s, a JWT PyJWTError handler for forged/expired tokens, and fixes a models.dotdict -> dotdict bug in documentdb.py. * Add PR-to-dev rule to AGENTS.md * Re-plan lens chatbox LLM backing: BYOK-only, phone-wallet key (D19) (#101) Phase 8 llm-backing item flipped from operator-pays-by-default to bring-your-own-key only: v1 key stays client-side (browser -> provider direct), presets need zero LLM, node-provided inference demoted to a capped operator opt-in. Phase 11 wallet gains an opaque-secrets item: the phone beams the e2e-encrypted LLM key to the apps the user picks. New decisions.md entry D19; CHANGELOG 1.0.41. Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * D20/D21 strategy pivot: creator-first plan, business plan, sales kit, timeline (#102) Refactor plan.txt around the creator proposition (own your audience, no shadow ban by architecture): THE STORY + THE RISE, M0 redefined as "stands on its own" (chronological feed + sort dropdown + the Studio money screen), lens/chatbox cut to later.md, rule-of-100 kill test. New docs: business-plan.md (real numbers, breakeven ~5 creators), outreach.md (sales kit), manifesto.md (fan join page), timeline.md (10-week M0→M2 schedule). D20+D21 in decisions.md; boards, glossary, CLAUDE.md kept true. CHANGELOG 1.0.42–1.0.46. Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Refresh conductor board for D20/D21 pivot + timeline week 0 (1.0.47) (#104) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Spec UI stability plan: e2e suite, feedback loop, ux telemetry (1.0.48) (#105) Expands the thin playwright line in plan.txt into a full browser-e2e item (playwright-in-docker vs the compose stack, ~6-10 smoke journeys across ui/social/marketing-ui), records the marketing-ui zero-test and js-workflow continue-on-error gaps, adds a report-a-bug loop and a privacy-split ux telemetry item, and puts C5/D10/D11 on the lane board. Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * 1.0.48: wave-0 security fixes — CORS, bare excepts, provider URL SSRF guard (#107) * 1.0.48: wave-0 security fixes — CORS, bare excepts, provider URL SSRF guard * fix: preserve port/path in provider URL validation; simplify twilio except * D4: web10-social data layer — conventions-schema stack for M0 (#108) * D4: web10-social data layer — conventions-schema stack for M0 killer app slice - src/data/: typed modules for posts, feed, profile, contacts, dms, comments, reactions, media upload via API presigned URLs - src/data/wapi.ts: thin typed fetch wrapper over legacy wapi.js - Web10SocialAdapter wired with 30+ new data-layer methods (backward compat) - SMR terms extended for profile, contacts, inbox, comments, reactions, media - 55 new vitest tests (227 total, all green) - Screens deferred to D2.5 post-B2.5 tokens * fix: remove stray leftover lines from D4 lane tick in parallel execution.txt * 1.0.51: CLAUDE.md hand-off convention — agents end merges with next lane item + paste-ready kickoff (#110) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * B2.5: ui makeover — rectangles-npm out, Tailwind CSS + design tokens in (#109) * D22: record stack pick — Tailwind CSS + shadcn/ui replaces rectangles-npm * B2.5: ui makeover — rectangles-npm out, Tailwind CSS + design tokens in - D22 recorded in decisions.md (Tailwind CSS + shadcn/ui pick) - rectangles-npm and react-bulma-components dropped from package.json - Design token layer: ui/src/styles/tokens.css (color, type, spacing, radius, dark mode, CSS custom properties for creator theming) - All ui/ screens restyled on Tailwind: login/signup/forgot, contracts, requests, settings, setup wizard, config page - Shared components (SideBar, TopBar, Icon, Branding) rewritten - Card pattern replaces Bulma cards; form inputs use consistent rounded inputs with icon prefixes - Old rectangles CSS (index.css, Components.css, bulma.min.css) removed - 43/43 vitest tests green * fix: CredentialPage stale rectangles import, CHANGELOG version order, Docker build type errors - Remove leftover 'import { R } from rectangles-npm' in CredentialPage.tsx - Swap CHANGELOG versions: B2.5 entry is now 1.0.49 (unique highest), dev plan entry demoted to 1.0.48 — fixes changelog CI check - Add vite-env.d.ts with ambient module declarations for CSS imports from node_modules (react-phone-input-2, @chatscope) - Fix @import path for tokens.css in index.css (./styles/tokens.css) - MockMedia: replace missing asset imports with string paths - Update parallel execution.txt B2.5 tick to 1.0.49 * outreach batch 1: 20-slot prospect list template + opener templates (#106) * outreach batch 1 template: 20-slot prospect list with opener templates, sourcing queries, 3 pre-fill candidates * outreach batch 1 enriched: 5 Gemini pre-fills, 15 template slots, 3 excluded out-of-band * outreach batch 1: 20 API-verified prospects via YouTube Data API - outreach_sourcer.py: YouTube API v3 sourcer with burn validation, quota tracking, false-positive filtering (1,087u used, 11% free tier) - 20 prospects fully enriched: verified subs, gap %, burn events with URLs, M0 fit assessment, personalized openers - 5 prospects have biz emails (TSO_Sage, Shijo p Abraham, 8sxope, Monkey Economics, Spooky Scary Socialist) - 6 false positives filtered (gaming shadowbans, advice videos, third-party references) - segment split: 3 right-coded, 2 left-coded, 15 wildcard * outreach: fix M0 fit logic + rebuild batch 1 list - M0 fit now uses signal-based scoring (YES/POOR/PARTIAL) instead of broken binary check that classified everything as PARTIAL - 10 YES fits (recipes, crafts, tutorials, fashion, finance, podcasts, nutrition, fitness), 4 PARTIAL, 3 POOR (animation, cinematic, vlogs) - 2 slots open for right-coded M0-YES prospects (need X/Twitter search) - outreach_sourcer.py: added M0_YES_SIGNALS/M0_POOR_SIGNALS scoring * chore: add raw full outreach prospects output * D2.5: web10-social UI makeover — tailwind v4 + Radix, M0 screens on D4 data layer (1.0.51) (#111) --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
outreach_batch1.md — 20-slot prospect list (7 right-coded, 7 left-coded, 6 wildcard) with:
search engines rate-limited automated access; founder fills remaining 17 names from browser search, then agent fleet enriches gap %, contact routes, and finalizes openers.
CHANGELOG: 1.0.48
parallel execution.txt: ws4 ticked [✓ 1.0.48]