Personal Project · Launch Campaign
Dream Network
Your dreams are talking to each other.
A launch campaign for Dream Network, my AI dream journal. We wake up holding a dream and lose it before the coffee is ready, so we never notice the same door or the same stranger coming back. The campaign sells memory: one dream is a puzzle piece, and Dream Network keeps the box.
A 15-second Reels spot. Every frame is rendered from the working demo, not mocked up.
Freud and Jung, in print
Two print ads that hand the brief back to the men who started it: each quotes the original text, then the app answers. Through Freud’s lens the key glows pink, through Jung’s it glows violet.


In bookstores, a bookmark in every copy of The Interpretation of Dreams: “Log tonight’s dream. Freud reads it in the morning.” At night bus stops: “You’ll forget tonight’s dream by 8:15. Unless.”
Stories and hooks



- “I’ve dreamt about the same door 4 times this year.”
- “Freud and Jung read my dream. They disagreed.”
- “Stop googling ‘dream about teeth falling out’.”
Testing plan: predict, then prove
Ad budgets usually pay to find out what doesn’t work. This plan spends that money on a guess that has already been checked. Every variant is first shown to AI personas built from the target audience, only the predicted winners go live, and then the prediction itself gets graded.
| # | Stage | What happens | Output |
|---|---|---|---|
| 0 | Predict | 18 variants (3 hooks × 3 formats × 2 end cards) are shown to 4 AI personas. Each persona reports whether it would keep watching past 3 seconds, and whether it would install. | A predicted ranking. The top 4 variants move on. |
| 1 | Prove | The 4 survivors run as a live split test on Reels and TikTok, with equal budget, for 7 days or until one leads at 90% confidence. | Real cost per install and 3-second hold rate. |
| 2 | Calibrate | Predicted ranking vs real ranking. Wherever a persona got it wrong, its profile is corrected before the next round. | A simulation that gets more accurate each round. |
| 3 | Retain | Track the installs from the winning ad. | The share of new users who log 3 dreams in their first week. |
| # | Persona | Who they are | What should move them |
|---|---|---|---|
| P1 | The night journaler | Already writes dreams down, in Notes or on paper | “I’ve dreamt about the same door 4 times this year.” |
| P2 | The psych-curious student | Watches psychology content on TikTok, quotes Jung | “Freud and Jung read my dream. They disagreed.” |
| P3 | The sleep tracker | Wears a ring or a watch, loves a chart | The timeline and the mood colours |
| P4 | The skeptic | Thinks dream reading is nonsense | A stress test: does the ad hold up without the mystique? |
Hypotheses. H1: a specific memory (“The key from March came back in August.”) holds viewers past 3 seconds better than a general promise. H2: the Freud vs Jung split screen wins with P2 and loses with P4. H3: if the skeptic keeps watching, the ad is about memory, not magic, and that is the version to scale.
The number that matters most comes after install: how many new users log three dreams in their first week. If the ads bring installs but not that, the promise is wrong, not the budget.
Test spec (machine-readable, for agents)
{
"campaign": "dream-network-launch",
"objective": "installs that retain",
"north_star": "share of new users logging >= 3 dreams in week 1",
"variants": {
"hook": ["same-door", "freud-vs-jung", "teeth-falling-out"],
"format": ["selfie-video", "freud-jung-split", "product-replay"],
"end_card": ["Your dreams are talking to each other.", "Sleep on it. We’ll connect it."]
},
"stage_0_predict": {
"method": "ai-persona-simulation",
"personas": ["night-journaler", "psych-curious-student", "sleep-tracker", "skeptic"],
"signals": ["hold_3s", "install_intent"],
"keep_top": 4
},
"stage_1_prove": {
"channels": ["instagram-reels", "tiktok"],
"budget_split": "equal",
"primary_metric": "cost_per_install",
"secondary_metric": "hold_3s_rate",
"stop_rule": "90% confidence or 7 days"
},
"stage_2_calibrate": {
"compare": "predicted_rank vs observed_rank",
"action": "update persona profiles where rank error > 1"
},
"hypotheses": {
"H1": "specific-memory hook beats generic promise on hold_3s",
"H2": "freud-jung-split wins with psych-curious, loses with skeptic",
"H3": "skeptic retention predicts the variant to scale"
},
"status": "spec, not yet run"
}*A spec campaign for my own project. The dreams shown are made up. The idea, copy and direction are mine; I worked with AI throughout production.