← All case studies
Marketing agency · internal systemLive internally

A Google Ads audit engine that remembers every fix and checks it worked

An agency running ads for trades businesses needed every account audited the way a senior paid-media manager would, continuously. I built a system on the Google Ads API that syncs each account, checks it against 11 rules, tracks every issue through to a verified fix, and uses AI only to explain why a fixed issue came back.

35
real issues found on a live account
11
automated audit checks
7
sync jobs, zero errors on first full sync
0
write permissions to ad accounts

How it works

CodeAIHumanData
Execution replay of the design, not live data
  1. Sync. Discovers every client account under the manager account and runs 7 isolated jobs: campaigns, ad groups, ads, daily metrics, search terms, conversion actions and change history. Re-runs are idempotent, confirmed by row counts.
  2. Tracking verification. Checks conversion settings, then loads every ad's landing page in a browser to confirm it returns 200, has a form or phone link, and fires the right Google Ads tag.
  3. Audit. 11 checks, including wasted spend on zero-conversion search terms, budget pacing against the client's target cost per lead, bid strategy mismatches, impression share lost to rank, disapproved or weak ads, and account structure.
  4. Issue lifecycle. Each issue gets a fingerprint and moves from open to assigned, fixed, verified or reopened. If a verified fix comes back, it's marked as recurred.
  5. Recurrence diagnosis. Claude gets an evidence package (the original issue, the fix, what changed since) and must answer with one of 5 fixed categories through forced tool use. This step sits behind a switch, and every other part works without it.
  6. Reporting. Weekly reviews, client-facing PDFs that only include issues marked shareable, and email alerts with deduplication.

Guardrails

Propose only, by construction

Read-only API access and no write endpoint in the code. Changes are proposals a person approves and applies.

Rules are ground truth

The AI may not invent findings. Every sentence it writes must point to a rule finding or a metric, and everything works without the AI switched on.

No judging on thin data

Thresholds stay untuned until two weeks of real history exist. No fake data, ever, including in tests.

Recoverable

Nightly database backups with 14-day retention, a manual restore script and a scheduler that catches up safely after downtime.

Results on a live account

  • First full sync of a wildlife-removal account: 20 campaigns, 96 ad groups, 1,900 search terms, 644 change events, zero errors.
  • 35 real, distinct issues, including campaigns losing 39–70% of impression share to rank, a disapproved ad, low-quality keywords, missing call assets and duplicate keywords.
  • Found a live 404 on an ad landing page and 5 campaigns bidding toward stale conversion actions. On a pre-launch account it caught that the website's domain didn't resolve.
  • The change history showed Google's auto-apply recommendations repeatedly adding and removing keywords, which became a tracked check of its own.
  • Testing against live data caught 9 real bugs, including an ad status misread as "disapproved" that would have produced 13 false flags.

Running ads for many accounts?

Message me on Upwork