Giving Claude Code $1,500 and Full Access to a Meta Ads Account

8 min read

  • ai
  • meta-ads
  • claude-code
  • marketing
  • automation

Note: This first appeared on Medium. The results are in Part 2.

Illustration from the original post

TLDR: Day 2/30 of an experiment letting Claude Code autonomously run a Meta Ads account via a number of tools and skills:

  • ICP research
  • Creative strategy
  • Ad creation via Nano Banana Pro API, including a review loop.
  • Building landing page variants (within the NextJS app inside the same project)
  • Analysing web traffic data from PostHog
  • Interacting with the Meta API to publish, edit, pause ads
  • Creating a thorough changelog each day of rationale, reasoning, and key updates.

The only human input is typing /let-it-rip into the terminal 1x per day.

Note: If you just want to skip to the results, check out the follow-up article here.

Illustration from the original post

About 12 months ago, I tried building something similar using n8n. A marketing agent that could analyse performance, generate creative, and manage campaigns autonomously. I hated the term agent, because it was it was being misused by 90% of people as there were very few actual functional agents out in the wild.

The n8n system sucked since even though the individual pieces ran ok in isolation, nothing blended into an actual system. Models just weren’t powerful enough to maintain context across decisions, and the orchestration/tool calling was fragile.

Since then we’ve had a couple of LLM step-changes, big advancements in image & video gen models, and powerful general-purpose harnesses like Claude Code.

Meta paid $2 billion for Manus a couple days ago, which means the gap between “almost works” and “actually works” feels like it’s closing faster than expected.

This is an experiment to test that.

Illustration from the original post

The Setup

For the next 30 days, Claude Code is managing a Meta Ads account. Real budget (minimum $1k, hopefully more).

The only human input is running a single command once a day in the terminal

claude --dangerously-skip-permissions /let-it-rip

CC decides what ads to create, what to pause, what to scale. The goal is to acquire newsletter subscribers at the lowest cost possible.

(In the name of science, I won’t reveal the name of the site for a couple of weeks in case it skews results).

HOOTL (human-out-of-the-loop) rationale

Disclaimer: I’m not advocating for a future where AI runs everything without human judgment. I’m also not proud of any slop that will likely get produced. But the tools exist now, and it seems worth seeing what they can actually do in practice.

There’s a lot of discussion around human-in-the-loop workflows, which are undeniably the way to go. Combining human expertise and judgement with machine efficiency and scale.

But I’m just super intrigued by systems that can and do operate autonomously, and the speed at which things are becoming possible.

It’s a great way to truly identify where a human is best suited in the loop, and then scaling workflows back based on first principles.

Where This Is Heading

If you’ve run Meta Ads over the past few years, you’ve watched control slip away:

  • Advantage+ removed manual placement decisions
  • Andromeda made creative the primary targeting mechanism
  • Budget optimisation became increasingly automated

The logical endpoint is pretty clear, and Zuck is even on record saying it:

“Our goal is to make it so any business can tell us what objective they are trying to achieve, like selling something or getting a new customer, and how much they are willing to pay for each result and we do the rest.

This experiment is a scrappy preview of that future, built with tools available today.

Illustration from the original post

Inspired by Project Vend

Anthropic ran a similar experiment earlier this year. Project Vend gave Claude control of a real vending machine in their SF office. Manage inventory, set prices, run a small business.

Illustration from the original post

Source: Project Vend Phase 2: https://www.anthropic.com/research/project-vend-2

It went pretty shite in the beginning, but recovered once Anthropic added some extra tools + more guardrails.

Get Giorgio Liapakis’s stories in your inbox

Join Medium for free to get updates from this writer.

Subscribe

Subscribe

Remember me for faster sign in

Claudius lost money over time, employees manipulated it into selling products at a loss. And it had an identity crisis at one point, insisting it was a human wearing a blue blazer.

The guardrails for this experiment are based on those learnings. Hard budget caps + explicit decision rules (pause any ad over a certain CPA, scale anything under it). Full memory and reasoning log, just as a human creative strategist + media buyer would.

Whether you support it or not, try watching their recap and not be fascinated. Scary, yes. But fascinating regardless.

Claude Code as a general purpose harness

The whole thing runs on Claude Code, which is marketed as a coding tool.

And if you’re a power user, you’ll know that Opus 4.5 has made it borderline addictive to use.

But it’s slowly getting recognised as general purpose agent. A framework for giving Claude tools, memory, and autonomy to locally work on files.

For this experiment, Claude Code provides:

  • Skills: Custom capabilities for generating ad images (via Gemini), calling the Meta Marketing API, analysing performance data, researching competitors. This was released by Anthropic a few weeks ago and looks like it’s going to become an industry standard which is fantastic news.
  • Persistent Memory: Markdown files that carry context between sessions. A changelog of every action. Accumulated learnings about what works. Campaign history over time.
  • MCP Servers: At the time of writing, I have only 2 MCP servers active in this project. One for Reddit research, and another for Posthog. For all other functionality, I decided to roll my own tools as Python scripts within skills to avoid the context bloat from having a bunch of MCP servers. Anthropic is working on ways around this (programmatic tool calling etc), so hopefully we can make MCP great again. In the meantime, this frankenstein setup will do!
  • Decision Frameworks: Rules files that define when to pause an ad, when to scale spend, what makes good creative, how to diagnose problems.
  • Tool Orchestration: The ability to chain actions. Research a trend, generate creative, upload to Meta, create ad, log the decision.

Illustration from the original post

Claude Code works for any knowledge work that can be broken into tool-based steps, and I have been churning through tokens recently trying to apply it to many different marketing use cases. So more experiments to come.

Claude Opus 4.5 (reasoning + tool calling)
↓
Claude Code (orchestration layer)
↓
Skills (image generation, Meta API, analytics)
↓
External APIs (Meta, PostHog, Reddit)
↓
Persistent state (changelog, learnings, history)

This is essentially what failed 12 months ago with n8n. But models have gotten meaningfully better at maintaining coherence across multi-step workflows. Opus 4.5 in particular seems to handle tool orchestration without losing the plot.

Illustration from the original post

What Could Go Wrong

To reiterate, don’t try this at home. This is not a sign to overhaul your performance marketing team. If anything, the big brain move would be to double down on human expertise while the rest of the market produces slop.

But in the name of science, here are some things I’m worried about:

Creative intuition: Can Claude make genuinely good creative decisions? Or will it optimise for metrics while missing something a human would catch? Initial pre-testing was sloppy, but fixed by adding an extra loop for reviewing creative after generation and self-marking.

Edge cases: The rules cover common scenarios. What happens when something unexpected comes up?

Over-optimisation: There’s a risk of optimising for what’s measurable (cost per lead) while degrading what isn’t (brand perception, audience quality).

A massive part of this is the long-term memory that we’re logging each day for the agent to reference the following day. By the end of the experiment, we can assess where the weak points are, and even build a self-improving system when certain edge cases occur.

What’s Next

This is a scrappy MVP but it’s functional.

Plenty of ways this could be extended and also disassembled for parts.

Next week I’ll share more around the initial results, insights, and anything crazy Claude has decided to do.

Shout out if you have any questions or are building something similar!

← More posts