ads-playbook

The central playbook that stores business context, CPA targets, wasted spend thresholds, negative keyword taxonomy, and brand voice guidelines. Referenced by all other skills. This file is a TEMPLATE. Customize every [CUSTOMIZE] marker with your real values. Not directly invokable. Other skills read this automatically.

Ads Playbook

This is the brain of the Paid Ads Autopilot. Every other skill references this file for evaluation criteria, thresholds, and brand context. Replace all [CUSTOMIZE] markers with your actual values.


Business Context

What we sell: [CUSTOMIZE: e.g., "AI-powered meeting notes SaaS for remote teams"]

Target audience: [CUSTOMIZE: e.g., "Product managers, engineering leads, and ops teams at companies with 50-500 employees"]

Primary conversion action: [CUSTOMIZE: e.g., "Free trial signup" or "Demo request" or "App install"]

Active ad platforms: [CUSTOMIZE: e.g., "Google Ads, Meta Ads" or "Google Ads only"]

Monthly ad budget: [CUSTOMIZE: e.g., "$15,000/month across all platforms"]


Target CPA & Performance Thresholds

Target CPA: $[CUSTOMIZE: e.g., 45] per conversion

Max acceptable CPA: $[CUSTOMIZE: e.g., 90] (2x target, anything above this gets flagged immediately)

Zero-conversion kill threshold: $[CUSTOMIZE: e.g., 50] spent with zero conversions triggers a flag

Minimum acceptable CTR: [CUSTOMIZE: e.g., 2]%

Lookback window: [CUSTOMIZE: e.g., 14] days (default period for search term analysis)

Minimum clicks for evaluation: 1 (any term with at least 1 click gets reviewed)


Negative Keyword Categories

When evaluating search terms, classify flagged terms into one of these categories. Each category includes example patterns. Customize the examples for your business.

1. Wrong Intent

Terms where the user wants something fundamentally different from what we offer.

Signals: informational queries, "how to" without product intent, "what is" definitions, "free" seekers with no upgrade path

Examples: [CUSTOMIZE]

  • "how to take meeting notes" (informational, not looking for a tool)
  • "free meeting notes template" (template seeker, not SaaS buyer)
  • "what is a standup meeting" (definition query)

2. Brand / Bottom-Funnel Leakage

Competitor brand searches or our own brand terms leaking into non-brand campaigns.

Signals: competitor product names, competitor + "login", competitor + "pricing", our own brand name in generic campaigns

Examples: [CUSTOMIZE]

  • "otter.ai login" (competitor navigational intent)
  • "fireflies ai pricing" (competitor comparison shopping)
  • "[our brand] login" (should be in brand campaign, not generic)

3. Job / Interview Intent

People looking for employment, interview prep, or career content, not our product.

Signals: "jobs", "salary", "career", "interview", "resume", "hiring"

Examples: [CUSTOMIZE]

  • "meeting coordinator jobs" (job seeker)
  • "how to take notes in an interview" (interview prep)
  • "note taker salary" (career research)

4. Research-Only Intent

Users deep in research mode who are unlikely to convert from an ad click.

Signals: "review", "vs", "comparison", "reddit", "alternatives", "best [category]"

Examples: [CUSTOMIZE]

  • "best meeting notes app reddit" (reddit research)
  • "otter vs fireflies vs [us]" (comparison shopping)
  • "meeting notes software reviews 2025" (review aggregation)

5. Comparison Shoppers

Similar to research-only but specifically comparing products. These sometimes convert, so flag for review rather than auto-block.

Signals: "[product] vs [product]", "compare", "[product] alternative"

Examples: [CUSTOMIZE]

  • "otter ai alternative" (might convert, review carefully)
  • "meeting notes tools compared" (broad comparison)

6. Developer / Coding Intent

Technical queries about building meeting note features, not buying them.

Signals: "API", "SDK", "github", "python", "code", "build", "open source"

Examples: [CUSTOMIZE]

  • "meeting notes API python" (developer building their own)
  • "open source transcription" (wants free/OSS, not SaaS)
  • "speech to text github" (developer intent)

7. Too Generic

Single-word or overly broad terms that burn budget without clear intent.

Signals: single-word terms, broad category words, ambiguous queries

Examples: [CUSTOMIZE]

  • "notes" (too broad, could be anything)
  • "meetings" (no product intent)
  • "transcription" (ambiguous, could be medical, legal, etc.)

8. Fully Off-Theme

Terms with zero relevance to our product or industry.

Signals: completely unrelated topics, different industries, wrong product categories

Examples: [CUSTOMIZE]

  • "medical transcription services" (wrong industry)
  • "music notes for beginners" (completely off-topic)
  • "legal deposition transcription" (different use case entirely)

Evaluation Logic

For each search term, apply this decision tree:

  1. Is it off-theme? If the term has zero relevance to our product, flag as "Fully off-theme." Block.
  2. Is it a competitor brand or our brand in the wrong campaign? Flag as "Brand/bottom-funnel leakage." Block.
  3. Is it job/career related? Flag as "Job/interview intent." Block.
  4. Is it developer/coding intent? Flag as "Developer/coding intent." Block.
  5. Is it too generic? (single word, no clear product intent) Flag as "Too generic." Block.
  6. Is it wrong intent? (informational, free-seeker, definition) Flag as "Wrong intent." Block.
  7. Is it research-only? Flag as "Research-only intent." Review (might be worth keeping for top-of-funnel).
  8. Is it comparison shopping? Flag as "Comparison shoppers." Review (sometimes converts).
  9. Does it pass all filters but have bad metrics? (high CPA, low CTR, zero conversions above threshold) Flag with the specific metric issue.
  10. Does it pass everything? Keep it.

The "Reasoning" column in every output must contain a specific, human-readable explanation. Not just the category, but WHY. Examples:

  • "Off-theme, user looking for medical transcription, not meeting notes"
  • "Competitor brand, navigational intent for Otter.ai login page"
  • "Too generic, single word 'notes' with no product intent signal"

Brand Voice Guidelines (for RSA Copy)

Tone: [CUSTOMIZE: e.g., "Professional but approachable. Confident, not salesy. Focus on outcomes, not features."]

Key selling points (use in headlines/descriptions): [CUSTOMIZE]

  1. [e.g., "Automatic meeting summaries in 30 seconds"]
  2. [e.g., "Works with Zoom, Teams, and Google Meet"]
  3. [e.g., "Trusted by 10,000+ teams"]

Words to USE: [CUSTOMIZE: e.g., "automatic, effortless, accurate, team, action items, summary"]

Words to AVOID: [CUSTOMIZE: e.g., "cheap, basic, simple, revolutionary, game-changing"]

CTA patterns: [CUSTOMIZE: e.g., "Try Free", "Start Your Free Trial", "See It In Action", "Get Started Free"]


GAQL Query Intelligence

Austin Lau's key insight: "You need to provide a strong base of examples on what to actually query. If you want to know why spend dropped you need to look at impression share as well but Claude might not know that out the gate. Provide details on what to query, not just how to query GAQL."

When diagnosing issues, always check these related metrics:

  • Spend dropped? Check impression share (budget loss vs rank loss), not just spend numbers
  • CPA increased? Check conversion tracking, landing page changes, and auction competition (average CPC trends)
  • CTR dropped? Check ad position (impression share rank loss), ad copy fatigue, and competitor activity
  • Conversions dropped? Check conversion tracking first, then landing page, then traffic quality

Google Ads Account Health Checklist

From Austin Lau's audit checklist (shared in his thread replies). Run through these when onboarding a new account or doing periodic health checks:

  • Conversion windows and repeat rates are set correctly
  • Primary vs secondary conversion actions are properly configured (optimizing toward the right one)
  • Location targeting is set to "Presence in" (not "Presence or interest in", which is the default and wastes budget)
  • RSAs have decent quality and some form of headline/description strategy
  • Performance Max audience signals aren't stuffed with random lists
  • AI features (auto-apply recommendations, auto-created assets) are OFF unless deliberately tested
  • Final URL expansion is OFF unless deliberately tested
  • Broad match has been tested with proper negative keyword coverage
  • Change history shows regular negative keyword additions (not just set-and-forget)
  • Non-search campaigns with audience targeting have expansion OFF unless tested
  • Automated assets are turned OFF

Match Type Strategy

Austin's guidance on match types:

  • "Test broad carefully but it can work very well if you are very diligent with negative keywords"
  • "Look at broad match as a lever for incremental reach when you feel like you may be capped with exact/phrase"
  • In other words: start with exact and phrase match. Graduate to broad only when you have a solid negative keyword foundation and need more volume.

AI Enhancements Policy

Austin's take: "Skip AI enhancements, it's really bad sometimes. I don't like how they bury some of those settings since newcomers don't even know it's on."

Default policy for this playbook:

  • Auto-apply recommendations: OFF
  • Auto-created assets: OFF
  • Final URL expansion: OFF
  • Automatically applied ad suggestions: OFF
  • Only turn these on if you're deliberately testing them with a hypothesis and measurement plan.

Brand Term Bidding Strategy

Austin's tip for brand campaigns: "Try manual CPC with a bid cap. Impression share and conversions seem to be pretty on par with smart bidding minus the cost."

  • For brand campaigns, consider Manual CPC with a bid cap instead of Smart Bidding
  • This often delivers similar impression share and conversions at lower cost
  • Smart Bidding on brand terms tends to overbid since brand terms already have high quality scores

MCP Architecture Note

Austin's setup (and how this plugin works):

  • GAQL MCP (Google's official): Used for all READ operations (pulling search terms, impression share, campaign data). "There's an official GAQL MCP by Google that I used."
  • Google Ads API: Used for all WRITE operations (adding negatives, changing budgets). "For mutations you need to make API calls to write changes to your account."
  • These are two separate connections. GAQL is read-only. Writes go through the API.
  • "It's pretty straightforward but did require some tinkering with Claude Code to get it to work properly."

Approval Workflow

Default mode: Review and confirm (show what would change, wait for explicit "yes")

Batch execution: Group changes by ad group or campaign. Present each batch with count and estimated wasted spend. Wait for approval on each batch individually.

Who approves: [CUSTOMIZE: e.g., "Me (solo marketer)" or "I review, then manager approves budget changes over $500"]