executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
adspirer-optimizeFind and fix wasted ad spend with Adspirer — cut spend that isn't converting, add negative keywords, exclude audiences and placements, reallocate budget to what works, and check whether campaigns are pacing over or under budget. Proposes changes and asks before spending or moving money.
Independent GitHub snapshot · Automated classification · Original documentation governs
Follow adspirer-mcp before any tool call. Load the platform skill for field rules. This skill
proposes changes and applies them only after the user agrees to that specific change.
| Platform | Tool (through its router unless noted) |
|---|---|
analyze_wasted_spend, then analyze_search_terms | |
| Meta | analyze_meta_wasted_spend |
| TikTok | analyze_tiktok_wasted_spend |
analyze_linkedin_wasted_spend | |
| Amazon | analyze_amazon_wasted_spend, then get_amazon_search_terms |
Waste has a few shapes and they need different fixes:
Check the tracking first. Run audit_conversion_tracking. A campaign that looks like it
converts nothing very often converts fine and reports nothing. Pausing it would destroy a working
campaign — this mistake is common and expensive.
Check the volume. Ten clicks and no conversions is not evidence. Roughly, you want at least 3× the target CPA in spend, or ~100 clicks, before you call something a loser.
Check the assist. The campaign with no last-click conversions may be the one introducing people to the brand. Look at view-through and assisted conversions before killing an upper-funnel campaign.
add_negative_keywords (Google), the equivalent on Amazon. Pausing a whole
ad group to stop one bad search term is a blunt instrument.Never delete when pausing will do. Removing keywords, deleting creatives, archiving campaigns — these lose history and some cannot be undone. Say what will be lost and get an explicit yes.
optimize_budget_allocation (Google) and its per-platform equivalents recommend a split. They
recommend; they don't apply.
Move money toward proven CPA, not toward the highest volume. Move in steps — a campaign whose budget doubles overnight re-enters the learning phase and gets worse before it gets better. 20–30% at a time, then wait a week.
Show the arithmetic: "Move $30/day from Campaign A ($140 CPA, target $50) to Campaign B ($38 CPA). Same total spend. If B holds, that's roughly 12 more leads a month."
Compare spend so far against elapsed days in the period.
Google can overspend the daily budget by up to 2× on any given day, and settles over the month. A single-day overspend is not a bug — say so before someone panics.
After every change, read the object back and confirm it took. Report what actually happened, not what you asked for. Tell the user what to expect: a learning period, a dip, a delay before the data means anything.
Pacing drifts, CPAs creep, and a campaign that was fine on Monday is over budget by Friday. Saying "I'll keep an eye on it" is a promise you cannot keep; the conversation ends when the user closes it.
Offer to schedule the check on this host. They can create one just by asking, and it lands with a notification wherever they already are.
A Codex scheduled task works here, and a run that finds nothing archives itself — so the user only hears from it when pacing has actually drifted. Keep it read-only: an unattended run that changes budgets spends real money with nobody watching.
Each run costs tool calls against their quota. Mid-month and month-end beats daily for pacing; daily is for accounts where a day of overspend is real money.
If the host has no scheduler, or the user wants the alert to keep firing after they stop using this
assistant, Adspirer's monitoring_and_reporting router runs server-side threshold monitors on ROAS,
CPA, and spend. test_monitor proves one fires before they trust it, and it's free.