For months, Cheerbit's Instagram did one thing: repost the images and short videos the app itself generates. Pretty affirmation cards, straight from the product. Total conversions from all of it: zero.
The diagnosis
The problem was not the art. It was that I was posting the product, not marketing it. An affirmation card is the exact thing the app makes. Give it away for free in the feed, with no hook and no context, and a scroller gets the entire value up front. There is no reason left to download.
Worse, the one thing that makes Cheerbit different never appeared on screen. Cheerbit matches affirmations to the mood you are actually in, including the hard ones: angry, sad, overwhelmed. That is the whole idea, and none of the posts showed it. The reels had color and energy, but no hook, and nothing that only Cheerbit could say.
The idea: treat every ad as an experiment
Instead of guessing at one "good" video, I wrote five, each betting on a different reason someone stops scrolling. Held production roughly equal, changed only the hook. Whichever wins does not just hand me a video to boost. It tells me what this audience responds to, which makes every ad after it sharper.
| # | Concept | The bet it tests |
|---|---|---|
| 01 | Not Today, Toxic Positivity | Does meeting a hard mood (anger as a valid start) out-hook a happy one? |
| 02 | Mood Morph | Does the pure visual mechanic, no problem framing, hook on its own? Best for reach. |
| 03 | Midnight POV | Does story-first, with the app hidden for four seconds, beat leading with the product? |
| 04 | It Changes With You | Does a plain feature demo hook on curiosity alone? The cheap baseline. |
| 05 | The Chameleon Talks | Does a voiced character with attitude out-hook faceless text reels? |
What I built
Three of the five, produced as finished vertical reels. Every frame is built from the app's real mascot poses and its exact in-app mood gradients, so the ads and the product feel like one thing. All three are silent-legible, because most people scroll with the sound off.
Build note: these are not template exports. Each reel is a deterministic HTML and CSS animation with a seek(t) timeline, rendered frame by frame with headless Chrome and encoded to 1080×1920 H.264 with ffmpeg. That let me drive every motion from the app's own color tokens and art, and re-time all three for readability in one pass.
How the test runs
Post all three organically first. Same time of day, a few days apart, so they do not compete and the read stays clean. No paid promotion yet. The numbers that decide it are not likes.
Only once one hook clearly wins does budget go behind it.
The guardrails I held
No competitor comparisons. The tension comes from the cliche "just be positive," never from another app, and every concept resolves to momentum rather than negativity. No clinical or medical claims, because Cheerbit is a wellness product, not treatment. The brand can be direct and still stay honest.
Where it goes next
Two concepts are still on the bench (the voiced mascot and the feature demo), waiting on what the first three teach me. Results are pending by design: the point was not to declare a winning ad, it was to build a system that can find one, and keep finding the next one. When the retention and saves data comes back, it sets the direction for the following batch.