wiki/knowledge/google-ads/agentic-ai-optimization-tool.md · 979 words · 2026-04-05
Overview
Asymmetric uses a locally-run agentic AI system built on Claude Code to automate Google Ads audits and optimizations. Unlike standard AI assistants that only analyze and recommend, this tool is agentic: it logs into platforms, pulls data, makes changes, and delivers reports — all autonomously. Tasks that would take hours of manual work are completed in 10–20 minutes.
The tool was demonstrated live in the [1], where it diagnosed and fixed performance issues for [2] and [3] in a single session.
What It Is
- Runtime: Runs locally on Mark's machine (not a cloud service), using the Anthropic Claude API via a team account
- Core engine: Claude Code (Anthropic's agentic coding environment)
- Interface: Terminal / PowerShell sessions; multiple agents can run in parallel
- Toolset: ~100 custom tools covering Google Ads API, Google Analytics, Google Search Console, Slack, website CMS access (via MCP servers), PDF generation, and more
- Memory: Maintains per-client files storing credentials, strategy profiles, past actions, and learned behaviors; must be explicitly told to update memory after each session
What It Can Do
Data Access
- Logs into Google Ads (via API), Google Analytics, Google Search Console, and client websites
- Reads per-client strategy profiles before acting, so it understands goals before making changes
- Pulls campaign performance, keyword reports, search term reports, quality scores, conversion action configs, and tag/tracking status
Analysis
- Identifies wasteful spend (e.g., high-CPA campaigns with minimal conversions)
- Flags bidding strategy mismatches (e.g., Maximize Clicks when conversion data exists)
- Detects conversion tracking breakage (e.g., WP Rocket blocking Google Tag Manager)
- Surfaces keyword gaps from search term reports
- Checks for Google policy violations (e.g., health-sensitive keywords)
- Reviews ad strength, quality scores, and impression share loss causes
Execution (Agentic Actions)
- Pauses underperforming campaigns and reallocates budget based on performance data
- Consolidates primary conversion actions to sharpen Smart Bidding signals
- Adds negative keywords and location-specific keywords
- Switches bidding strategies (e.g., Maximize Clicks → Maximize Conversions)
- Logs into client websites and fixes settings directly (e.g., WP Rocket delayed JavaScript exclusions)
- Generates PDF audit reports and posts them to the appropriate Slack channel automatically
Parallelism
- Can spawn sub-agents to run audit phases simultaneously (e.g., keywords, search terms, tracking verification, ads/assets all at once)
- Multiple client audits can run in separate terminal windows concurrently
Skills System
Repeated workflows are encoded as skills — named instruction sets the agent loads and executes without step-by-step prompting. Example: Google-Ads-Audit runs a full multi-phase audit automatically when invoked.
Skills can be chained: "do these 10 things in sequence" becomes a single command. This is how the tool scales from interactive demos to background automation.
Guardrails
The tool operates within explicit boundaries defined in per-client config files:
- Specifies what it is and is not allowed to change
- Instructs it to execute anything it can do safely, and to ask before doing anything risky
- Requires it to update memory files with what it did and how, so it doesn't repeat mistakes
When it makes an error, it self-corrects: it identifies the mistake, tries alternative approaches, and updates its notes. Red/white/green dot indicators in the terminal show failed, in-progress, and successful tool calls in real time.
Demonstrated Results
Scallon (2026-03-11)
Conversions had dropped from ~70/month to 23. The tool:
1. Diagnosed the competitor campaign as wasteful ($98 CPA on 1 conversion)
2. Identified Maximize Clicks as the wrong strategy given available conversion data
3. Paused the competitor campaign; reallocated budget to better-performing ad groups
4. Consolidated primary conversion actions from 6 → 2
5. Added 74 negative keywords and 27 location-specific keywords
6. Switched bidding to Maximize Conversions
7. Generated a PDF report and posted it to the Scallon Slack channel
See: [4]
Advanced Health & Safety (2026-03-11)
A full automated audit found:
- Critical: WP Rocket's "delayed JavaScript" setting was blocking Google Tag Manager, causing zero form submission tracking for 30 days — the tool logged into the AHS website and fixed the setting directly
- 8 of 9 conversion actions marked primary (diluting Smart Bidding signals)
- DSA asbestos campaign matching irrelevant terms (e.g., "mold killer," "water restoration")
- Display campaign consuming 38% of total budget
Output: 15-page PDF audit report posted to the AHS Slack channel.
See: [5]
Known Limitations
- No persistent memory by default: Claude Code does not remember previous sessions unless explicitly told to write a summary to a file. Always end sessions with an instruction to update memory.
- Context window limits: Long sessions can exhaust the context window; the agent handles this by summarizing and continuing, but very large jobs may need to be split.
- Token consumption: Running the tool overnight on large projects can exhaust the monthly token allocation.
- Requires human review: The tool can make mistakes (e.g., adding "Heights" as a negative keyword for a client whose facility is called "Scallon Heights"). All changes should be reviewed, especially keyword additions/removals.
- API quirks: Bidding strategy changes via the Google Ads API can be finicky; the tool may need 2–3 attempts and will self-correct.
Setup & Access
- Runs on a local Windows machine (uses PowerShell terminals)
- Uses the Asymmetric team Claude account (shared credentials)
- Credentials for all client platforms are stored in a master credentials file the agent can reference
- Per-client project folders contain: strategy profile, credential references, memory/notes files, and skill definitions
Onboarding: Mark scheduled a 1-hour call with Gilbert to walk through setup on his machine. See [6].