I inherited the Search Ads account at ThinkingAI: one Google Ads channel, a monthly budget of roughly low-to-mid five figures, and my call on how it gets spent. 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 judgment calls made from memory. It is now an agent pipeline. I give direction at the top and I have stopped moving rows in the middle.
This post is about the pipeline. The corpus happened to be 3,156 competitor paid keywords as of 2026-08-05, and the numbers show up where they help, but what transfers is the shape of the process.
Where the standard research move stops
A competitor keyword export gives you 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 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 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 each one to the claim it makes, so the question changes from "what are they bidding on" to "what are they promising, and how often". Patterns I would spend a day spotting 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 show where the auction is, and claims show what I have to beat in it.
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. Someone has to normalize all of it first, 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 it 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 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, because running deep reasoning over unnormalized data burns tokens on cleanup, and running cleanup through an expensive reasoning model wastes both.
Strategy is where the third model earns its place
With a clean corpus and a claims summary, Claude does the strategy pass. Claude groups every keyword by intent, reads each group against what competitors already say to it, then writes the ad copy from our own value proposition. Most competitive research skips that last step and echoes the market leader, because their language is what you just spent a week reading.
The intent pass sorts everything into four lists: 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 price accordingly, and terms that content serves better than a bid.
From plan to live campaign through the API
From research to launch, it all runs through the Google Ads API. The API writes campaign structure, ad groups, match types, negatives and copy directly from the plan. I dry run every change first, apply it, then read the account back to verify.
So the account and the doc say the same thing by design, and the read-back is what enforces it.
The bi-weekly loop that keeps it honest
Launch is the easy half. I built a Google Ads playbook that runs on a two-week cadence as a small agent team. It is on its first cycle as I write this, so the CPL and CPA reads are still to come.
Agents pull the performance data. DeepSeek cleans and summarizes it, the same split as the research run. Then Kimi K3, GPT, and a Claude agent analyze it in parallel and produce recommendations, and I make the call from the summary. The Ahrefs MCP feeds in live market context: real search volume, competitive movement, terms that have shifted since the last run.
Agents work the ordinary levers, 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.
Agents clean the corpus, read the claims, group the terms and push the campaign live. I still give the direction and make the calls, and I have more room for both now that row 2,800 is somebody else's problem.