TM★
← All 35 projects

The Social Manager

Blue Glass Farm2026
Claude CodeMeta Marketing APIDuckDBNext.jsReactTypeScriptstatisticsmarketing

An agentic pipeline that makes Claude the interface to Meta ads. Hundreds of high-variance ads shipped from markdown, then mined with real statistics to learn what actually sells vegetables.

Meta's Ads Manager is absolute nightmare fuel. The interface is terrible, everyone who uses it knows it, and for most advertisers it's just a tax. For me it was the wall between my farm and a strategy I was sure would work.

I run Blue Glass Farm, and I'd had real success selling our CSA with hand-run social ads. Every one of them was me shooting from the hip. Write it, click through Ads Manager, hope. I wanted to scale that, and not by running more of the same ad. The idea was variance. Publish a large volume of wildly different ads and let Meta's optimizer, which is genuinely good at its job, find the ones that sell vegetables. Meta even multiplies the variance for you. One flexible ad takes up to five bodies and five headlines and tests all twenty-five combinations. The strategy was sound. Executing it was the problem. Hand-building hundreds of ads through that GUI is exactly the kind of work that kills a good idea, Meta's bulk import is too limited to save you, and farming doesn't leave spare hours for any of it.

So I stopped treating Meta's interface as the interface and made Claude the interface instead. I built a set of agent skills over the Meta Marketing API, so campaigns, ad sets, creatives, audiences, and insights each became a small script an agent can drive. In that system an ad is a markdown file, some frontmatter and a few headed sections of copy, and one command turns it into a fully built Meta creative. Imagery comes by tag from the photo organizer I'd already built for the farm, so asking for one of our good June harvest shots is a lookup instead of an afternoon.

An AI writing customer-facing copy at that volume needs guardrails before it needs features. Generic AI copy loves to invent claims, and a farm ad that says "organic" when you aren't certified isn't a typo. It's a trust problem with people who shake your hand at pickup. So I wrote the farm's verified facts into reference files, what the CSA actually includes, real prices, real pickup details, and the claims we don't make, with one hard rule on top. No customer-facing copy gets written without reading those files first. And because agents make mistakes at machine speed, everything is created paused. Claude can build an entire campaign, but nothing spends a cent until I look it over and flip the switch myself.

That machine ran the 2026 sales campaign, and it went incredibly well. For about $1,200 in ad spend, the campaign put the farm in front of 36,000 people across 92,000 impressions, pulled a 2.43% click-through rate, more than double what e-commerce ads typically manage, and Meta's pixel credited it with a 4.94 return on ad spend. That figure is a floor. CSA purchases mostly happen days later, on another device, out of the pixel's sight, and my best estimate is that closer to $20,000 of the season's $33,311 in CSA sales traced back to the ads, which would put the real return at something like 16 times what we spent. Not bad for what was, all in, my second Meta campaign ever, built on a few hours of YouTube University research, what Claude could teach me, and my own imagination.

Part of why it went so well is the second half of the project, the analysis. The traditional playbook is an A/B test. Pick one variable out of thin air, change it, and wait. But I was already sitting on hundreds of live variants that Meta had been testing against each other all season, so instead of inventing an experiment, I mined the ones already running. Which variables were actually doing the work? The copy, the imagery, or the offer? The answer embarrassed my production values. My still images beat my videos, and the shots from my worst camera performed best of all, because they were really pretty tomatoes. The subject matters more than the quality of the photograph.

Getting an honest answer like that out of hundreds of variants takes real statistics, not eyeballing a dashboard. A sync script pulls the account's full insight history into immutable JSON snapshots, loads them into DuckDB, and refines them into clean tables, including Meta's per-asset breakdowns that attribute performance to each individual body, headline, and visual. On top of that sits a statistics engine that tests every variant against the pooled rest, with two-proportion z-tests, Wilson score intervals, and Benjamini-Hochberg false-discovery correction, because when you test dozens of sentences across six metrics, something will always look like a winner by pure luck. Sample size is measured in impressions and spend, never row counts, and the metrics are ranked by how close they sit to money. Cost per landing-page view comes first, because at a farm's ad volume it's the deepest point in the funnel with reliable signal.

Meta's own analytics leave a lot to be desired, so the last piece was dashboards of my own, built in Next.js on that same data. Account health, per-ad scorecards with sparklines, and a "What's Working" view that ranks hooks, headlines, and visuals with honest confidence intervals. The question they answer best is about time. Is an ad still trending up, or has it started to decay as the season moves on?

That question is the real payoff. The 2026 campaign started from hand-run wins and gut feel. The 2027 campaign starts from a ranked list of what already worked, read off our own data. I used to open Ads Manager and guess. Next spring I'll open my own dashboard and know.

Say hi.

Got a problem that looks like this one? I want it.
Got one so new nobody's even scoped it? I want that one more.