Writing · Growth · Aug 6, 2026 · 7 min

Search Ads competitor research, rebuilt as an agent pipeline

Taking over a Search Ads account used to mean weeks of spreadsheet work. Here is the pipeline I run instead: DeepSeek for the cleaning, Kimi K3 for the reasoning, Claude for the strategy, the Google Ads API for the launch, and a fortnightly agent team that keeps the account moving.

4 modelseach doing the part it is actually good at
3,156 → 47competitor keywords to a live buy list

I inherited the Search Ads account, and the first move is the one every paid marketer knows: pull the competitors, pull their keywords, look for volume and gaps. Ahrefs and SEMrush hand you that in an afternoon. What has changed is everything after the export. That part used to be weeks of spreadsheet work and judgement calls made from memory. It is now an agent pipeline, and the person sits at the top of it giving direction rather than in the middle of it moving rows.

This post describes the pipeline rather than the ledger. The corpus happened to be 3,156 competitor paid keywords as of 2026-08-05, and the numbers show up where they help, but the transferable part is the shape of the process.

Where the standard research move stops

Competitor keyword exports give you three things: the terms, the volume, and a rough view of which campaigns are running. That is enough to build a shortlist and not much else. It tells you nothing about how a competitor is positioning against each term, which of their ads have been running long enough to be working, or where the space between their message and ours actually sits.

Ad copy is the part of competitive research that stays manual for most teams, because reading a few hundred variants and finding the pattern is exactly the sort of work nobody schedules.

Reading competitor ad copy with a tool I built for it

I built AdRadar for this specific gap. It collects the live ad variants running against a keyword set and reduces them to the claims being made, so the question changes from "what are they bidding on" to "what are they promising, and how often". Positioning patterns that take a day to see by hand come back as a short list of recurring claims and the terms they attach to.

That output becomes an input to everything downstream. Keywords tell you where the auction is. Claims tell you what you have to beat.

AdRadar, the tool I built for this gap: it reduces the live ad variants running against a keyword set down to the claims being made and how often each one recurs.

Turning an export into something an agent can use

A raw competitor export arrives as inconsistent CSVs with duplicated terms, mixed match types, and ad reports in a different shape from the keyword reports. Before any reasoning can happen, someone has to normalize all of it, and that is the least interesting work in the project.

DeepSeek does it. It handles the heavy lifting: cleaning, deduplicating, normalizing match types, reconciling the ad reports against the keyword reports, and restructuring the whole thing into a store an agent can query quickly. Cheap, repetitive, high volume, and it never gets bored on row 2,800.

Kimi K3 takes the cleaned corpus and does the part that needs actual reasoning: which keywords overlap across competitors, what each competitor's ad copy is consistently claiming, and where a claim is doing real work versus filling space. Splitting the two matters. Running deep reasoning over unnormalized data burns tokens on cleanup, and running cleanup through an expensive reasoning model is a waste of both.

Strategy is where the third model earns its place

With a clean corpus and a claims summary, Claude does the strategy pass. Every keyword gets aggregated and grouped by intent, and each intent group gets read against what competitors are already saying to it. Then the ad copy gets written against our actual value proposition rather than against theirs, which is the failure mode of most competitive research: you end up echoing the market leader because their language is what you just spent a week reading.

Four outputs come out of the group-by-intent pass. Gaps nobody is bidding on. Terms with real volume where a competitor is running and we have a credible claim. Terms we will have to contest directly and should price accordingly. And terms that are better served with content than with a bid.

DeepSeek · the heavy lifting
Dedupe, normalize match types3,156
Reconcile ad vs keyword reportsauto
Kimi K3 · the reasoning
Overlap across competitorsfound
What each ad actually claimssummarized
Splitting the work by cost profile is the whole trick: deep reasoning over unnormalized data burns tokens on cleanup, and cleanup through a reasoning model wastes both.
scanned3,156irrelevant626wrong category270long tail1,086every word accounted for, zero remainder
What the corpus resolves into once it is grouped by intent: the gaps nobody is bidding on, the contested terms worth pricing, and the long tail that is better answered with content than with a bid.

From plan to live campaign through the API

Strategy, research, execution plan, and launch all run through the Google Ads API. The campaign structure, ad groups, match types, negatives, and copy get written out of the plan rather than typed into an interface. Every change runs as a dry run first, then applies, then reads back to verify.

What this buys is a single artifact: the campaign in the account and the plan in the document stay the same thing, so nothing drifts between what was decided and what is running.

The bi-weekly loop that keeps it honest

Launch is the easy half. I built a Google Ads playbook that runs on a fortnightly cadence and is a small agent team rather than a report.

Agents pull the performance data. DeepSeek cleans and summarizes it, the same division of labour as the research phase. Then Kimi K3, GPT, and a Claude agent analyze it in parallel, produce recommendations, and argue them out before anything reaches me. Market context comes in live through the Ahrefs MCP: real search volume, competitive movement, terms that have shifted since the last run.

The actions are the ordinary levers, applied more often than a person would manage: expand ad copy where a claim is landing, add negatives, adjust bids at the individual keyword level, and mine the live search terms report for keywords worth promoting into the account.

What is left for the person

The heavy lifting is gone, and I do not miss it. What remains is the part that was always the job: deciding which gaps are worth contesting, which claims we can honestly make, how aggressive to be on a contested term, and when the agent's recommendation is right about the data and wrong about the business.

That is the change worth writing down. The research, cleaning, structuring, analysis, and execution have moved to agents. Direction and judgement stayed with me, and there is more room for both now that the spreadsheet work is somebody else's problem.

Suggested posts