Skip to content
All work

Case studyAI automation · Analytics

Marketing Intelligence CLI

A client-agnostic command-line system that audits an entire Google marketing stack and layers model-driven analysis on top, turning days of manual auditing into a single command with a repeatable action plan at the end.

2026Internal tooling
  • Python
  • Google Ads API
  • GA4
  • Search Console
  • Claude API
audit modules
17audit modules
platforms integrated
4platforms integrated
automated reporting cadence
Weeklyautomated reporting cadence

Auditing a marketing account properly means pulling from four separate systems, reconciling them, and forming a judgement about what to do next. Done by hand it takes days, it is inconsistent between runs, and the findings are stale by the time they are written up. Hart & Heim compressed that into one command.

01

Audit as software, not as a document

Each audit is a module with a defined input and a structured finding as output. That makes the whole suite composable, testable and — critically — comparable between runs, so change over time is visible rather than re-argued each month.

  • Coverage across paid search, analytics, shopping feed and organic search in one pass
  • Findings carry severity and detail rather than a bare pass or fail
  • History is persisted, so this month's audit can be diffed against the last
02

The analyst layer

Raw findings are not the deliverable. A model-driven layer sits above the audits, fusing signals that individually look unremarkable and turning them into a prioritised plan.

  • Anomaly detection across time series rather than fixed thresholds
  • Signal fusion across platforms, so an organic drop and a paid spike are read together
  • Embeddings and clustering to group related findings instead of listing them flat
  • An action planner that outputs an ordered plan, not an undifferentiated backlog
03

Closing the loop

An audit that only produces recommendations leaves the hard part undone. A set of fix scripts applies the common remediations directly against the account, so the gap between finding and fix is a command rather than an afternoon.

  • Negative keyword application and exact-match expansion
  • Waste pausing on spend with no return
  • Brand exclusion for automated campaign types
  • Location and bidding adjustments applied from audit output