The Problem
Cheap Trials Were Masking Expensive, Low-Quality Acquisition.
Wrong Optimization Metric: Trial CAC rewarded cheap signups, even if those owners never launched a campaign. The team needed CPAO: cost per owner who activated by launching a marketing campaign within 14 days.
Creative Fatigue Without a System: Performance was decaying after early creative wins, but there was no consistent rule for separating a weak channel from a tired asset.
AI Without Governance Risked Becoming Noise: A useful agent needed to generate briefs and explanations, but budget recommendations had to remain deterministic, auditable, and human-approved.
Tablr is a fictional B2B SaaS product for independent restaurant owners. The project simulates 12 weeks of paid media, product activation, subscription, and revenue data to test whether a growth team can use AI to move faster without giving up measurement discipline.
Measurement Strategy
CPAO Reframed the Channel Decision.
Trial CAC was treated as context, not the decision metric. The primary metric became Cost Per Activated Owner, defined as spend divided by owners who launched their first Tablr campaign within 14 days of trial signup. That behavioral milestone is much closer to future subscription value than a top-of-funnel signup.
Acquisition Quality
The Decision Engine Ranked Channels by Activated Value, Not Click Volume.
| Channel | Trial CAC | CPAO | LTV:CAC | Recommendation |
|---|---|---|---|---|
| TikTok | $12 | $143 | 2.03x | Scale Candidate |
| Google Search | $21 | $248 | 0.96x | Observe |
| META | $52 | $666 | 0.48x | Hold |
| No data | No data | No data | Insufficient Data |
At a $150K monthly budget scenario, the allocator recommended increasing TikTok to 55.8% of spend while holding META to 12.0%. The system did not make the budget change. It produced a recommendation package with evidence, risk, and next-test logic for human review.
Creative Intelligence
AI Generated Testable Briefs, Then Analytics Decided What Deserved Budget.
Sixteen creative briefs were generated across restaurant owner personas, hook types, channels, and funnel stages. Each creative preserved the strategy behind it: persona, pain point, value proposition, opening hook, proof type, variable tested, control ID, and compliance notes.
| Hook Type | Trial CAC | Strategic Role |
|---|---|---|
| CONTRAST | $216 | Before-and-after framing for skeptical independent owners |
| OUTCOME | $234 | Revenue result focus for owners already seeking growth |
| SOCIAL_PROOF | $241 | Peer restaurant success for evidence-driven operators |
| DEMONSTRATION | $258 | Dashboard setup walkthrough for hands-on evaluators |
| FOMO | $271 | Competitive urgency for growth-minded owners |
| PROBLEM_AGITATE | $289 | Pain-point amplification for cold audiences |
Experiment Governance
Every Test Had a Primary Metric, Guardrail, and Decision Rule.
The experiment registry prevented the agent from treating every performance lift as a win. A result had to clear both statistical confidence and practical significance before being promoted, and guardrail violations automatically downgraded scale recommendations to hold.
Architecture
The LLM Could Explain Decisions, Not Make Them.
RECOMMEND_ONLY=True is enforced throughout the system. The output is a decision packet for a human operator, not an autonomous media-buying agent.Impact
What the System Made Visible
The most important output was not an AI-written ad. It was a repeatable operating model: generate strategically structured creative, measure quality past the click, detect fatigue, apply deterministic policy rules, and ask a human to approve the next move.
Limitations
The Simulation Is Honest About What It Cannot Prove.
- Synthetic data: All restaurant owners, campaigns, spend, revenue, and outcomes are simulated for portfolio demonstration.
- Short observation window: The 12-week period is not long enough for mature M6 retention on newer cohorts.
- No live platform mutations: The project does not call Meta Ads, TikTok, Google Ads, or LinkedIn campaign APIs to spend money or alter campaigns.
- Mock analyst layer: The LLM-style narrative layer is a controlled provider pattern, not a production deployment with full prompt evaluation.
- Attribution remains imperfect: UNKNOWN source records are preserved as a visible data quality issue, not forcibly reassigned.
Tech Stack
Tools & Methods
Source Code
Code & Documentation
Full project documentation, synthetic data generation, Streamlit dashboard code, decisioning logic, and tests are available on GitHub.
View on GitHub