Weekly scorecard · W2026-26

The Friday output. Assembled by cron at 06:00 ET from ledger group-bys — no spreadsheet cell is ever touched by hand, which is the only way "100% delivered on time" survives a 30-40 creative/day tempo. Maps one-to-one onto the role-profile scorecard lines, with engine-health metrics alongside so Josh reads the funnel numbers as leading indicators, not lagging ones. Jack's bounded pre-send contribution: annotate the top-3 learnings, classify flagged issues for routing, hit send.

Live Meta — account truth

read-only MCP pull · acct 304329805 "Becca Hadley" · as of 2026-06-13 · live
Meta-reported ROAS
1.57 7d · 1.65 30d
decode estimated 1.92 · live runs lower
Meta spend
$33.9K 7d · $154.6K 30d
live run-rate ≈ $34-36K/wk vs $27.1K decode assumption
Meta CPA (cost / purchase)
$42.54 7d · $41.29 30d
798 purchases 7d · 3,743 30d
CTR · CPM · freq
2.42% · $27.25 · 1.85
30d: 2.49% · $27.58 · 2.86
True/blended ROAS still pending Shopify wiring. Meta-reported is the only live-verifiable number until Hadley Shopify referrer revenue is connected. Applying the page's documented ÷1.40 attribution correction to live Meta implies true ≈ 1.12 (7d) / 1.18 (30d) — below the 1.37 decode baseline. That figure is an inference from the live Meta number, not a measurement; the first live Shopify-referrer refit replaces it. The 1.37 baseline + representative W26 projections below are unchanged and stay clearly tagged.

Scorecard — role-profile lines

Assembled Fri 06:00 from fact_creative_day group-bys · attribution correction ÷1.40, refit monthly · representative
New ad angles tested (distinct P×A cells → IN-TEST)
9 / 8-12 target
incl. P04.A09 grandparent-heirloom (queue pos. 1)
UGC scripts launched
11 scripts · 58 test variants
3 hooks × 1 body × 2 closes spec per concept
True CAC (Shopify basis)
$50.40 vs ≤$35 · Meta-rep. $35.96
Δ −$1.80 wk · baseline ~$50 (doc range $45-54)
True ROAS (Shopify basis)
1.52 vs ≥2.5 · Meta-rep. 2.13
Δ +0.04 wk · baseline 1.37 · contrib-breakeven 1.89
Role-profile lineThis weekTargetMeta-reportedΔ vs W25Baseline (TTM)Basis
New ad angles tested / week (distinct P×A cells entering IN-TEST)98-12+3~0.4/wk (23 concepts ÷ historical run)representative
UGC scripts launched (briefs + variants)11 scripts · 58 variantsspec: 4-8 var/concept+4affiliate-loop, untrackedrepresentative
True CAC$50.40≤ $35 (Meta-gate $25)$35.96−$1.80~$50 baselinerepresentative
True ROAS1.52≥ 2.52.13+0.041.37 baselinerepresentative
MER (spend ÷ total rev)50.6%≤ 45%−0.9pt53% baselinerepresentative
LP CVR trendread-through 31% blended · per-LP belowread-through ≥ 30%+2ptsite CVR 2.6% (was 3.2%) baselinerepresentative
Checkout completion trend46.1%60%+0.4pt45% baselinerepresentative
Winning patterns documented (by product / audience / hook / angle / offer)1 promoted · 3 active · 1 retiredcompounding, cited+10 (intuition only)representative
Scorecard delivered on timeon time · cron100%n/a — first send 2026-06-19SLA tracker
Week economics behind the lines (internally consistent, representative): Meta spend $27.4K (representative magnitude; live run-rate is now ≈ $34-36K/wk per the live strip above) · Shopify referrer revenue $41.6K → true ROAS 1.52 · 544 Meta-attributed orders at AOV $76.58 → true CAC $50.40 · Meta reported 762 purchases / $58.3K → 2.13 ROAS / $35.96 CAC (÷1.40 correction holds). Lagging economics barely move in week 2 — by design the engine-health block below is what says whether they will.

Funnel trend

MER · LP CVR · checkout — the Lifecycle & Funnel Strategist's half of the funnel
MetricThis weekW25BaselineTargetState
MER (master metric)50.6%51.5%53% baseline≤45%moving
LP01 /bible-9-reasons read-through36%33%≥30%clear
LP02 /10-reasons read-through (highest traffic)31%30%≥30%clear
LP03 /head-start read-through29%27%≥30%below gate → ISS-016
LP CVR (purchases ÷ LP sessions, per page)— instrumentingtrend ↑UTM build lands W27
Site CVR (proxy until LP CVR lands)2.7%2.6%2.6% (was 3.2%) baselinerecover 3.2%watch
Checkout completion46.1%45.7%45% baseline60%#1 lever → ISS-014
Checkout 45→60% is +33% orders at identical spend ≈ blended ROAS ×1.33 — the single cheapest path from 1.89 to ~2.5 blended. It is a Lifecycle-owned line; the scorecard keeps it visible every Friday so creative is never asked to out-buy a leaky checkout. Per-LP rows render grey under the minimum-data guard (<$300 spend or <5 purchases on the cell).

Assembly pipeline

Cron — Fri 06:00 ET · zero manual spreadsheet work
06:00 cron SQL group-bys on fact_creative_day ⋈ creative ⋈ concept ⋈ registries — every number on this page is one query; name-key ETL makes the joins unfalsifiable
06:05 rules issue-flagger runs (gate misses, LP-gate blocks, fatigue triggers, buffer alarm) → drafts the issue-router rows
06:10 draft scorecard renders to this page + email draft to Josh and the Lifecycle & Funnel Strategist
Jack · 15 min annotate top-3 learnings (the [Jack] lines below) — the only prose written by a human
Jack · 10 min classify flagged issues to funnel stage (creative / traffic / offer / LP / checkout / post-purchase) — routing enum, one click each
Jack · 09:00 hit send · SLA clock stops
Delivery SLA — Fridays sent on time
2 of 2 since engine start (W25, W26) · 100% representative
The role-profile line "100% delivered on time" is structurally guaranteed: assembly is code, the human path is 25 bounded minutes. If Jack is offline the draft still sends at 12:00 with learnings marked "annotation pending" — late annotation beats a late scorecard.

Engine health — leading indicators

Why the funnel lines above will move before they move · all representative except matrix size
Matrix coverage (cells with any read)
4.0% 30 / 750 cells
seed 15 cells (≈2%, real decode) → +6 W25 → +9 W26
Exploration ratio (test spend)
66 : 34 new-cell : iteration
$2.9K new cells · $1.5K iterations · test spend = 16% of total
Queue buffer depth
23 ranked concepts
target ≥20 · alarm <10 (input engine starving) — healthy
Concept → launch (median)
2.3d AI 1.1d · affiliate 6.2d
SLA: AI lane 24h · affiliate 5-7d — both inside SLA
Days-to-decision (median, 7 decided)
6d
spend-gated sequential reads, decided Tue/Fri — no peeking
Cost per launched test variant
$52 vs $50 model
weighted by gate-survival curve — model holding
Read gate (per-variant)RuleKilledRateExpected
G0 pre-spendQA lint + AI pre-rank; malformed name_key = launch blocked12 blocked (2 name_key)bottom of batch never launches
G1 hook · $25 / 2K imprthumbstop <20% or CTR < p25 trailing-30d49 of 8558%~60%
G2 click econ · $70 cumzero ATC/IC, or CPC >$1.40 with read-through <30%20 of 8524%~25%
G3 purchase · $125 cumhand-off to pooled concept read16 reached19%~15%
Kill-rate tracking the expected curve = the gates are calibrated; drift >10pt either way for 2 weeks fires a threshold-review flag (thresholds are versioned, not sacred — currently v1.0). Quarterly the verdicts themselves get backtested against 30-day Shopify-true data.
Volume this weekCount
Ads launched (33.6/day vs 30-40 mandate)168
· new-concept test variants (9 concepts)58
· iteration variants (single-variable, parent-linked)27
· copy-clones into scaling structure (winners)83
Pooled concept reads decided (target 6-10)7
· verdictsKILL 3 ITERATE 1 KEEP 2 SCALE 1
Human overrides of verdict rules (logged w/ reason)0
The ITERATE specifies its rung (rung 3, re-hook: LP CVR ≥ account avg but G1-weak). "Iterate" is never a vague reshoot — the new row is parent-linked so lineage stays queryable.

Wins & patterns

SCALE graduations + Winner Pattern movements · representative
SCALE · CON-0007 · P03.A02.O01 · "morning Bible time instead of screen time" graduated
Faith lane × anti-screen wedge on the entry SKU — the cell that inherited V 0.9 from the 240d Faith Kit runner. Pooled Meta-CAC $22.40 (gate ≤$25) · 14 purchases (≥10) · LP01 read-through 34% (≥30%) · worst-plausible CAC $27.80 still clears $29 breakeven. Graduation protocol live: duplicated into ADV+ Cold, +20% ramp per 48-72h, 5 copy-clones week 1, Shopify-true CAC ≤$35 validation due Jul 3 — if true/Meta divergence beats the ÷1.40 factor by >15%, ramp freezes for recalibration.
WP-0003 · promoted hypothesis → emerging n=3 tests
"Grandparent-voiced wrapper (W03) clears G1 at ~1.7× account-median thumbstop on P04 cells." Evidence: TST-0009/0012/0014, 11 creatives, $1.4K. Grounded in the real account fact: 55-65+ is ~25% of spend converting 1.75-1.94 with zero creative addressed to it. Briefing default updated: P04 briefs open grandparent-voice unless testing against it.
WP-0002 · active · emerging n=3 tests / 9 creatives
"Authority cold-open beats mom-testimonial for P02: +28% thumbstop, −19% Meta-CAC vs control." Seeded from the historical decode (kindergarten-teacher spine, 119d Magic Kit) and confirmed by W25-26 tests. Needs 6+ tests for proven.
WP-0001 · RETIRED decayed
"Recycled 2024 mom-testimonial UGC still converts" — the account's #1 historic failure, formalized: proven-but-unconfirmed >90d auto-flagged decaying, killed by W25 re-test. Replacement beat it in test before retirement — never killed into a creative vacuum. baseline fact
Patterns must cite tests — no vibes. A decided test with no learning link is flagged incomplete in the ledger (0 incomplete this week). This block IS the role-profile line "document winning patterns by product, audience, hook, angle, offer," rendered as a live query, not a doc someone remembers to write.

Top-3 learnings — Jack-annotated

The bounded human 15 minutes · representative
1 · TST-0009 · grandparent voice unlocks the money already spent
W03 wrapper on P04.A09.O04: G1 thumbstop 41% vs 24% account median. The 25%-of-spend 55-65+ audience responds the first time anyone talks TO them.
[Jack] Brief two more W03 concepts (passing-down-faith scene, "for the grandkids' visit" containment) before touching budget. The wrapper is the unlock, not spend.
2 · TST-0011 · objection-handling belongs on the LP, not in the hook
A08 lost-pieces pre-handle as the hook: CTR flat, but LP02 read-through +9pts when the claim moved into the advertorial claim stack. VOC's #1 purchase killer converts as reassurance after the click, not as the scroll-stopper.
[Jack] A08 routes to an LP block on /10-reasons; hooks stay on the anxiety line. Coordinating the LP module with Lifecycle (ISS-016 adjacent).
3 · TST-0006 · price-reframe is not a cold-open
A12 (one-time vs Lovevery subscription) KILLED at G2: CPC $1.71, read-through 19%. Cold traffic won't carry comparison math in 3 seconds.
[Jack] A12 retreats to retargeting + an LP comparison module. The angle survives (saturation_state unchanged); the placement was wrong. No resurrection without a new hypothesis — logged.
Annotations are the only free text on this page and they're stored on the learning row (learning_id FK from the test), so next quarter's backtest can score whether the human calls aged better than the gates.

Issue router

8 flagged · auto-detected by rules, classified by Jack pre-send, routed by stage owner
Funnel stage
Owner
Status
IdFlagged byIssueEvidenceStageOwnerStatus
ISS-014weekly rollupCheckout completion 46.1% vs 60% target — the single biggest blended-ROAS lever (+33% orders at same spend)45% TTM baselinecheckoutLifecyclein-progress
ISS-015day-1 auditEarly Learning store homepage is a broken placeholder receiving live paid trafficstorefront teardown baselinelpLifecycleopen · verify w/ Josh
ISS-016LP gate (EV scorer)O03 motor-skills bundle has no N-reasons advertorial — 3 queued cells BLOCKED from queue entry, auto LP-build request firedscale only follows advertorial-backed concepts (187- and 111-copy winners) baselinelpLifecyclerouted
ISS-017matrix auditO09 entry-bundle $39-59 tier missing — AOV ladder gap ($20 → $130) throttles offer-rung testsfree-ship threshold $65 implies target AOV $55-75 baselineofferLifecyclerouted · dependency logged
ISS-018fatigue monitorBusy Book incumbents at frequency 4.0-5.4, first-time-impression ratio sub-30% — audience exhausted, refresh briefs auto-spawned (same cell, new wrappers W08/W09)187 copies = saturated wrapper baselinecreativeJackin-progress
ISS-019day-1 auditSale-badge fatigue: 8 of 16 best-sellers on perpetual sale — price-integrity leak vs net-margin targetstorefront teardown baselineofferJoshopen
ISS-020day-1 auditNo post-purchase upsell, no FBT, no replen subscription (chore charts / flash cards are 6-12mo replen SKUs) — repeat rate stuck at 4.5%repeat 4.5% TTM baselinepost-purchaseLifecyclebacklog
ISS-021day-1 auditThree domains (hadleydesigns.com / earlylearning / printables) splitting attribution and brand equity — degrades pixel signal under every read gate; 301-consolidation already on the Day 30-60 planstorefront teardown baselinetrafficJoshbacklog
Rules flag, humans classify, owners fix: the stage enum (creative / traffic / offer / LP / checkout / post-purchase) is Jack's 10-minute pre-send pass, and it's what makes this a FUNNEL scorecard instead of a creative report — six of eight issues this week route AWAY from creative. An issue stays on every Friday send until its owner closes it; closure writes back to the ledger so the monthly refresh can audit time-to-fix by stage.

Archive — past weeks

Append-only · every Friday send is a frozen ledger snapshot, re-queryable
WeekCells → IN-TESTDecidedSCALETrue CACMERSent
W2026-26 Jun 22-26 (this page)971$50.4050.6%on time representative
W2026-25 Jun 15-19 · first live week (part-week: ramp + seed ingest)60 (no pooled read matured)0$52.2051.5%on time representative
Pre-engine (≤ Jun 14)no ledger rows — engine starts 2026-06-15. The 400-ad Foreplay decode is ingested as seed history (production_source: recut, mapped to registries: Faith Kit 240d → P03.A05/A06 · LP01, Busy Book 186d → A03 · LP02, …) so rollups have priors from day 1, clearly segregated from live rows.
At 52 weeks this table paginates and gains the same filter row as the issue router; every historical scorecard stays one click away and every number in it re-derives from fact_creative_day — archives are queries pinned to a date, not saved spreadsheets.

Monthly strategy refresh

Next: 2026-07-01 · generated from the same rollups — never from taste
heatmap P×A×O win rate, avg true CAC, proven spend per cell, by format — the role-profile "documented winning patterns" as a live query
leaderboards hook family · wrapper win-rate · authority figure · affiliate hit-rate (roster decisions) · talent dimension
fatigue half-life by concept → predicted refresh demand for the coming month's queue
matrix audit add personas/angles surfaced by VOC (human-approved, append-only) · prune dead offers · re-weight EV coefficients against last month's win rates
calibration refit the ÷1.40 attribution factor vs Shopify referrer revenue · gate-threshold review (v1.0) · quarterly: backtest the verdicts themselves — >20% wrong in one direction moves the gates and logs the change
First refresh assembles 2026-07-01 from W25-26 rows + seed history
2 of ~4 weeks of ledger accumulated representative
Same group-bys, longer window, plus the audit passes — the strategy doc is a rollup artifact, so "monthly creative-strategy refresh" costs hours, not a week, and can never drift from what the account actually did.