01-projects/printables-product

Scribble Works fresh-eyes audit synthesis

2026-09-01·status: live
scribble-worksaudit

Scribble Works fresh-eyes audit synthesis (2026-09-01)

Four zero-context audits (site, printed games, codebase, strategy docs). Excluded here because a fix is in flight (PR #12): production serving HTML instead of PDF, and the 3 games missing on R2.

(a) Executive verdict

  1. The shelf, tray, and brand work; the paper does not yet earn a second print. Only 4 of 16 games would beat a free worksheet (game audit §5).
  2. Every game is tagged 3-4; six require 5-6 decoding skills, and there is nothing at all for ages 7-10 despite a stated 3-10 range.
  3. The pipeline has no publication gate: pending-review games ship, no npm test exists, and 14 of 16 games cannot be regenerated from the repo.
  4. The strategy stack (credits, engine, paid week-view) rests on n=1 (Michelle) with zero instrumentation; the kill criterion cannot be measured today.
  5. Even after PR #12, playset download will still fail from the apex origin: R2 CORS allows only *.scribble-works.pages.dev subdomains (codebase F4).

(b) Ranked targets (leverage toward prints, comes back, pays)

# What Evidence Size Lane Who
1 Add apex scribble-works.pages.dev (and scribbleworks.rdco.dev) to R2 CORS; smoke-test Access-Control-Allow-Origin per deploy Codebase F4: apex origin returns "(no Access-Control-* header)"; playset fetch is cross-origin S engineering Ray builds (CORS write is a production change; announce first)
2 First-party download counter + 4-household hand-delivery print test (pass bar: 2 of 4 print again in 7 days) Strategy 1.7: "Zero instrumentation items. There is no dashboard"; §2 cheapest experiment M growth Ray builds counter; founder runs cohort
3 Filter loadGames() to status === 'live'; enum-validate status Codebase F1: 3 pending-review games emitted to dist and addable to tray S engineering Ray builds
4 Honest age bands: make 5_6 primary on the six decoding games, retitle hero, add age band to recommended-playset data shape, two-tap age filter Game audit #6 (six games named); site F5 "all 16 cards show Ages 3-4"; strategy 1.5 M product Ray builds
5 One footer strip on every page: title, Scribble Works, age band, answers line + one adult prompt; kill "3 • Pack 2" leftovers Game audit #1 (13 of 16 games), #2 (5 games with no answer anywhere); site F9 M design Ray builds
6 Fix the passive and unusable pages: write-the-word line on Build the Word / Construye la palabra; 1-inch dashed trace targets, model + 2 trace + 1 blank on all tracing pages Game audit #3-#5, worst-three list; site F8 "child has nothing to do" M design Ray builds
7 Defer item 23 (engine + Unified Billing + credits + $5 flip) and item 18 (portal / paid week-view); run Customize as concierge over iMessage Strategy §5; 1.4: paid plan needs 30 games/kid/week vs 14-16 in catalog; 1.8 build order inverted L (avoided) product Founder call
8 Hide "Log in / Create account" header CTA; replace FAQ placeholder with four real answers (Letter/A4, B&W, licence, free now); drop "coming soon" links Site F3, F4: strongest CTA on every page leads to "Accounts are on the way" S product Ray builds
9 Single-game "print this one now" path + the promised free sample on the homepage Site §4 #2; homepage step 3 "A free sample page will live here soon" S product Ray builds
10 npm test that owns publication truth (meta schema, slug regex, pdfinfo Pages==1 and 612x792, pdffonts embedded, null-pdfUrl excluded from tray) + GitHub Actions on PR Codebase F5, F6, F7, F11: npm test -> "Missing script"; contract "holds today by luck" M engineering Ray builds
11 Mobile: blank category thumbnails at 390px; verify nav at 375px on a device Site F6 (Word Game, Count & Tally blank); strategy queue item D "reportedly not VISIBLE at 375px" S engineering Ray builds
12 Track game source in repo; render PDF + previews in prebuild with pinned Chromium and bundled fonts Codebase F9: HTML exists for 2 of 16; fonts are macOS ChalkboardSE; Chrome path hardcoded L engineering Ray builds
13 Re-aim P1 production at 5-8 and the empty lanes: scissors, addition/ten-frames, logic, two-player, 7-10 Game audit §4: "Ages 7-10 (zero pages)"; five named games; strategy rank 2 L product Ray builds; founder picks the age bias
14 Written charter resolution: status open -> accepted/amended; define "launched"; settle birthday vs age band before portal work Strategy 1.1, 1.2, 1.11: charter status: open, ruling 11 says age band, charter says birthday S product Founder call
15 Pre-publish rendered-PNG checklist + fix machine tells: mama glyph (2 pages), boat clip, orphan "box.", icon cap of 2 appearances; homepage card/blurb mismatch; empty "What you'll need"/"Themes" Game audit #8, #9; site F7, F10, F13 S design Ray builds

(c) Contradictions between the audits

(d) Strategy-audit claims to verify before relaying

Files under ~/rdco-vault/01-projects/printables-product/ (charter = [[2026-08-31-studio-charter]], rulings = [[2026-08-31-product-model-rulings]], playsets = [[2026-09-01-recommended-playsets-spec]], engine = [[2026-09-01-engine-build-spec]], taxonomy = [[2026-08-31-marketplace-taxonomy-proposal]], queue = ~/.claude/state/studio/queue.md).

Confirmed by grep during this synthesis (line numbers as of today):

Still unchecked, grep before quoting: