5 systems, instrumentedPhoenix, ArizonaPHX--:--:-- MST

04 / Case study

Agentic SEO Toolkit

One SEO, several times the output, quality held by design

Stack
Claude Code · Subagents · Markdown + JSON · GSC / GA4 / Ahrefs · Apps Script
Measured on
5-hour strategies delivered in 2
Plate III. Coordinator to specialists, findings returning as one rubric.COORDINATORTECHNICALSCHEMACONTENTLINKSfinding · evidenceimpact · fixONE RUBRIC, MERGED AND DEDUPLICATEDP0 / CONFIRMED
Plate III. Coordinator to specialists, findings returning as one rubric.

Problem

Agency SEO work is a set of repeatable deliverables: audits, 6-month strategies, keyword research, executive reporting. Each one follows a known shape, pulls from the same data sources, and still gets rebuilt by hand for every client. Across a book of 30 to 40+ accounts a month, that is the bulk of where the hours go.

The dashboard I had built earlier (see the Mentat Search case study) made the data faster to see. It did not make the work faster to do. A dashboard still ends with a person reading numbers and then producing the deliverable themselves.

What I built

A toolkit of AI agents that produce the deliverables, packaged as a plugin library I run from a single terminal. A coordinator agent delegates to narrow specialists: site audits, keyword research, strategy building, executive summaries, on-page optimization. Skills compose through files in a client folder rather than calling each other, so every intermediate output is inspectable and every run leaves a paper trail.

The workflow from my seat: I load the client’s 6-month-over-6-month data as CSVs, kick off the deliverable, and give input at decision points while it runs. Everything stays in one place. No tab-bouncing between tools, no reassembling exports into documents.

How it works

A scripted strategy run. The coordinator loads account context, dispatches four specialist agents, merges their findings into one ranked rubric, then halts for an operator decision about consolidating two competing URLs. The three options below continue the run down different branches. Left alone, it takes the first.

$ seo strategy --client northwind-labs --window 6mo
 
load account context ................... ok
gsc 771 queries / 28d · ga4 organic key events on
brand tokens: northwind, northwind labs
dispatch specialists (4) ............... ok
technical · schema · content · links
technical: crawl sample, 480 urls ...... 12 findings
schema: entity + eligibility ........... 5 findings
content: gap vs 3 competitors .......... 9 findings
links: authority + anchor profile ...... 4 findings
merge, deduplicate, rank ............... 30 → 19
 
FINDINGS (excerpt)
P0 impact high · confidence 0.92
pricing page ctr 2.6% → 1.9%, position flat at 6.4
evidence gsc 28d vs prior · impressions +18%
fix rewrite title + meta, two variants
P1 impact medium · confidence 0.78
two urls competing on one commercial query
evidence both top 20, positions trading weekly
fix consolidate to /solutions/clinical-labs
 
DECISION REQUIRED · consolidation changes live urls
waiting for operator
apply option 1 · 301 the weaker url .... queued
/blog/lims-integration-checklist → /solutions/clinical-labs
redirect written to the change log, reversible
rubric updated · P1 closed, 18 open .... ok
✓ run complete · 19 findings · 4 specialists · 6m 41s
one halt, for the one call it is not allowed to make
Plate IV. One run, abbreviated. It stops where the real system stops, at the decision the agent is not allowed to make on its own: pick a branch and the run continues down it. Scripted for this page, not a recording of a client run.

Three design rules carry the quality:

Every finding is structured. Each output follows a canonical rubric: the finding, the evidence behind it, the impact, the fix, a severity rating, and a confidence level. The coordinator merges and deduplicates findings across specialists. Nothing enters a deliverable as vibes.

The system halts at judgment calls. Skills run autonomously through the mechanical work and stop at scoped decision points with specific options, where I decide. The division of labor is explicit: the system does the assembly, the human does the judgment. That is the point of the whole build. It exists to raise what one skilled person can do, not to remove the person.

Source data stays canonical. Search Console exports remain the source of truth; third-party data is additive context, never the basis of a claim. Outputs land as both human-readable markdown and machine-readable JSON, and push into client spreadsheet workbooks automatically, so the deliverable arrives where the work already lives.

Client-specific details live in config and dossier files, not in the skill logic, so the same architecture drops onto any agency’s processes.

Results and impact

This is my daily production system on a book of 30 to 40+ accounts a month. Client strategies scheduled at 5 hours each now take me about 2: I have delivered two complete strategies in a single 4-hour block, at full quality, with the rubric doing the consistency work that used to depend on energy and attention. The remaining hours go where they should: judgment, client context, and the calls a system should not make.

It also settled an architecture question I had tested from both sides. I built the dashboard first, used it daily for a month, then built this and measured my own time. Agents that do the work beat dashboards that display it, so I moved my entire workflow here and retired the dashboard. Instrument the system, then let the numbers decide.