01-projects/mammoth-growth/2026-05-13-ai-demo-day

02 starter kit scope

2026-05-10·project·status: scoping-v1
mammoth-growthdemoray-starter-kitscoping

Ray-Starter-Kit — Repo Skeleton Scope (v1)

Scoping doc for the parting-gift kit Ben hands off at the Mammoth Growth AI Demo Day on Wed 2026-05-13. Build is Mon-Tue. This doc names what ships, where each piece comes from, what has to be sanitized, and what gets cut if time runs short.

Recommended repo name + URL

Three candidates considered:

Candidate Pro Con
ray-starter-kit Direct, names the agent, matches the prep-plan slot Reads like a one-person personality cult unless you know Ray-the-COO is the archetype, not the brand
coo-in-a-box Names the role, not the personality. Travels better — the kit isn't about Ray, it's about giving the recipient their own COO Slightly meme-y; doesn't lean into the harness-engineering vocabulary
harness-starter Honest to the architecture (it's the harness, not the model). Aligns with Osmani / Tobi / Avedissian thesis cluster Ben has been seeding Won't mean anything to non-readers of that thread; needs the README to do the work

Pick: coo-in-a-box with ray-starter-kit as a redirect.

Rationale: the parting-gift framing is "here's the recipe so you can build YOUR version." Ray is one instantiation. Naming the kit after Ray confuses the gift (do they get Ray, or do they get to build their own?). coo-in-a-box makes the gift legible without prior context. The README leans on the harness-engineering vocabulary for depth. ray-starter-kit stays as a memorable-to-Ben handle and a redirect for any URL that gets shared from his slides.

Org placement: github.com/RayDataCo/coo-in-a-box. Public. Personal repo (github.com/benwilson/...) reads as a side-project; org placement signals this is a repeated investment for RDCO and gives a clean home if Ray-as-a-Service becomes a real bet.

Top-level repo structure

coo-in-a-box/
├── README.md                      # The "what is this and why" — distilled from the two concept docs
├── LICENSE                        # MIT (permissive — gift, not a moat)
├── .gitignore                     # Standard (state files, secrets, .env, .DS_Store)
├── INSTALL.md                     # 30-min Day-1 installer walkthrough
├── ONBOARDING.md                  # The 6-week ratchet doc
├── docs/
│   ├── architecture.md            # The 8-layer map (distilled from ray-architecture-introspection)
│   ├── harness-vs-personal-fit.md # The two-layer moat thesis (distilled from harness-moat doc)
│   ├── unhobbling-moments.md      # The 13 inflection points + why each matters
│   └── composability-chains.md    # The 5 worked-example chains
├── identity/
│   ├── SOUL.template.md           # Sanitized SOUL with [[ROLE]] [[VOICE]] [[CHANNELS]] placeholders
│   ├── CLAUDE.template.md         # The 4 universal hard rules + commentary
│   └── memory/
│       ├── MEMORY.md              # Empty index (the index pattern, no entries)
│       └── README.md              # How memory files work + when to write one
├── vault/                         # Folder scaffold the operator clones to ~/their-vault/
│   ├── 00-inbox/.gitkeep
│   ├── 01-projects/.gitkeep
│   ├── 02-sops/.gitkeep
│   ├── 03-contacts/README.md
│   ├── 04-finance/README.md
│   ├── 08-tooling/README.md
│   ├── 05-meetings/.gitkeep
│   ├── 06-reference/
│   │   ├── README.md
│   │   ├── concepts/.gitkeep
│   │   └── research/.gitkeep
│   ├── 07-archive/.gitkeep
│   ├── 09-bet-stacks/README.md
│   ├── 10-source-material/.gitkeep
│   ├── decisions.md               # Empty append-only template
│   ├── log.md                     # Empty append-only template
│   └── README.md                  # Vault discipline + folder semantics
├── skills/                        # 12 sanitized skills (the unhobbling set)
│   ├── README.md                  # How skills work + install instructions
│   ├── check-board/SKILL.md
│   ├── process-inbox/SKILL.md
│   ├── process-newsletter/SKILL.md
│   ├── morning-prep/SKILL.md
│   ├── improve/SKILL.md
│   ├── skillify/SKILL.md
│   ├── self-review/SKILL.md
│   ├── curiosity/SKILL.md
│   ├── deep-research/SKILL.md
│   ├── log-bet-decision/SKILL.md
│   ├── vault-health/SKILL.md
│   └── sync-contacts/SKILL.md
├── scripts/
│   ├── audit-vault-outputs.py     # Renamed/generalized from audit-newsletter-outputs.py
│   ├── scheduled-jobs.template.txt # Cron schedule with personal cadences swapped for placeholders
│   └── README.md                  # When to use deterministic scripts vs LLM skills
├── channels/
│   ├── README.md                  # Bring-your-own-channel intro
│   ├── imessage-setup.md          # Install + LaunchAgent + tmux, sourced from project_channels_agent_setup
│   └── discord-setup.md           # Same pattern, Discord variant
└── handout.pdf                    # Optional 1-page printable for the demo room (cut candidate)

Per-file source map

Repo path Source on Ben's Mac Sanitization needed Est. lift
README.md NEW — distilled from 06-reference/concepts/2026-05-10-harness-moat-two-layers-portability.md + 2026-05-10-ray-architecture-introspection.md Drop RDCO-internal callouts; lead with the two-layer thesis + 8-layer map; "what you get vs what you earn" framing 1.5h
LICENSE NEW (MIT) None 5min
.gitignore Compose from standard None 10min
INSTALL.md NEW None — write generic 1h
ONBOARDING.md NEW (the 6-week ratchet — see outline below) None 1.5h
docs/architecture.md ~/rdco-vault/06-reference/concepts/2026-05-10-ray-architecture-introspection.md HEAVY — strip "Why this is in vault / Mapping against RDCO" sections; strip Ben-named cron times; keep the 8 layers + 13 unhobbling moments + 5 composability chains generic 1h
docs/harness-vs-personal-fit.md ~/rdco-vault/06-reference/concepts/2026-05-10-harness-moat-two-layers-portability.md HEAVY — same shape; strip founder-specific examples (feedback_calibrate_overconfidence etc.) but keep the two-layer/Layer-1.5 model and the productizable read 45min
docs/unhobbling-moments.md Sub-section of architecture doc Trivial extract 20min
docs/composability-chains.md Sub-section of architecture doc Trivial extract 20min
identity/SOUL.template.md ~/SOUL.md LIGHT — already clean of family/MSA refs. Convert "Ray Data Co" → [[COMPANY]], "founder" → [[OPERATOR]], channel mentions → [[PRIMARY_CHANNEL]]/[[SECONDARY_CHANNEL]], swap "Mac Mini" for [[HOST_MACHINE]] 30min
identity/CLAUDE.template.md ~/CLAUDE.md LIGHT — keep the 4 hard rules verbatim (they're universal). Strip the ~/rdco-vault/06-reference/... wikilink in rule #4 (replace with a generic citation note). Strip ben@raydata.co and the founder-name reference in rule #2. Strip "Mammoth Growth" if it appears (it doesn't currently) 30min
identity/memory/MEMORY.md ~/.claude/projects/-Users-ray/memory/MEMORY.md (structure only) TRIVIAL — keep ONLY the index format header + 1-2 dummy entries showing the pattern. Zero actual memory files copied 15min
identity/memory/README.md NEW None 30min
vault/*/README.md (per-folder) NEW (referencing existing ~/rdco-vault/<folder>/README.md patterns where they exist) LIGHT — convert any rdco-specific examples to generic 1h total
vault/decisions.md, vault/log.md NEW (empty templates with header pattern) None 10min
skills/README.md NEW None 30min
skills/check-board/SKILL.md ~/.claude/skills/check-board/SKILL.md (65 lines, 6 personal refs) LIGHT — replace Notion data_source_id with [[YOUR_BOARD_DATA_SOURCE_ID]]; strip "Ray Data Co" from intro line 15min
skills/process-inbox/SKILL.md ~/.claude/skills/process-inbox/SKILL.md (41 lines, 1 personal ref) TRIVIAL 10min
skills/process-newsletter/SKILL.md ~/.claude/skills/process-newsletter/SKILL.md (254 lines, 25 personal refs) HEAVY — strip the ~/rdco-vault/01-projects/process-newsletter/README.md whitelist dependency (replace with whitelist.example.yml in repo); strip stratechery / specific-sender examples; keep the discovery/batch/watch mode shapes generic 45min
skills/morning-prep/SKILL.md ~/.claude/skills/morning-prep/SKILL.md (173 lines, 17 personal refs) HEAVY — strip all hq.raydata.co URLs (replace with [[YOUR_HQ_HOST]]); strip the dated example outputs (MAC video review etc.); strip the raydata.co domain check — replace with [[YOUR_INTERNAL_DOMAINS]] 45min
skills/improve/SKILL.md ~/.claude/skills/improve/SKILL.md (185 lines, 12 personal refs) MEDIUM — strip ~/rdco-vault/01-projects/skill-improvements/ and 01-projects/self-review/review-log.md paths (replace with [[VAULT]]/01-projects/...); strip the wikilink to Garry Tan reference note (it's not in the kit) 30min
skills/skillify/SKILL.md ~/.claude/skills/skillify/SKILL.md (5.4KB, 3 personal refs) LIGHT 15min
skills/self-review/SKILL.md ~/.claude/skills/self-review/SKILL.md (156 lines, 2 personal refs) LIGHT 20min
skills/curiosity/SKILL.md ~/.claude/skills/curiosity/SKILL.md (89 lines, 10 personal refs) MEDIUM — strip Notion Research Backlog DB id (replace with placeholder); strip vault-specific cluster references 25min
skills/deep-research/SKILL.md ~/.claude/skills/deep-research/SKILL.md (151 lines, 12 personal refs) MEDIUM — same shape as curiosity; strip 06-reference/research/ hardcoded path (replace with [[VAULT]]/06-reference/research/) 30min
skills/log-bet-decision/SKILL.md ~/.claude/skills/log-bet-decision/SKILL.md (120 lines, 10 personal refs) MEDIUM — strip 09-bet-stacks/ references with placeholders; strip Squarely / MAC examples 25min
skills/vault-health/SKILL.md ~/.claude/skills/vault-health/SKILL.md (56 lines, 1 personal ref) TRIVIAL 15min
skills/sync-contacts/SKILL.md ~/.claude/skills/sync-contacts/SKILL.md (240 lines, 35 personal refs) HEAVIEST — strip raydata.co and mammothgrowth.com internal-domain hardcoded values (replace with placeholder); strip ben@raydata.co; strip Notion Contact Candidates DB id; strip ~/rdco-vault/03-contacts/ paths; replace 01-projects/process-newsletter/README.md reference 1h
scripts/audit-vault-outputs.py ~/.claude/scripts/audit-newsletter-outputs.py (25KB) MEDIUM — generalize from "newsletter" to "vault outputs"; rename invariant labels (I8 currently looks for ## Mapping against Ray Data Co — make it look for ## Mapping against [[YOUR_ORG]] configurable via a --mapping-header flag); generalize the venv shebang to #!/usr/bin/env python3; document the 13-invariant pattern 1.5h
scripts/scheduled-jobs.template.txt ~/.claude/scripts/scheduled-jobs.txt (51 lines) LIGHT — comment out cadences that depend on operator preferences (6:30am etc.) and add a "// recommended starting cadence" header per line; strip the check-public-ip-drift.sh line (Stripe-specific); strip /finance-pulse line (the kit doesn't ship Monarch integration) 15min
channels/imessage-setup.md ~/.claude/projects/-Users-ray/memory/project_channels_agent_setup.md + the iMessage MCP install instructions MEDIUM — strip /Users/ray/ paths; strip Ben's specific tmux session name; document the bring-your-own iCloud + iPhone-pairing requirement; document the 1Password wrapper pattern (per memory: no .env files) 45min
channels/discord-setup.md Same memory + Discord MCP install MEDIUM — same shape 45min
channels/README.md NEW None 20min
handout.pdf NEW None 1h (CUT CANDIDATE)

Aggregate: ~14 hours pre-cut. With the v2-deferred items removed (see "Recommended cuts" below), v1 lands at ~10.5 hours. Fits the 8-12 hour budget.

Sanitization risk inventory

Per file, what personal data lives in the source that MUST be stripped before public push:

File Risk class Specifics
~/SOUL.md LOW Already clean of family names. Mentions "Ray Data Co" 3x, "Mac Mini" 1x, "founder" repeatedly. Replace with placeholders. No PII. No Mammoth-Growth.
~/CLAUDE.md LOW Mentions ben@raydata.co once (rule #2 example needs generalization). One wikilink to a Thariq vault note that doesn't ship. No family, no client.
Memory MEMORY.md index NONE (only index format ships, no entries) The index references feedback_brief_imessage_link_to_hq.md which mentions "wife teases founder" — that file does NOT ship; only the index PATTERN ships. Confirm zero feedback_*.md files copy through
12 starter skills MEDIUM-HIGH on a few Hardcoded paths: ~/rdco-vault/, hq.raydata.co, ben@raydata.co, raydata.co, mammothgrowth.com (in sync-contacts). Hardcoded MCP IDs: Notion task-board data source, Notion Research Backlog DB, Notion Contact Candidates DB. Hardcoded sender examples: stratechery, the K/F whitelist file in 01-projects/process-newsletter/README.md. Recent dated examples: MAC video review, Squarely, etc.
audit-newsletter-outputs.py LOW-MEDIUM Shebang points at /Users/ray/.claude/scripts/graph-db-venv/bin/python3 — must generalize. Invariant I8 hardcodes "Mapping against Ray Data Co" string — must parametrize. State output path hardcodes ~/.claude/state/ — must use a --state-dir flag. No PII in script logic itself
scheduled-jobs.txt LOW Personal cadences (6:30am morning brief reflects Ben's wake time). The check-public-ip-drift.sh line is Stripe-allowlist-specific; cut. The /finance-pulse line points at Monarch Money integration not in kit; cut. No PII
project_channels_agent_setup.md LOW /Users/ray/ paths, tmux session name claude-channels, Mac mini hostname pattern. Generalize all paths. The 1Password wrapper pattern is generic and should be highlighted, not hidden
Vault folder READMEs NONE NEW writes, no source to sanitize
Concept docs (architecture, harness-moat) MEDIUM Each opens with "Why this is in the vault" + "Mapping against Ray Data Co" sections that are RDCO-internal. The body is generally publishable but the framing sections must be rewritten as "How to read this doc" + "How to apply to your org". Strip founder-quote-block ("So is operating the only moat...") which references his specific question. Strip closed-source vendor names if any (Monarch Money mentioned in architecture; that line should be generalized to "your finance system MCP")

Sanity-check pass before publish: run grep -rE "(rdco-vault\|raydata\.co\|mammothgrowth\|ben@\|/Users/ray/\|hq\.raydata\|stratechery\|squarely\|Sophia\|wife\|Mammoth)" coo-in-a-box/ on the staged repo. Should return zero hits. Add this to INSTALL.md as a final pre-publish gate so future updates don't drift.

6-week onboarding ratchet — proposed outline

This is ONBOARDING.md. NEW content. The pitch in the harness-moat doc says: "Compress the calibration period from 6 months to 6 weeks via guided onboarding." This file is the guide.

Day 1 — Minimum-viable Ray (target: 60 min)

Day 2-7 — First crons + first vault entries (target: 30 min/day)

Week 2 — First /improve cycle (target: 1-2 hr total over the week)

Week 3-4 — Composability emerges (target: ratchet runs itself)

Week 5-6 — Personal-fit thickens (target: it feels like YOUR Ray)

What to expect after week 6

Estimated total build time

Phase Hours
Repo scaffold + LICENSE + .gitignore + INSTALL.md skeleton 1.5h
README + 4 docs (architecture, harness-moat, unhobbling, composability) sanitized from concepts 3.5h
SOUL + CLAUDE templates + memory index + memory README 1.25h
Vault scaffold + per-folder READMEs + decisions/log templates 1.25h
12 sanitized skills (varies wildly per skill — sync-contacts is the long pole at 1h) 5h
audit script generalization 1.5h
Cron template 0.25h
Channel install docs (iMessage + Discord + intro) 1.75h
ONBOARDING.md (the 6-week ratchet) 1.5h
Final sanitization gate (grep pass + spot-check) + push to GitHub 0.5h
TOTAL v1 ~18h pre-cut

That's over budget. Cuts below bring it to ~10-11h.

Recommended cuts if time runs short

Order of cut, easiest to hardest:

  1. handout.pdf — defer to v2. The slide deck has the URL; a paper handout is duplicative for a 10-min demo. Saves 1h.
  2. docs/unhobbling-moments.md + docs/composability-chains.md as separate files — collapse into docs/architecture.md as sub-sections. Saves 0.5h.
  3. sync-contacts skill — 1h sanitization for the longest skill. It also requires Gmail + Calendar MCPs. Defer to v2. Saves 1h. (Update: keep it. It's the strongest "this is what autonomous looks like" demo. Cut something else.)
  4. process-newsletter skill — 45min sanitization + depends on a whitelist file the kit doesn't fully ship. Defer to v2 with a note "shipping in v0.2 — needs whitelist tooling". Saves 1.25h including the whitelist file. (Recommend cutting this instead of sync-contacts — process-newsletter has more dependencies.)
  5. audit-vault-outputs.py generalization — ship as-is with a "rename + edit invariants for your org" header. The 13-invariant PATTERN is the gift; the implementation can stay opinionated. Saves 0.75h.
  6. Per-folder vault READMEs — ship 03-contacts, 04-finance, 06-reference, 09-bet-stacks only (the 4 with structural conventions). Others get .gitkeep. Saves 0.5h.
  7. Channel install detail — link to MCP server READMEs upstream rather than re-document install steps. Keep the LaunchAgent + tmux pattern doc. Saves 0.75h.

Applying cuts 1, 2, 4, 5, 6, 7: ~5h saved. v1 lands at ~13h. With cut 3 (sync-contacts deferred): 14h-1h = 12h. Inside budget.

Recommended v1 cut set: 1, 2, 4, 5, 6, 7 (keep sync-contacts; it's a strong demo). Lands at ~13h, slightly over budget but achievable across two days.

Aggressive v1 cut set: 1, 2, 4, 5, 6, 7, plus collapse INSTALL.md into README.md and ship audit script verbatim with rename only. Lands at ~10h.

Open questions for founder review

  1. Repo namecoo-in-a-box (recommended), ray-starter-kit, harness-starter, or something else?
  2. Visibility — Public GitHub repo (recommended for shareability + SEO + future Ray-as-a-Service signal) or unlisted gist (simpler, no public-facing accountability if v1 is rough)?
  3. Landing page — Should raydata.co/coo-in-a-box (or /starter) point at this with a hosted README + GitHub link? Recommended yes for v2; v1 can stay GitHub-only since the demo audience can scan a QR code to the repo directly.
  4. process-newsletter in v1 or v2? — Recommend v2. Heavy sanitization, depends on whitelist tooling that's unscoped. The 11 other skills cover the demo arc.
  5. Audit script — generalize or ship-as-is with rename? — Recommend ship-as-is with rename + a short "fork and customize the invariants" header. The pattern is the gift. Generalizing it to the point of being framework-agnostic loses the "concrete worked example" value.
  6. Deterministic-script ecosystem — Recommend ship ONLY audit-vault-outputs.py + scheduled-jobs.template.txt in v1. The other 30 scripts (extract-key-frames, vtt-to-text, finance-venv, etc.) are bet-specific. Document them as "RDCO ships these in our setup; here's the pattern, you'll write your own as needs emerge." Saves significant scope.
  7. MEMORY.md template — Ship the index format only (no actual feedback files), or ship 2-3 sample feedback files showing the shape ("feedback_example_voice.md", "feedback_example_decision_pattern.md")? Recommend 2-3 anonymized examples. Pure-empty index is hard to learn from.
  8. License — MIT recommended (permissive gift). Anything else worth considering? Apache-2.0 if patent concerns; GPL if RDCO wants any modifications to come back upstream (probably not the gift vibe).

Status