We built an ad machine
that plants trees 🌳

A build-in-public case study: one founder, one AI agent, 90+ creator videos, and a children's book about a small brave owl β€” wired into a system that tests everything, learns from every dollar, and traces every sale back to the exact video that caused it.

92creator videos ingested & transcribed
110+ads built programmatically
3live campaigns right now
100%of sales traceable to their video

The idea

Creative testing as a tournament, not a guess

Most ad accounts let the algorithm pick favorites before creatives get a fair shot. We flipped it: every video gets the exact same budget, the data picks winners, and the reasons they won get extracted and fed into the next generation of content.

Source UGC→ Transcribe + QA→ Equal-budget tournament→ Extract winning DNA→ Generate new content→ Repeat
Happy Hoots activity book, page-flip video frame
The product: a story + activity book where every copy plants a real tree, and kids earn a Forest Guardian certificate.
Captain Hoots animated outro frame
Captain Hoots β€” the animated end-card stitched onto all 92 test videos by an ffmpeg pipeline, so every ad lands the same ask.

What actually happened

The build, step by step

1Ingest everything

77 Instagram videos from 4 UGC creators, pulled via the creator platform's own API, integrity-checked (a whole batch once arrived silently missing audio β€” caught by verification, re-downloaded with the fix). Every video transcribed locally with Whisper. Total media cost: $0.

2Rate before spending

Every transcript scored against a brand rubric: does it mention the book? The tree-planting? The lessons? Is it book-focused or life-focused? Then a visual pass caught what transcripts can't see β€” 21 "silent" videos were actually text-overlay ads, some of the strongest brand content in the library.

3The $2 tournament

All 77 videos went live simultaneously β€” one campaign, 77 ad sets, $2/day each, budget optimization off so the algorithm couldn't starve anyone. Three days, ~$460, and every creative got a genuinely fair read: ~660 impressions and 15–25 clicks each.

4Fix attribution before scaling

1,370 visitors, zero attributed leads β€” the conversion pixel was firing from a sandboxed context with no click ID. We rebuilt tracking so every ad click writes its ID to the site, every captured email gets tagged in the store with the exact ad and placement that earned it, and every conversion event carries the thread back to Meta. No attribution model required β€” the data is just there.

5Winners graduate, learnings compound

Top 12 creatives moved to lead generation, then the best into sales campaigns behind an advertorial. New creator videos now flow in on a conveyor: export, dedupe across platforms, rank by organic views, download, transcribe, build, launch β€” a fresh 15-video sales test went from CSV to live campaign in one afternoon.

The data

What 77 fair tests taught us

Winners averaged a 40% hook rate against the losers' 19%. The best creative delivered site visitors at $0.07 β€” six times cheaper than the account's historical $0.42 average. And the patterns were unmistakable:

"I'm fuming." (conflict cold-open)
74.8% hook rate
Tablet saga, part 2 (serialized)
73.3%
"Husband threw out the books"
64.8%
Book-cover-first "pitch" videos
~17%
"Hello! Here are my favorite books"
~15%
Ads win in the first two seconds with a human face mid-drama. They lose by looking like ads.

πŸ”₯ The screen-time war is the live wire

Five of the top twelve ads were anti-iPad content. The audience β€” moms 25–45 β€” is actively fighting this fight and stops scrolling for it every time. The book's natural position: the thing that replaced the tablet.

πŸ“š Product content can win β€” packaged right

Book-focused videos won when they opened with parent identity ("the quality I most want to nurture is leadership…") and arrived at the book as the tool. Same content as the losers, opposite packaging.

🎬 Serialization works

The #1 and #2 ads were literally part 1 and part 2 of the same ongoing story. Cliffhangers aren't just for TV.

πŸ“ˆ Organic and paid attention correlate

We expected "bad organic = good ads." The data said no: the same story-style hooks win both feeds. The real divide is story-style vs. list-style.

Next frontier

Synthetic creators, cast like a film

The winning patterns became script templates. The scripts got a cast: named, reusable AI moms β€” designed against a strict spec (real kitchens, tired-but-warm, zero influencer glam) so sequels stay consistent. Meet Meg, generated from a casting prompt, headed for a head-to-head test against the human winners on cost-per-result.

AI-generated casting portrait: Meg, kitchen-confessional mom persona
"Meg, 34 β€” kitchen-confessional. Talks fast when annoyed."
AI-generated persona β€” not a real person
Captain Hoots outro: get the free book
Every experiment funds the same mission: more books read, more trees in the ground.

How-to

Build this yourself: the actual playbook

Everything below was built in conversation with an AI agent (Claude). No dashboards clicked, no code written by hand. These are my real prompts, pasted verbatim β€” typos, rambles, and all β€” because the whole point is that you don't need perfect prompts, you need clear intent.

All quotes are copy-pasted from the real chat. Yes, including the spelling.

1Start with a messy brain-dump

"We're going to take all of the videos that I downloaded the other night from SideShift and we're going to create ads… Each ad will start out with $2 a day and I want to test the creatives. I want to make sure that each ad actually gets the $2 because what happens sometimes is the budget doesn't allocate directly… I think each one has to be its own campaign, which is kind of crazy."

What happened: the agent found the 39 downloaded videos, moved them into an organized library, transcribed all of them locally for free, wrote the campaign architecture doc, and explained why my instinct about budget-starving was right (and how to do it with one campaign instead of 39).

πŸ’‘ State the goal, the fear, and the half-formed plan. Let the agent structure it.

2Make the money rules explicit

"Can you make sure there's no way it will spend more than $2 per day per ad set. Is there a campaign spending limit to set or no?"

What happened: it verified all 77 budgets via the API, set a $500 hard spend cap on the campaign, and explained the worst-case math (Meta can flex 25% on a single day, never more than 7Γ— weekly). Every campaign since gets built paused with a cap before a cent moves.

πŸ’‘ Ask for hard caps, paused-by-default builds, and verification β€” not promises.

3Push back β€” you know your business

"why would 4 work better than just having that on the home page? it's basically the same thing"

What happened: the agent had recommended a dedicated landing page. Instead of defending it, it loaded my homepage in a mobile browser, looked at it, and retracted the recommendation β€” the homepage already was a landing page. The real problems were elsewhere (attribution), and we fixed those instead.

πŸ’‘ When something smells off, challenge it. A good agent verifies instead of arguing.

4Spend a little, then interrogate it

"If we look at the visuals and the transcrips from the winning ads vs the losers, what did we learn?"

What happened: it joined ad performance to transcripts and frame-grabs, compared winners vs losers statistically, and wrote the five patterns into a learnings doc β€” which then became the script templates for the next generation of content. ~$460 of spend became a permanent playbook.

πŸ’‘ The test isn't the product. The extracted learnings are the product.

5Demand measurement that answers your real question

"UTMS should be more dynamic so we can see the ad that worked as the content, the placement as the medium and meta as the source… I want the emails to be measureable down to the ad that actually drove the impact and cross tabulated against the palcement."

What happened: dynamic URL macros on every ad, plus a tiny snippet pushed to the store theme via CLI β€” so every captured email is permanently tagged with the exact ad, placement, campaign, and even which form on the page converted. No attribution modeling, just facts.

πŸ’‘ If you can say the question ("which ad drove this email?"), the tracking can be built to answer it.

6Course-correct casually, mid-flight

"SOrry not ALL the videos, just the ones you suggested including the youtube ones"

What happened: the download job was already running. The agent updated the target list, messaged the running worker to drop the extra video, and added a safety exclusion downstream. Total ceremony: one sloppy sentence.

πŸ’‘ You can change your mind whenever. Say it plainly; the agent handles the cleanup.

7Automate the boring loop

"ok lets go live - do you have an automation to do a daily morning readout"

What happened: a scheduled task now runs every morning: pulls every ad's numbers, computes cost-per-result, ranks creatives, flags the kill list, and saves the data to disk so future analysis can join against it. I read it with coffee and make the calls.

πŸ’‘ Automate the reporting, keep the decisions. That division of labor is the whole trick.
"we can get really f***ing smart here. And if we do this really, really well, I'll be able to make a lot of money and plant a lot of trees."
β€” me, week one. Still the plan.

Live right now

The machine today

CampaignWhat it testsBudget
Proven winners β†’ advertorialThe 5 battle-tested creatives selling the book$36/day
Fresh batch β†’ advertorial15 brand-new creator videos, same funnel$50/day
Episode funnel testOne 3D animated episode β†’ 3 funnel depths (advertorial vs product page vs straight to checkout)$30/day

Every morning at 8am, an automated readout ranks every ad by cost-per-purchase, joins it to the video's transcript and placement, and flags what to cut. The humans drink coffee and make the calls.