STATUS — blo-relaunch (round 4, overnight 2026-07-15)
Stream: Bold Little Oracle v1.1.0 relaunch (€6.99 lifetime unlock). Four rounds:
build → council R1 → rework → council R2 (avg 6.5/10) → final fix pass → round 4
improvement pass (this). Nothing was deployed, posted, submitted, or purchased.
All assets live in overnight/blo-relaunch/; app code on branch iap-restore
(outer repo head a41c5c8, embedded bold-little-oracle/src head aaeac1c).
Round 4 (overnight 2026-07-15) — 5 gap-closing improvements, all agent-verified
Target gap: staged 33-132 unlocks vs ~175-180 needed for $1000/month-one.
- Paywall conversion pass (src
aaeac1c, tsc clean — ships inside today’s §B build): “{price} once” anchor with “once” as the largest visual claim (gold, price-size) + “Less than one physical deck.”; the sassy_mode modal now shows the ACTUAL locked value — gentle reading of the on-screen card with the sassy reading of the same card blurred underneath + “flip it to sassy →” pill (fed from base-deck.json); benefit-ordered bullets incl. a third “Forever” row; Restore visible-but-quiet inside the modal; trust line = “No subscription. No games. No tracking. One price, forever.”; CTA “Unlock Forever”. Multiplies every channel; unmeasurable directly (no analytics) — read it off day-10 ASC conversion. - de-DE App Store localization (APP_STORE_LISTING.md §12, both copies + repo committed): German name/subtitle (“Tageskarte mit Biss”)/promo/keywords (100 chars, compound-aware)/full description/What’s New/IAP strings, plus en-GB + en-AU keyword fields as free extra index slots. Paste path = MORNING ACTIONS §C.2b. DE storefront previously matched ~nothing in German despite €4.99 proceeds being the best in any market.
- Creator list web-verified (CREATOR-OUTREACH.md): all 20 slots now named, sized, and sourced (Feedspot list dated 2026-07-02 + per-handle checks). Cut for cause: @avalonkisbey 83k, @cuttingcardtarot 148k, @faesighttarot 141k, @8thhouseempath (96k + “no DMs” bio), @hoodheru 104k. Recovered: “char?” = @chartarot 15.4k; fixed @wayhometarot → @bakaraw (the real Bakara Wintner handle). 6-creator bench listed. Human residue: ~12 min (DMs-open check + line-1 personalization), was ~35.
- Reddit two-tier plan (new REDDIT-PLAN.md): r/SideProject CONFIRMED link-friendly (2 independent 2026 sources) with the launch-day post fully drafted; r/AppHookup KILLED (its rules exclude always-free/freemium apps — the no-discount decision makes BLO permanently ineligible); karma target corrected 50 → 200 for r/tarot per 2026 enforcement bands; the 4 community posts got per-sub go/no-go checks; r/indieapps + r/iosapps staged as conditionals behind a 10-min logged-in rule check (reddit.com blocks anonymous fetches — honestly deferred, not guessed).
- TikTok distribution ×4 (LAUNCH-KIT §1): TT-01 hashtags rebuilt per 2026 volume-pyramid guidance (#witchtok broad + #tarottok/#oraclecards niche + #dailycard/#sassyoracle micro, 5-tag cap) with a 60-sec day-of in-app volume check (exact tag counts aren’t verifiable from outside TikTok — stated, not faked). TT-02 (“pick a card” interactive), TT-03 (duet bait), TT-04 (no-streaks trust) scripted as cuts of the SAME §F recording, Mon/Wed/Fri of approval week, ~10 min CapCut each.
Month-one math after round 4 (details in README): channels 40-151 before conversion uplift (ASO 13-38, TikTok/IG 8-32, Reddit 4-14, others unchanged); with the paywall pass, honest planning range ~45-175, mid-case ~90 unlocks (~€470 net). The $1000 target now sits at the top of the honest range instead of above it. Still requires: videos actually posted, ≥3 creators active, paywall pass actually moving conversion.
Council scores (R1 → R2)
R1 per-persona scores were not persisted in this stream’s files (R1 feedback arrived as prose; only R2 came scored). R2 scores, with what the final pass did about each:
| Persona | R2 score | Must-fixes in R2 | Resolved tonight |
|---|---|---|---|
| BRANSON (growth) | 7 | TT-01/preview unscheduled; creator list half-placeholder; €300-750 gap undecided | 3/3 (creator research portion → structured AM workflow) |
| MACKENZIE (finance/DE-EU) | 6 | Google Fonts GDPR; no Art. 13 notice / double opt-in step; hardcoded Apple VAT ID; UG-only Impressum; daily-email overpromise | 5/5 |
| VEGA (marketing/conversion) | 6.5 | daily-email overpromise; frame-2 contradiction; creator list unverified + ?ref= promise; no account inventory | 4/4 |
| SHADE (UX/design) | 6.5 | tofu Apple glyph; 7.6MB images; status bars in site shots; frame-2 contradiction | 4/4 |
What was built/fixed in the final pass
Site (site/):
- Fonts self-hosted: site/fonts/ — Outfit + Cormorant Garamond variable woff2,
latin subset, 116KB total, fonts.css with local @font-face; all
fonts.googleapis.com / fonts.gstatic.com references removed from all four pages
(GDPR — no third-party request on load).
- Images: status bars cropped, resized to 2x display width, converted to WebP —
page image weight 7.6MB → ~100KB (hero 46KB, cards 27KB each); og-hero.png
(721KB, 640w) kept for OG/Twitter cards; unused intention/settings PNGs deleted.
- App Store badge: Apple private-use glyph replaced with inline Apple-logo
SVG in both store-row instances (renders on Android/Windows).
- Email capture: promise softened to “a card a day for your first week, then launch
news” (matches the 7-day welcome sequence that actually exists); Art. 13 microcopy
under the form (“We only send the cards. Unsubscribe anytime. Privacy” → /privacy);
success message now says “check your inbox to confirm” (double opt-in).
- Voices section heading “Same card.” → “Every card.” (same truthfulness fix as
frame 2 — the two site screenshots show different cards).
- impressum.html: now ships BOTH entity variants — UG (active) and
Einzelunternehmer (commented out). Morning = keep one, fill placeholders.
Media:
- frame2-two-voices.html caption “Same card.” → “Every card. Two voices.”; badge
de-duplicated to “Written twice, by hand”; frame 2 re-rendered (1284×2778). The
current render is now truthful as-is; same-card re-capture is optional polish.
Plans/copy:
- LAUNCH-KIT.md: TT-01 scheduled Fri 2026-07-17 12:00 (TikTok + IG Reel) with
full copy + slip rule (within 48h of recording, hard stop Mon 07-20); 30s App
Store preview attaches to the 1.1.0 submission (or first metadata update — never
delays the submission); account-inventory block (IG @boldlittleoracle EXISTS from
prior Meta API setup; TikTok + Bluesky created Wed 07-15); weekday label fixes
(morning actions are Wed 07-15, POST-06 Thu 07-16); PH maker comment + POST-15
email promise softened; gallery caption updated.
- README.md: Decision 5 — numeric Play Store trigger (day 10 post-approval:
≥200 installs AND ≥2% install→unlock → ship Play that week, est. +10-30 unlocks;
else hold to week 4 + kill-switch logic; Open Question 3 closed). Decision 6 —
email promise = welcome week (daily-forever queue is an optional ~1hr Beehiiv
batch build, not a launch blocker). §E: account inventory + “confirm Beehiiv
double opt-in” step 0. §F: hard dates, “fast-follow” language removed. §G: Apple
VAT ID hardcode (IE6554739H) removed — take it from the actual Apple financial
report; added BZSt USt-IdNr application step for the personal-entity case
(required for ZM/§18b regardless of §19). Week 1 gained a named “Post TT-01” line.
- CREATOR-OUTREACH.md: ?ref= link cut from the offer (KV logger isn’t built;
promo-code-per-creator + honor-system 30% is the mechanism); four guessed handles
(“mysticmolly?”, “kate.van.horn?”, “abigaileir?”, “char?”) deleted → 16 named
creators + 4 hashtag-pick slots; profile-URL column added (constructed, verified
by the AM workflow); “recent post to reference” column added (= DM line 1);
2-min-per-creator verification workflow written out (~35 min honest estimate,
was “20 min” fiction).
- EMAILS.md: step 0 “confirm double opt-in ENABLED”; promise-alignment note.
Month-one revenue math (unchanged from R2 — it was already honest)
- Proceeds/unlock ≈ €4.99 DE / €5.20 blended (Apple deducts VAT before its 15%).
- $1000 (≈€920) needs ~175-180 unlocks.
- Staged channels, realistic: creators 5-25 · PH 5-20 · ASO 10-30 · TikTok/IG video 5-25 (now with hard dates) · email 3-10 · Reddit 3-10 · IG statics 2-8 · Bluesky 0-4 → 33-132 unlocks ≈ €170-690 net.
- Gap to $1000: needs top-of-range everywhere + videos + ≥3 active creators — possible, not probable. The decided gap-lever is Decision 5 (numeric day-10 Play Store trigger). Day-30 product gate (500 installs × 2%) stays a signal gate, ~17x short of the money gate — stated in three places so nobody discovers it late.
Unresolved / needs human or >20 min (logged, not fixed)
- Creator verification — ~~35 min~~ done headlessly in round 4 (sizes + existence + niche from dated web sources); residue is ~12 min: DMs-open check + line-1 personalization for the rows marked “[AM]” in CREATOR-OUTREACH.md.
- Same-card frame-2 re-capture — optional polish now that the caption is truthful; needs simulator.
- Daily-card Beehiiv queue — optional ~1hr batch build (Decision 6); capture copy no longer depends on it.
- R1 per-persona scores — not recoverable from stream files; table above notes it.
- og-hero.png is 721KB — fine for OG scrapers (not page weight); could be squeezed to ~200KB if anyone cares.
- Entity decision (Decision 4) — Joshua-only; both Impressum variants staged.
- Everything in MORNING ACTIONS — deploys, ASC, EAS build, sandbox tests, account creation, Beehiiv, BZSt: human-only by design.
MORNING ACTIONS (final order — full click-paths in README.md)
- Deploy
site/to the BLO Cloudflare Pages project (pick Impressum variant first; verify /, /privacy, /support, /impressum + the subscribe form; Beehiiv-embed contingency if/api/subscribe404s). Do this before anything else. - §A — Create the IAP (Non-Consumable,
com.unicornland.boldlittleoracle.unlock, €6.99). - §B —
eas build+eas submit(branchiap-restore, build 10 — src headaaeac1c, includes the round-4 paywall conversion pass). - §F — Record the two videos TODAY (20s TT-01 source + 30s preview) — hard-dated now. The same 20s source also feeds TT-02/03/04 (scripted, Mon/Wed/Fri approval week).
- §C — 1.1.0 in ASC: listing paste, + German localization §12 and en-GB/en-AU keyword slots (§C.2b, ~5 min), 5 frames, preview video (never delay submission for it), select build, submit.
- §D — Sandbox: buy / cancel-is-silent / restore / grandfather tests + new paywall UI: “{price} once” renders unclipped, sassy-tease block appears (flipped card + Sassy tap), modal Restore link works.
- §E — Account inventory (IG exists; create TikTok + Bluesky @boldlittleoracle); Reddit karma warm-up (target 200, not 50) + 10-min REDDIT-PLAN.md rule check; Beehiiv double opt-in → welcome sequence → Email 1 scheduled; PH listing drafted for Tue 07-28.
- §G — DSA trader status, USt-IdNr on file (BZSt application if personal entity), filing-tracker line (VAT ID from Apple’s own invoice).
- Fri 07-17 12:00 — post TT-01. Week 1: creator DMs-open check (~12 min, list pre-verified) → 20 DMs; TT-02/03/04 Mon/Wed/Fri.
Improvement Loop (round 5 — distribution + conversion)
New scores: VEGA 8, MACKENZIE 8 — avg 8.0 (up from R2’s 6.5 / 6).
What changed this round: - Ad-disclosure line added to creator outreach (fixed now): the DM template and the follow-up in CREATOR-OUTREACH.md both tell creators to mark any post as ad/Werbung — the free code + 30% commission make it a paid partnership even with “no post required”. Closes the disclosure exposure before the 20 DMs go out. - README §G.4 added (fixed now): outbound 30% creator payouts need an invoice or written payout confirmation (name, country, amount, period); non-DE creator payouts go into § 13b reverse-charge accounting alongside the Apple line in the MIA/CHUG tracker. §G previously covered only the inbound Apple side.
Remaining items (logged, need morning session / device):
1. No channel attribution anywhere — the app has no analytics (by design),
creator payouts are honor-system, and every channel URL (site, Reddit, TikTok bio,
PH, emails) points at the same bare App Store link. Day-10 you will know total
unlocks but not which of the 8 channels produced them, so the Decision-5 Play
trigger and week-2 budget allocation run blind.
→ Zero-code fix: generate Apple App Analytics campaign links (App Store
Connect → custom campaign token per channel, ?ppid=/ct= parameters) and use a
distinct link per channel in LAUNCH-KIT, CREATOR-OUTREACH, EMAILS, and the site.
~15 min in the morning ASC session, no SDK, no privacy change.
2. DE storefront shows English screenshots — German name/subtitle/description
with English caption text on all 5 frames (§12 explicitly notes “EN screenshots
OK”).
→ The frames are HTML templates in media/appstore-frames — translate the 5
caption strings (§12 copy already contains German equivalents: “Ein Deck. Zwei
Stimmen.”, “sanft + frech”), re-render, and upload under the de-DE localization
in the same §C.2b paste session. ~30 min, no new design work.
3. Paywall UI untested on device — the sassy-tease block in PurchaseModal depends
on new cardGentle/cardSassy props fed from index.tsx; the modal is also
reachable from entry points that may not pass a card (paywall screen, settings,
cold open), and none of this has rendered on a device yet — tsc clean proves
types, not layout (“{price} once” clipping at DE string lengths, blur rendering,
empty-tease fallback).
→ Treat §D’s new paywall checks as a submission gate, not a post-submit test:
run the simulator pass on de-DE locale + the no-card entry path BEFORE
eas submit in §B, and confirm the modal has a designed fallback when
cardGentle/cardSassy are absent.