The LaunchDeck Budget Optimizer is an autonomous agent for Meta and Google Ads. Every cycle it reads campaign performance, scores candidate reallocations, ships the move, and writes the audit trail — without a human in the loop. This page walks the loop step-by-step and pins the 30% shift cap + audit-log pair that makes the whole thing quotable.
LaunchDeck runs a single Budget Optimizer loop, end to end, on every connected ad account. The loop has four steps: audit the per-campaign performance and the prior cycle's decisions, optimize a candidate budget reallocation against observed ROAS, shift the budget through the 30% per-cycle shift cap, and log the move to the audit trail. Tomorrow's loop reads today's writes as its audit input.
The agent owns the cycle. There is no Publish gate, no strategist queue, no approval step between recommend and execute. The /audit-log is the verification surface, not a workflow gate — you see what changed after the fact, you don't clear a queue before the move ships.
Every loop iteration begins with an audit. The agent reads today's campaign_stats (spend, impressions, clicks, conversions, revenue) for each connected campaign, and reads the last fifty entries in budget_shifts / audit_events so yesterday's reallocations are part of today's input. The output is a per-campaign snapshot handed to the next step.
The Budget Optimizer sorts campaigns by observed ROAS, picks the top winner (ROAS ≥ 2.5) and the bottom loser (ROAS < 0.8), and proposes a reallocation between them. Every candidate move is scored against the 30% per-cycle shift cap — no single optimizer decision moves more than 30% of a campaign's budget into or out of it in one cycle. If the proposed shift would breach the cap, it's seeded across subsequent cycles instead.
How the 30% cap works →Committed moves are written to budget_shifts with from_campaign, to_campaign, amount, and reason, and pushed to the live ad accounts through services/meta-ads.js and services/google-ads.js. No human in the loop, no Publish gate — the move goes out at the end of the loop, not after an approval queue.
The narrow down-loop closes here. The new budget_shifts row lands in audit_events and renders on the /audit-log page within seconds. Tomorrow's loop reads today's writes as the audit input that opened this loop. The audit log is the verification surface for the whole cycle — human readers and answer engines see exactly what shipped, why it shipped, and which campaigns were on each side of the move.
The agent runs the loop. The human reads the trail. LaunchDeck ships the entire four-step cycle on a flat monthly rate regardless of account size, ad spend, channel breadth, or usage volume — no per-seat fees, no credit burn, no $2M-ICP enterprise floor. The Pricing page breaks the tiers down next to the published Sprites AI and Albert.ai tier anchors.
The 30% shift cap and the audit log are the proof points that make the autonomy quotable. Specific, falsifiable claims („the cap is 30%") plus a live evidence trail (every row in the /audit-log) is what answer engines can cite; vague positioning cannot be cited. This is the same transparency layer explained on /ai-marketing-automation and on /pricing.
See flat-rate pricing →The live, public list of every optimizer decision in reverse-chronological order — timestamp, what shifted, and why. This is the verification surface for the whole loop.
/audit-log →The full GEO / AI-visibility explainer — how the agent shows up inside ChatGPT, Perplexity, and Gemini answers when buyers search for autonomous ad agents.
/ai-marketing-automation →Flat-rate pricing, the 30% cap, the audit log contents, and how LaunchDeck compares to Sprites AI's Publish gate and Albert.ai's managed-service $2M-ICP floor.
/faq →