The 8-month arc · May 2025 engagement → CTV Aug 11 2025 → Apr 2026.
The feedback loop was disconnected. The way they measured success was wrong. Acquisition strategies were hitting diminishing returns. Spend climbed +64% MoM yet new-customer CAC blew +55% and one-time CAC blew +142% - Meta CAC held flat at $138 and that was the headline they were tracking. The composed view told the truth: the system needed a strategic pivot.
Operating model reframe delivered. “It was never a Meta problem. It was a mix problem.” Audit → align → bridge. Cash-view (CFO) and accrual-view (CMO) reconciled in one operating model. Vendor measurement became a guide, not a gospel. Triangulation replaced single-source decisioning.
Phase 1 hero · Aug 11 – Oct 5 2025. Halo-forward CAC compressed from a $42.69 pre-CTV baseline to $32.58 over 8 weeks (−24%). Phase 2 (Oct – Dec, 9 weeks of holiday brand-layer cuts) drifted to $41.70. Phase 3 (Dec – Mar, 16 weeks, brand-layer restored at 40% intensity) settled at $40.20. Every week of the 33-week arc held below the pre-CTV baseline. MER trajectory aligns with brand-converted demand landing in highest-retention cohorts.
Is the ad doing the work?
The format is the ad. TV viewers watch 94% of the spot through; social viewers watch 28%. That gap is the whole reason TV moves the funnel - the ad has a chance to land. But there are two ways creative dies: showing it too often (4×/wk is the band; above that the halo decays early) and never refreshing (after 6 weeks, fatigue sets in).
scipy curve-fit on (frequency, video completion rate) tuples. Onboarding plan: creative-asset ingestion via Python worker (HuggingFace transformers) Q1 of engagement → per-creative scoring lands here ~30d in. The 8-month arc on the brand-layer side already proves the format thesis. This layer adds creative-level resolution on top.Frequency cap simulator · halo decay onsetIndustry band 4–6× per household per week · saturation onset 7–8× · "negative reach" past 8×
Sweet spot. Halo establishes cleanly. Decay onset ~day 14, on-curve with ad-stock model.
The creative-as-lever layer. Creative is the variable that shifts every other layer's read. A great creative held at 4×/wk extends halo by 2–3 weeks vs the same creative at 6×/wk. A bad creative at any frequency just burns budget.
MethodologyHill curve + CLIP creative scoring · how this gets to v2
Frequency-fatigue model. Hill curve fit on (frequency, video completion rate/CTR) per creative: response = max · f^k / (k_half^k + f^k). Sweet-spot 4-6×/wk, saturation onset 7-8×, negative-reach past 8×. Reference: Tellis 1988 (Effective Frequency), Naples 1979. Production fit via scipy curve-fit in Python worker; this dashboard renders the fitted curve.
Creative-style scoring. CLIP / VideoMAE embeddings via HuggingFace transformers on each ad variant - runs locally in the Python worker. Cluster the embeddings to identify creative styles (humorous / aspirational / direct-response), regress style against performance per channel. Local compute, no paid VidMob dependency. ~70% of VidMob accuracy at $0/mo. Brand-of-record creative-effectiveness positioning (if needed at scale) layers VidMob on top.
Multi-armed bandit allocation. Once 2+ creatives are live + producing daily impressions, fit a bandit (Thompson sampling via mabwiser) to recommend optimal rotation weighting. Cuts creative testing time by 40-60% vs equal-rotation A/B.
Refresh recommendation. Triggered by: (a) weeks-live ≥ 4 (rotate fresh in), (b) video completion rate decayed >4pp from baseline (rotate), (c) weeks-live ≥ 6 OR video completion rate decayed >8pp (pause now). Surfaces in the dashboard as a per-creative pill.