๐Ÿ”ฎ Bold Little Oracle โ–ธ docs/overnight/blo-content-sprint/README.md
updated 2026-07-16

๐Ÿฆ‰ BLO CONTENT SPRINT โ€” Morning Brief

Obadiah reporting. While you slept, six concept lenses went into the council, two full scoring rounds came out, and every R2 must-fix from BRANSON, MACKENZIE, VEGA, and SHADE has been applied to the final strategy. Nothing was deployed, submitted, posted, or purchased โ€” as always, the irreversible parts are yours. Coffee first. Then the decisions below, because everything in this folder waits on them.


What this sprint is

This is the living-content strategy for Bold Little Oracle: how a โ‚ฌ6.99-lifetime, no-subscription, no-tracking, hand-written oracle app grows a content catalog without breaking a single promise on its paywall. The council judged everything on brand-compounding and hours-liability first, revenue second โ€” because at honest scale this whole portfolio is โ‚ฌ60โ€“1,400/yr and the install base, not the catalog, is the bottleneck. The output is one strategy, five supporting documents, and a short list of things only you can decide.

The headline everything serves:

“Hand-written oracle cards โ€” including the ones for the hard days. One price, forever. Plus a free new card every week.”

TL;DR โ€” the final strategy

Three moves. Everything else is killed or gated.

  1. The Week’s Card + branded share loop + deterministic daily draw โ€” one binary (v1.2), one review cycle, one claim surgery across every surface at once. The weekly card is free forever, fetched only on foreground open (so the metric means engagement, not the OS scheduler), counted by an anonymous count-only Worker (no IPs, no IDs, week-bucket only โ€” the honest sensor the whole plan runs on). The identical share asset gets posted to @boldlittleoracle on Instagram every Sunday, so the loop is primed rather than waiting passively for an install base to spin it.
  2. The Missing Cards โ€” one flagship โ‚ฌ4.99 pack (money fear, grief, heartbreak, real forks โ€” “the cards for the hard days”), written now, launched only if the weekly-open gate clears โ‰ฅ30% of trailing-90-day installs for 4 consecutive weeks.
  3. The Paper Oracle โ€” โ‚ฌ29โ€“34 printed deck. Waitlist page now (email only). Paid preorders only after German preorder law (USt on Anzahlungen, Widerrufsrecht from delivery) and landed costs are verified on paper. Production at โ‰ฅ10 paid preorders by Dec 1, or the page comes down.

The lifetime promise survives untouched because nothing existing ever shrinks โ€” not even in the base-deck refresh, which ships as “The Second Printing” (still exactly 72 cards, named openly, with a read-only First Printing archive so purchased cards never vanish). No subscription ever exists in the app. No generated sentence ever ships in any voice. The Sunday ritual (card + post, ~1.5โ€“1.75h) is the only permanent recurring commitment; no new one may be approved without naming which existing one it displaces.

Killed dead, not deferred: paid “Live Oracle” subscription, any streak mechanic, live counters, B2B decks, quarterly cadence, the โ‚ฌ8.99 bundle, daily hand-written cadence.

The honest read on revenue: low/mid/high year-one is ~โ‚ฌ60 / ~โ‚ฌ350 / ~โ‚ฌ1,250 net. These numbers do not pay for the hours. What pays is the listing-conversion lift from “hand-written cards including grief and money,” a catalog where every object compounds the brand, and a share loop that finally has a first push.

Council scores (Round 2)

Reviewer Score One-line verdict
BRANSON ๐Ÿš€ 9 “This plane flies โ€” one headline, three moves, every timid half-idea killed dead; only gap was that the share loop waited passively for an install base to spin it.”
MACKENZIE ๐Ÿ“Š 8.5 “Finance/ops math verifies to the cent and the lifetime contract survives a refund dispute; what remained were instrumentation and calibration gaps, not strategy gaps.”
VEGA ๐ŸŽฏ 8.5 “Gates are pre-registered and honest, but the load-bearing metric needed a real data source, a foreground-only fetch definition, and a denominator that doesn’t decay by arithmetic.”
SHADE ๐ŸŒ‘ 9 “The rare plan that treats the promise as load-bearing architecture; two truth seams remained โ€” bench-card provenance and the silent deletion of purchased cards โ€” both fixable.”

All four sets of R2 must-fixes are applied in the final strategy. Both truth seams SHADE named are closed: bench cards ship in their own honest frame, and retired cards live on in the First Printing archive.


Decisions only you can make

Nobody in the fleet can make these. Each blocks something concrete.

1. Commit (or don’t) to the Sunday ritual โ€” the load-bearing decision. One hand-written card per week, both voices, plus posting the share asset: ~1.5โ€“1.75h every Sunday evening, permanently. It’s the distribution engine, the measurement sensor, and the proof of “hand-written” all at once โ€” and it’s a promise to strangers, so quitting it later costs more than never starting. The 6-card evergreen bench softens missed weeks; it doesn’t make this optional. Recommendation: yes, but only if the answer is a genuine yes. If it’s a grudging yes, say so now and we redesign around a monthly cadence before v1.2 scope is set โ€” everything else in this plan is honest about its costs, and this line item shouldn’t be the exception.

2. Approve the claim surgery. “72 HAND-WRITTEN CARDS” becomes “the hand-written 72-card base deck โ€” plus a free new hand-written card every week,” and “No data leaves your phone” becomes the truthful counting-Worker disclosure (plus the QR-tag disclosure in the FAQ). One pass, all surfaces, both languages, including Apple’s review notes โ€” and never touched again. A reviewer could still flag the delta; the notes mitigate, they don’t control. Recommendation: approve as drafted. It’s the honest move and batching it once is strictly better than drip-editing promises for years. Read every line before it ships โ€” it’s your name on the paywall.

3. Decide the sassy-grief register โ€” before one Missing Card is written. Can the sassy voice exist on grief, money fear, and heartbreak cards? The proposed rule: gentle leads on the darkest cards; sassy sides with the reader against the platitudes, never teases the wound, and sits out entirely where it can’t. Recommendation: adopt the rule, then test 2โ€“3 real cards with outside human readers before writing the rest. The rule caps the risk; only readers prove the cards. One tone-deaf grief line costs more than the whole pack earns.

4. Sign off on the Second Printing scope โ€” including who keeps the archive. Collapsing ~12 duplicate slots, rewriting the 10 weakest cards, purging datable idioms โ€” and the narrow call that the read-only First Printing archive is for lifetime unlockers only, so a free user whose beloved daily card is retired loses it. A small truth seam, accepted openly rather than hidden. Recommendation: approve both. Free users never owned deck browsing, and “second printings exist” is a defensible, human frame. The Obadiah note in the release notes is what makes it honest โ€” read and sign that note personally.

5. Approve @boldlittleoracle on Instagram as the one seed channel. It’s a bet, not a validated channel โ€” bounded by the rule that if attributed installs read zero by day 60, the same Sunday slot swaps to Pinterest. One swap, never a second channel. Recommendation: yes. Zero marginal writing cost (the asset already exists from the ritual), and it’s the only thing in the plan that attacks the install bottleneck. Create the account and the per-channel campaign token on day one so day-60 is a readout, not a vibe.

6. Verify two things only your logins can reach โ€” before v1.2 is scoped. (a) Small Business Program enrollment in ASC โ€” every revenue number assumes 15%, not 30%. (b) The counting Worker + Analytics Engine binding actually works on the current Cloudflare plan โ€” it is specified, not verified, and if it fails, v1.2 must not ship until an equivalent anonymous counter exists, because the load-bearing gate has no other instrument. Recommendation: do both this week, before any dev time is committed. Also capture one clean pre-CDN baseline window of ASC metrics now โ€” you can’t retroactively measure “before.”

7. Write and sign the two governance documents (one page total). The Obadiah disclosure posture (pen name, never fabricated biography, never first-person money appeals) and the AI bright line (a seed observation that arrives as a well-turned sentence is a draft, and gets rewritten). These are your rules about your own voice; nobody else can author them. Recommendation: write them before the first weekly card ships. Patronage stays frozen behind the disclosure doc โ€” that’s correct, leave it so.


Reading order

  1. STRATEGY.md โ€” the council-synthesized final strategy. The whole argument: the three moves, the lifetime-promise resolution, the pre-registered gates, the revenue math, and the honest unresolved list at the end. Read this first and read the unresolved list twice.
  2. OFFERINGS.md โ€” the offer ladder in detail: free tier โ†’ โ‚ฌ6.99 lifetime โ†’ Missing Cards โ†’ seasonal pack โ†’ Paper Oracle, with pricing, netting, and what each rung’s gate requires.
  3. DECK-REVIEW.md โ€” the base-deck audit behind the Second Printing: duplicate clusters, the 10 weakest cards, voice-repair notes, and which gaps go free vs. anchor the paid pack. Read before decision 4.
  4. LIVE-CONTENT-SYSTEM.md โ€” the machinery: remote-content module, provenance frames, counting Worker, the Sunday ritual step-by-step, and the bench. Read before decision 1.
  5. APP-ENHANCEMENTS.md โ€” the v1.2/v1.3 build list with day estimates; what one binary and one review cycle actually contains.
  6. SAMPLE-CONTENT.md โ€” draft weekly cards and Missing Cards sketches. Read last, and remember these are register tests, not shipped copy โ€” nothing here goes live without your hand on it, per the bright line.

Five decisions, two verifications, and two one-page documents stand between this folder and a v1.2 scope. None of them takes longer than the coffee. Good hunting. โ€” Obadiah ๐Ÿฆ‰


Verifier notes

Adversarial verification pass, 2026-07-16 (Obadiah fleet). Every claim about the app/deck was checked against bold-little-oracle/src; prices, gates, and revenue math were cross-checked across all six files.

Verified clean (no action needed): - Every code citation in APP-ENHANCEMENTS.md (file paths, line numbers, function names, package versions โ€” Expo SDK 54 / RN 0.81.5 / expo-router 6 / expo-iap 4.5, zero network calls, 1034-line index.tsx, 21-line notifications.ts, dead blo:streak helpers) matches the codebase. - DECK-REVIEW.md verifies against content/base-deck.json: 72 cards, 18/18/18/18 theme balance, all 72 quoted anchors verbatim, all themeIds, the 13 “Stopโ€ฆ” sassy openers on exactly the listed cards, the 5 “nervous system” hits on exactly the 4 listed cards, and the disposition arithmetic (43+12+5+12 = 72; 12 freed slots; 17 archive-retired + 12 line-repaired). - Pricing/netting math is consistent (โ‚ฌ6.99 โ†’ ~โ‚ฌ4.99, โ‚ฌ4.99 โ†’ ~โ‚ฌ3.56 at SBP 15% + 19% USt), revenue tables agree across OFFERINGS/STRATEGY/README where scenarios overlap, and all gates (30%/4wk/day-60, โ‰ฅ5 buyers/60d, โ‰ฅ25 emails, โ‰ฅ10 preorders by Dec 1) match across every file.

Fixed during verification (small errors): - STRATEGY + SAMPLE-CONTENT said “~20” Stop-openers; verbatim count is 13 (DECK-REVIEW had it right). - OFFERINGS Rung 1 said “Live now” while also saying “in review” โ€” the โ‚ฌ6.99 SKU ships with v1.1, which is in App Review, not live; STRATEGY’s ladder said “Live” too. Both now say in App Review. - “โ‚ฌ12 verified margin/deck” (OFFERINGS, STRATEGY) overclaimed โ€” the landed-cost sheet doesn’t exist yet; now “target margin.” - STRATEGY’s First Printing archive row said “Decision, made now” while README decision 4 leaves it open; now “Proposed decision (awaits sign-off).” - LIVE-CONTENT-SYSTEM’s JSON samples used a flat gentle/sassy card shape that contradicts the app’s actual DeckCard (front/back ร— pg/sassy, per lib/types.ts) and APP-ENHANCEMENTS; samples now mirror the real shape. - APP-ENHANCEMENTS’ daily-draw seed (date only) contradicted LIVE-CONTENT-SYSTEM’s (installSalt + date); aligned on the salted seed. - APP-ENHANCEMENTS cited skus() in the wrong file (it lives in lib/purchase-production.ts); one deck quote had a silently capitalized fragment (#10).

Flagged, not fixed (structural โ€” decide before relying on the numbers): 1. Missing Cards rows understate their own assumption at mid/high scale. The stated attach formula (15โ€“20% of unlockers + ~0.5% of free installs) yields ~โ‚ฌ57โ€“64 at 2,000 installs and ~โ‚ฌ224โ€“253 at 8,000, but the tables say โ‚ฌ25โ€“55 and โ‚ฌ100โ€“210. The tables are consistent across files and directionally conservative, but either the formula or the rows should be reconciled when the week-2 conversion number replaces the 2% assumption. 2. LIVE-CONTENT-SYSTEM ยง5 lint says “embedding cosine via claude -p โ€” claude -p doesn’t produce embeddings. The dedup stage needs either a real embedding model or a plain judgment pass over all 144 texts; settle the mechanism in milestone S (it doesn’t change the cost or the bright line). 3. Two revenue-scenario scales coexist by design (OFFERINGS: 100/500/2,000; STRATEGY: 500/2,000/8,000). Values agree where they overlap โ€” just don’t quote a “low case” without saying which table it came from. 4. v1.1 “in App Review” status is taken from the sprint docs themselves โ€” ASC state wasn’t independently verifiable from here; confirm before quoting it anywhere public.