Skip to content
Álvaro García

Tool · 2026

Completed

SEM Auditor

Automated Google Ads account audits with prioritised findings

Role
Rule design, product and AI-assisted development
Year
September 2026
Stack
  • Python 3.10+
  • pandas
  • Jinja2
  • Google Ads API
  • GAQL
  • Tkinter
Report summary: 38/100 score, account KPIs and findings by category (fictional data)Fictional data

The figures in the screenshots belong to a fictional sample account, not a client.

Overview

A tool that reads a Google Ads account — via CSV or the API — runs 13 audit rules and produces a report with a health score and actionable recommendations.

My own tool to speed up SEM campaign analysis. Screenshots use the fictional sample account “Jardín&Hogar”.

audit rules
13
account health score
0–100
priority levels
3
inputs: CSV or Google Ads API
2

AI usage

Built with generative AI assistance. The audit engine is deliberately deterministic: explicit rules and configurable thresholds, so every finding can be explained.

No public demo: this project runs locally.

01 · Problem

Auditing a Google Ads account is slow and repetitive.

Checking budget-limited campaigns, keywords that spend without converting or badly structured ad groups means exporting reports, cross-referencing them in spreadsheets and repeating the same checklist every time.

I wanted that review to be systematic: the same rules, the same thresholds, the same output format and a clear way to decide where to start.

02 · How it works

From raw data to a prioritised list.

  1. 01

    Input

    Exported CSVs (ES/EN headers, comma or dot decimals) or the Google Ads API

  2. 02

    Normalise

    data_loader → AccountData

  3. 03

    Rules

    13 checks with configurable thresholds

  4. 04

    Score

    100 − severity-weighted penalty

  5. 05

    Report

    Standalone HTML via Jinja2

03 · Rules

What it checks.

Budget and impression share
Budget-limited campaigns and impressions lost to ad rank.
Wasted spend
Campaigns and keywords with significant spend and zero conversions; search terms that should be negatives or show non-commercial intent.
Bids and quality
Low Quality Score keywords, CTR below the account average and device imbalances.
Structure
Keywords duplicated across campaigns and ad groups that are too small or too large.
Ads
Ad groups with fewer than three active ads and ads with low or average Ad Strength.

04 · Output

A report you can read in two minutes.

Fictional sample account “Jardín&Hogar”, generated to test the tool.

Report summary: 38/100 score, account KPIs and findings by category (fictional data)
Report summary: 38/100 score, account KPIs and findings by category (fictional data)
High and medium priority findings with recommendations (fictional data)
High and medium priority findings with recommendations (fictional data)

05 · Decisions

Why it is built this way.

CSV first
The recommended path needs no credentials: anyone with account access can export and audit. The API is optional.
Explainable rules
Every finding shows its evidence and affected examples. A support tool, not a replacement for a specialist’s judgement.
Zero friction
Double-click launchers for Windows and macOS, a desktop window, and a CLI for those who prefer it.

06 · Learnings

Formalising judgement is the hard part.

Writing the code was the fast part. What took time was turning specialist intuition (“this keyword spends too much”) into rules with defensible thresholds and concrete recommendations.

That same logic — explainable rules, severity and priority — became the foundation of the SEO Auditor I built afterwards.