A freelance client (a local sports facility) needed ongoing paid social management: creative testing, budget reallocation, scaling winners, and cutting underperformers. Done properly that is a daily discipline, reading spend, ROAS, CPA, CTR, and frequency every morning and acting on the trends, and analytics-driven decisions at that cadence are nearly impossible to sustain alongside full-time work.
An agent on the official Meta Ads MCP that runs the full media-buyer loop. Every morning it scans the account: spend, ROAS, CPA, CTR, frequency, and flags any ad past its kill thresholds. Weekly it audits the whole account against 7 and 30 day trends, detects creative fatigue, researches competitor ad libraries, and writes production briefs with specific hooks, angles, and test hypotheses. Then it builds the work itself, from campaigns and creative variants to budget reallocations and scaling moves.
Money keeps one rule: everything the agent creates ships paused, and a human activates it. That one rule is what makes the rest of the autonomy safe to hand over. It did not start this general. The first version was built for one specific client, a local sports facility, and once the loop proved itself there it got generalized: now the agent interviews any business owner and configures its own thresholds, budgets, and creative angles from that conversation, with the original client as the reference installation.
The sharpest part is what it optimizes toward. Wired into the client's CRM, it reads who actually booked and showed, not just who clicked, ties each booking back to the exact ad that drove it, and feeds those real conversions back to Meta so delivery learns on bookings instead of cheap clicks. Most ad agents chase a proxy metric; this one closes the loop from spend to a person on the court.
The loop / daily grind, weekly depthEVERY MORNING ..... SCAN SPEND, ROAS, CPA, CTR, FREQUENCY FLAG .............. ADS PAST THEIR KILL THRESHOLDS EVERY WEEK ........ FULL AUDIT, 7 AND 30 DAY TRENDS CREATIVE .......... FATIGUE DETECTION + BRIEFS WITH TEST HYPOTHESES RESEARCH .......... PUBLIC AD LIBRARY FOR COMPETITOR ANGLES BUILD ............. CAMPAIGNS + VARIANTS, SHIPPED PAUSED OUTCOME ........... REAL BOOKINGS READ FROM THE CRM, PER AD FEED BACK ......... BOOKINGS SENT TO META VIA CONVERSIONS API SPEND GOES LIVE WHEN A HUMAN SAYS SO. ALWAYS./ The trust boundary
Autonomy is a dial, and this agent runs it high everywhere except the wallet. That freedom is earned by a layered trust boundary, not a single guardrail. Everything it makes ships paused. Spend only starts when a human types a confirmation. The real money limits sit in the ad account and on the card, where the agent cannot reach them. Every write is appended to a ledger that is never edited. And every number in a report is computed from raw data, never the model's memory, so it can say "cannot verify" but it cannot invent a figure. The same pattern runs through everything else in this log: drafts that never send, fixes that wait for approval, spend that goes live on a human's say-so.
Bounded autonomy / how it earns the freedomSHIPS PAUSED ...... EVERY CAMPAIGN, VARIANT, AND BUDGET MOVE GO LIVE ........... SPEND STARTS ONLY ON A TYPED CONFIRMATION WALLET ............ ACCOUNT + CARD LIMITS IT CANNOT TOUCH LEDGER ............ EVERY WRITE APPENDED, NEVER EDITED NUMBERS ........... COMPUTED FROM RAW DATA, NOT THE MODEL AUTONOMY HIGH EVERYWHERE. FREEDOM TO SPEND, NOWHERE./ From build to handoff
It ships as an installable skill, not a script only I can run. The package carries a plain-language owner's manual, a teaching-call script, and a pre-shoot creative card, built so a non-technical operator installs it and runs the daily loop on their own. The design assumes I am not in the room: jargon defines itself the first time it appears, starting spend takes a typed confirmation, and the agent warns about its own expiring logins before they break anything. I built the buyer and the handoff around it.