Printables step 1: scope, tech spec, and the business sniff test
Vault copy of the HQ decision page published 2026-08-30. Three decisions open with the founder: brand call, step-1 scope, kill-criteria numbers. Two are cheap to reverse; the brand call has one option (the founder's own name) that is not.
What exists already
Two packs built and critic-gated on 2026-08-30: a 6-page first pack (critic round-3 PASS, printed) and a 7-page bilingual early-reading pack (4 review rounds, proofs sent, print gated on founder go). The generation loop is real, not a plan. The wife marked up the first printed pack and returned photos; that feedback channel is real but one cycle old and is not unique to us. The household is a live test user.
1. The ladder (settled, founder ruling 2026-08-30)
Reproduced from the printables README for orientation. Not up for debate.
- Static catalog, engine local - comfortable front door. Home library feeds it. This memo.
- Engine on the website: just-in-time customization - the magic moment.
- Model Context Protocol (MCP) and agentic access - discovery route; the agentic-economy bet.
- Scheduled delivery - the sticky lever.
- Turnkey end-to-end service - full trust.
Founder's logic: this is a consumer trust curve, not our distribution cost. Render profiles (ink-aware output) are core engine architecture because end users' printers vary.
2. Step-1 scope proposal
Catalog opens with 12 to 15 activities. Twelve is roughly where a visitor reads the page as a catalog rather than a personal blog; fifteen is about the ceiling on what the home loop can produce and critic-gate before the first fall holiday deadline.
Opening set:
- M silabas arc (ma me mi mo mu, plus word-building into mama / mapa / mono). Built inside the bilingual pack; needs splitting into standalone catalog entries.
- P and S silaba families. Next two in the canonical Spanish teaching order (M, P, S, L, T), source-checked during the v2 build.
- English consonant-vowel-consonant (CVC) arc. Built. Deliberately not a translation of the Spanish pages.
- Pre-writing strokes. Vertical, horizontal, circle, traced big and thick. The research note is blunt that this belongs before letter tracing developmentally, and v1 was a half-step early.
- Two fall holiday sets (Halloween, Thanksgiving). Seasonal search demand is the one free discovery channel available to a new site; the pre-build calendar puts these at early October and early November.
How it lives and grows:
- Static Astro site. Catalog pages, PDF downloads, nothing dynamic.
- Engine stays local. No server-side generation at step 1; that is what makes rung 2 a distinct rung.
- Cadence: assume 2 to 3 new activities per week. This is a projection, not an observed rate. Thirteen pages came out of the home loop in a single day, but one day is not a cadence. The sizing, the schedule estimate, and the subscription argument all rest on this number holding across weeks it has not been tested across. It is the softest number in this memo.
Scope risk: splitting existing pack pages into standalone catalog entries is not free. Each needs its own metadata, thumbnail, and re-render. Budget it as real work, not as "we already have it."
3. Tech spec (step 1 only)
- Astro on Cloudflare Pages, same stack as sc.raydata.co. No new infrastructure, no new bill.
- Catalog generated from the library's
meta.yamlfiles. Existing tag axes (age_grade,activity_types,interests,holiday,skills,language) become site navigation directly. Twinkl and Education.com both organize age-band first then skill, the same two-axis shape already landed on independently. Dissenting example: 123 Homeschool 4 Me organizes by themed pack rather than single-sheet taxonomy, so two-axis is the majority shape among sites checked, not universal. - PDFs served from Cloudflare R2, not committed to the repo.
- Local engine publishes through a worktree rail, same pattern as HQ pushes, so a publish never disturbs a working tree.
The step-2 seam not to paint over
Two things must be true in step-1 metadata or rung 2 becomes a rewrite:
- Stable activity IDs. Every catalog entry gets an identifier that survives re-renders. Just-in-time customization means "generate me this activity with my child's name," and this has to be addressable.
- Template and parameters stored separately. Metadata records the template (format and mechanics) apart from parameters (theme, names, language, letter set). The founder's templates-times-themes insight written into the schema. Do it now and rung 2 extends the catalog schema instead of replacing it.
Engine-level TODO, not a step-1 blocker: render profiles (full-color, accents, pure black-and-white). Step 1 can ship one profile and add the rest before any outside household prints at scale.
4. Business sniff test
Marginal cost is effectively zero. Generation runs on a machine already on. Pages and R2 for a catalog this size should land in the pennies-per-month range. That is an unpriced estimate, not a rate check, and it is the one number here with no source behind it. The only real cost is founder attention, which is why section 5 exists.
Competitor pricing
Data quality warning. Every figure below is search-result-snippet level, NOT live-pricing-page verified. Twinkl, Education.com and Etsy all render pricing through JavaScript and returned empty bodies or HTTP 403 to automated fetches; no browser session was available. URLs are real and are where the figures came from, but none were read off the vendor's live pricing page. Right order of magnitude, not quotable prices. Confirm in a browser before any of this informs a price tag.
| Competitor | Reported price | Source |
|---|---|---|
| Twinkl (US individual) | ~$9-10/mo; ~$89.98/yr. The $9-vs-$10 discrepancy appears across two Twinkl pages and is unresolved. School pricing quote-based, no published figure. | https://twinkl.zendesk.com/hc/en-us/articles/19162663770525-How-Much-Is-a-Twinkl-Subscription ; https://www.twinkl.com/blog/twinkl-review-is-a-twinkl-subscription-worth-it-usa |
| Education.com Premium | ~$15.99/mo standard; |
https://techjury.net/online-courses/education-com/ ; https://slickdeals.net/f/18499141-education-com-annual-premium-membership-unlimited-access-to-pre-k-through-8th-grade-lesson-plans-worksheets-activites-games-more-47-95-3-99-mo |
| Etsy printable packs | ~$1-5 single sheets/mini sets; ~$25-50 mid-size bundles; $100-260 mega-bundles, nearly always shown as a discount off a crossed-out price. One listing price surfaced in search results at $3.81 (preschool-to-kindergarten music worksheet bundle), unverified against the live listing. | https://www.etsy.com/listing/1398112932/music-worksheet-bundle-preschool-to (other listing prices uncaptured; every Etsy listing fetch returned HTTP 403) |
| Teachers Pay Teachers | Individual preschool items commonly $1.25-3.25. Bundles ~$25 against theatrical "value" claims. | https://www.teacherspayteachers.com/browse/elementary/preschool (aggregate from browse snippets; no individual listing verified) |
| Bilingual English/Spanish | No dominant branded competitor surfaced. Scattered individual sellers on Etsy and Teachers Pay Teachers with narrow catalogs; no price point captured for any. Free side: Colorin Colorado is the clearest institutional resource, covering literacy guidance rather than a printable curriculum. | https://www.teacherspayteachers.com/store/bilingual-beginnings-spanish-printable ; https://www.etsy.com/listing/1512532245/spanish-printable-preschool-worksheets ; https://www.colorincolorado.org/ |
Landscape. Two tiers: subscription platforms at $90-120/yr, and marketplace one-offs at $1-5 a sheet with bundles at $25-50. Marketplace list prices are visibly anchored and near-permanently "on sale," so real transaction prices are lower than they look.
On the bilingual wedge. No dominant bilingual competitor surfaced, consistent with the wedge thesis. Caution: absence of evidence from a snippet-level search is weak evidence of absence. A well-established bilingual competitor may exist and simply not have ranked. What can be said honestly is that the large English-language incumbents do not visibly serve this niche, and that the niche's paid side appears to be individual sellers, not platforms.
Price options (no commitment)
| Option | Shape | The catch |
|---|---|---|
| Free catalog, paid packs | Everything browsable, a meaningful slice free; themed and seasonal bundles priced individually. | Every sale is fresh persuasion, no recurring revenue. But it is the only model that works with zero audience on day one, because the free tier is the discovery mechanism. |
| Subscription | Recurring access to the whole catalog, as the incumbents sell. | A subscription promises continuous new material. At 2-3 activities/week from a home loop that promise is fragile the first busy month, and this argument inherits the cadence uncertainty above (the rate is a projection off one day). Also needs an audience before a price. |
| Neither yet | Ship free at step 1 and instrument it. | Zero revenue, no willingness-to-pay evidence. Buys a clean read on whether anyone outside the house shows up at all. |
RECOMMENDATION (not a decision taken): ship step 1 entirely free and instrumented; do not set a price yet. The step-1 question is discovery, not monetization, and a price on day one would confound the only signal step 1 can produce. Revisit pricing when there is a non-zero number in the kill-criteria dashboard, and revisit as free-catalog-plus-paid-packs rather than subscription, because the production cadence cannot honestly underwrite a subscription promise yet.
The honest risk
Discovery is the whole problem. Not production, not quality, not cost. A new static site with no audience, backlinks, or ad budget competes for search terms against sites with years of accumulated authority. Being right about the bilingual gap does not get you past it.
The ladder mitigates this and the founder's ordering already accounts for it. Rung 1 builds the surface search can index at all. Rung 3 (MCP and agentic access) is explicitly a discovery route in his framing: if parents increasingly ask an assistant for a worksheet rather than searching, being reachable by that assistant is distribution that does not require out-competing incumbents on page rank. That is a bet on how discovery changes, not a guarantee.
Second risk, arguably stronger: the market largely clears at zero. Education.com gives away three downloads a month, 123 Homeschool 4 Me gives away whole themed packs, and free supply in this category is effectively unbounded. "Search ranking is hard" is solvable given time. "A parent can get something good enough for free in thirty seconds" is a harder objection to the paid path, and is a real argument for shipping free and competing on fit rather than price.
The bilingual angle is the wedge for both risks: a narrower query is cheaper to rank for, and it is where "good enough for free" is least true. An advantage in degree, not a moat.
5. Kill criteria (pre-registered, all numbers PROPOSALS)
Written before launch because after launch, a founder fond of a thing will find a reason every number was unfair. Read at 90 days after the catalog is publicly live (60 days is too early for search indexing to mean anything).
| Signal | Proposed kill number | Why |
|---|---|---|
| Organic search arrivals | <25 organic impressions/month and zero organic clicks in month 3 | Zero clicks with meaningful impressions is a fixable presentation problem. Near-zero impressions means invisible, which is not fixable by trying harder at the same thing. |
| Non-family downloads | <10 downloads from outside the household and founder's circle, whole catalog, 90 days | Ten is deliberately low. Failing a low bar is much stronger evidence than missing an ambitious one. |
| Founder time | >2 hrs/week of the founder's own time sustained across any 4-week window | The only genuinely scarce input. phData is the main bet; a side project quietly costing half a day a week has changed what it is without anyone deciding to. |
"Kill" means demote, not delete. Hitting these means the engine goes back to being a household tool producing excellent pages for one child, which is a good outcome and was the original point. The library keeps every print, per the standing rule.
A kill criterion you cannot measure is decoration, and this is three of three. Two need instrumentation that does not exist: search-console verification on the domain, and download counting that distinguishes household from outside traffic. Both are part of step-1 scope or the 90-day read is a shrug. The third, founder time, has no mechanism at all today. If it stays on honest self-report, say so explicitly, because it guards the only genuinely scarce input and is the one most likely to be quietly forgiven on day 90.
6. Open decisions
(a) Brand call
Three directions, no strong push; the arguments are close and a name is cheap to change at rung 1 and expensive at rung 4. Any specific names are illustrative sketches, not availability-checked.
- Under the RDCO umbrella. Costs nothing, reuses stack and publishing rails, ships fastest. Friction: a parent searching for preschool worksheets who lands on something visibly attached to a data-consulting brand gets a small mismatch signal. Whether that costs conversions at this scale is genuinely unknown.
- Its own consumer name. Reads native to a parent, can lean into the bilingual wedge in the name itself. Friction: cold start on search authority with no umbrella to borrow from, plus a domain and a mark. Illustrative directions only: something Spanish-forward and phonics-native, or something warm and domestic signalling kitchen-table rather than classroom.
- The founder's own name, family-authored. "Built for my daughter, and my wife marks up every page" is true, is the actual origin, and is the one thing a large incumbent structurally cannot copy. Friction: ties a consumer product to his personal identity, a one-way door in a way the other two are not.
(b) Step-1 scope: yes or amend
The 12-to-15 opening set, static Astro, engine local, projected 2-3 new activities/week.
(c) Kill-criteria numbers: yes or amend
The three proposed numbers, read at 90 days.
Verification trail
Fresh-eyes /verify-strategic-output gate, 2 rounds, zero build context each.
Round 1: ITERATE. Principal finding: the production cadence was asserted as an observed rate off a single day of history. Also fixed: an unevidenced competitor comparison, an incomplete instrumentation self-audit, a missing taxonomy counter-example, and a missing "competing with free" counter-argument.
Round 2: ITERATE. Three calibrations, all applied: (1) an Etsy listing price called "confirmed" in the same table cell that said every Etsy fetch returned HTTP 403; (2) a header claim that all three decisions were "cheap to reverse," contradicted by section 6(a) naming the founder's-own-name brand option a one-way door; (3) a Cloudflare cost estimate claiming "current published rates" with no rate page cited.
Round 2 also flagged the
sms:...&body=link form as a bug. Rejected as a false positive. That form is the house convention across 55 instances in the existing decisions corpus and traces to a founder bug report dated 2026-05-09;?body=is the form that fails on the iOS Messages handler. Not changed.Round 2 rubric: PASS on confidence-evidence calibration, prior-pushback application, false-convergence, and bear-case substance. Backtest integrity not applicable. The single FAIL was the "confirmed" Etsy price, now fixed.
Process gap noted by the verifier: no pre-registered ACCEPTANCE CONTRACT was attached to the dispatch, so both rounds scored against the standing rubric only, which is a weaker gate. Attach one next time.
Round 3: PASS. All five claimed fixes verified present and adequate. Rubric PASS on confidence-evidence calibration, competitor-price sourcing, prior-pushback application, false-convergence, and bear-case substance; backtest integrity not applicable; no blocking coherence findings. Two non-blocking notes: one residual "confirmed" at the Education.com free-tier cell (fixed to "reported" before publishing), and the rubric SKILL.md itself is 82 days old against its own 60-day staleness flag.
Published to https://hq.raydata.co/decisions/2026-08-30-printables-product-step1-memo.html after the round-3 PASS.