Soku AI
All blog posts

Your Ad Agent Can't See the Auction It's Bidding Into

August 28, 2026 · 9 min read

Soku Team

Soku Team

Your Ad Agent Can't See the Auction It's Bidding Into

Soku generates ad creative, launches campaigns natively on Meta, Google and TikTok, and then optimizes spend and bids continuously toward a ROAS or CAC target. It runs a perceive–decide–act loop rather than a dashboard you check on Monday.

The interesting question about an agent like that is not whether the loop works. It is what the loop can perceive.

So we went and measured the thing that sits just outside it. For one small direct-to-consumer advertiser, here is the set of domains competing for the same paid keywords:

tenthousand.cc, US paid search, 24 competing domains

shared keywords with each        1 low   1 median   11 high
their paid keyword counts        6 low  327 median  198,105 high
largest bidder, versus median             1,475x the spend

Read the first row again. The median competitor shares exactly one keyword with this advertiser. And somewhere in that set is somebody running 198,105 paid keywords. None of that appears anywhere in the ad account.

Disclosure. Those numbers came from a paid-search competitor endpoint on Monid, a tool marketplace we work with as a content partner. Both runs are real calls made on 2026-08-27 against the US database; spend figures are third-party estimates, which is why we report ratios rather than dollar totals. Soku does not resell that data. The section near the end says when none of this is worth wiring in.

What an ad agent can actually see

Everything it did, in perfect detail, and nothing anybody else did.

The closed loop is genuinely powerful

An agent with access to the ad accounts, GA4 and the store can see impressions, clicks, spend, conversions, revenue, and which creative variant won. It can run a test on live traffic and act on the result without waiting for a human to open a report. For the decisions that live entirely inside those numbers, that is a real advantage and the loop needs nothing else.

It is also why we ship autonomy as a ladder rather than a switch: analysis only, then act with approval, then full autopilot, with every decision logged. That laddering matters more once you see what the loop is missing.

The boundary of the loop is the account boundary

Now list what those same numbers cannot contain, at any resolution:

  • Who else entered the auction this month
  • How much they are spending, and across how many keywords
  • Whether your creative angle is now the fourth one a shopper has seen today
  • Whether a competitor cut price, went out of stock, or launched

Every one of those changes your results. None of them changes anything the agent can read. The agent will still see a number move, and it will still act.

Who else is bidding on your keywords?

More advertisers than the account suggests, and they are wildly unequal.

Two advertisers, two competitive sets

We pulled the paid search competitors for a well-known athletic apparel brand and for a much smaller one in the same category.

                        gymshark.com        tenthousand.cc
competing domains                 30                    24
shared keywords, median            4                     1
paid keywords, median            418                   327
largest bidder vs median        626x                1,475x

Two things jump out. The first is that the median overlap is tiny: four keywords for the large advertiser, one for the small one. There is no single rival who explains your costs. The competitive set is a long tail of advertisers who each touch a corner of your keyword list.

The second is the spread. In the small advertiser's set, the biggest bidder runs three orders of magnitude more paid keywords and roughly 1,475 times the median monthly spend. They share exactly one keyword. That one keyword sits in an auction priced by somebody operating at a completely different scale.

The set is not who you would name

Asked to list competitors, the small brand would name the other apparel labels. The measured set does include those, and it also includes a general marketplace, a department store chain and a magazine, each sharing between one and three keywords.

That matters because it is exactly the part a human strategist prunes out as noise, and the auction does not. A department store bidding on three of your terms still moves the price of those three terms. If you have only ever looked at this through Google Ads Auction Insights, you have seen the platform's version of the set — real, but bounded by what one platform recognizes as your category.

Why the same rising CPC means two different things

Because the agent's only readable signal collapses two very different causes into one number.

Both stories produce the same graph

Suppose cost per click rises 30% over two weeks and ROAS falls. Two explanations:

  1. Your creative fatigued. The audience has seen it, click-through fell, quality signals dropped, and you are paying more for the same placement.
  2. The auction got more expensive. A larger advertiser expanded into your keywords, or a seasonal bidder came back, and the clearing price moved for everyone.

Inside the ad account these look identical. Same CPC line, same ROAS line, same direction.

They call for opposite responses. Story one says refresh creative and the cost comes back down. Story two says your creative is fine, the market repriced, and the correct move is to re-evaluate which keywords are still worth holding, or to accept a lower target on that segment.

An autonomous agent will act on the wrong one, confidently

This is the part worth sitting with. An agent optimizing toward a ROAS target has a small set of levers: bid, budget, audience, creative. Faced with falling ROAS it will pull them, because that is what it has. If the cause was external, pulling those levers produces churn — new creative that was never the problem, bids cut on keywords that were never underperforming relative to their new price.

Worse, it will log a confident rationale. The activity log will read as a reasoned decision, because from inside the account it was one.

The fix is not a smarter agent. It is one more input.

Telling the two stories apart takes one comparison

The diagnostic is simpler than it sounds, and it does not need a model.

Pull your competitive set twice, a month apart, and compare three fields: how many domains appear, how many keywords each shares with you, and how large their paid footprint is. Then read the result against your own numbers.

  • CPC rose, set unchanged → the cause is inside the account. Refresh the creative; the agent's instinct was right.
  • CPC rose, set gained entrants or an existing member's keyword count jumped → the cause is at least partly outside. A creative refresh will not recover the old price, because the old price no longer exists.

The useful property here is that the comparison is cheap and slow-moving. You are not streaming an auction feed. You are answering one question once a month: did the field change, or did I? Most of the time the answer is "neither, that was noise" — and knowing that is worth something too, because it stops an autonomous agent from manufacturing work.

If you want the manual version of this before automating any of it, our walkthrough on finding your competitors' PPC keywords covers the same comparison by hand.

Which outside signals belong inside the loop

Four, in rough order of how often they move.

1. The competitive set, refreshed

Who shares your keywords, how many they run, and roughly what scale they operate at. This is the measurement above, and it answers "did the field change" before the agent starts blaming itself. Monthly is usually enough; the set does not churn weekly.

2. Competitor creative, which is a different job

What rivals are actually running, and for how long. An ad that has run ninety days is the closest thing to published proof that it converts. That is its own workflow — see Meta Ad Library search operators for pulling it by hand, or the ad spy tool comparison for buying it.

3. Price and availability on the other side

If a competitor cuts price, your conversion rate falls with no change to your funnel. The agent sees a conversion-rate drop and reaches for the creative lever again.

4. The organic and marketplace context

Whether the query is being satisfied elsewhere. A term whose results page filled up with marketplace listings behaves differently at the same bid.

Reaching four different signals used to mean four vendors, four keys and four contracts, which is most of the reason teams skip it. Monid's pitch is to be the OpenRouter for agent tools: one key and one balance across a catalogue, discovery and inspection free, execution metered. The paid-search endpoints we used are listed at monid.ai/tools/search, which stays current in a way a number typed into a blog post does not. If the open question is how an agent should reach a tool at all, their MCP versus a plain API call is the clearest write-up we have seen.

When none of this is worth wiring in

Three cases, and the first is more common than vendors admit.

When you are the largest bidder

If your paid footprint dwarfs everyone sharing your keywords, the auction moves because you moved it. The external signal is mostly your own reflection, and the closed loop is genuinely sufficient. Measure the set once to find out which side of that line you are on, then stop.

When spend is too small for the variance to matter

Below a certain budget, the noise in your own conversion data is larger than the effect you are trying to detect. Adding a competitive feed to a campaign spending a few hundred a month buys a more sophisticated way to misread randomness. Fix sample size first.

When nobody will act on it

The signal has to reach a decision. If the agent runs on full autopilot with no branch that says "external cause, hold the creative", then feeding it competitor data changes nothing except the bill. Wire the input and the branch together, or wire neither.

The tell that you are in the case worth avoiding is an activity log full of confident creative refreshes that never quite fix the ROAS. That is an agent solving the wrong story well.

The takeaway

Two measured competitive sets, and one number worth keeping from each.

The median competitor shares one to four keywords with you. There is no single rival to watch; the price is set by a long tail you would not have named. And the largest bidder in the small advertiser's set runs 1,475 times the median spend while sharing exactly one keyword.

An agent inside the ad account sees neither. It sees a CPC line — and a CPC line that rises because your creative aged looks exactly like a CPC line that rises because somebody else arrived.

Give the loop one more input and the two stories separate. Leave it out, and the agent will keep choosing between them quickly, on its own, and roughly half the time it will choose wrong.

FAQ

Don't the ad platforms already show competitive metrics?

Partly, and only within their own walls. Auction insights and impression share tell you about the platform you are already spending on, in the categories that platform recognizes. They will not tell you that a marketplace expanded across ten of your keywords, and they cannot compare a rival's footprint on one platform against another. The measured sets above cross those boundaries.

How often should an agent refresh competitive data?

Monthly for the competitive set, which does not churn weekly. Faster for price and availability, which can move daily and hit conversion rate immediately. Refreshing everything on the fastest cadence is the usual mistake: it multiplies cost without improving the decision, because the slow signals were not the thing that moved.

How do I find what creative my competitors are running?

That is a separate job. Start with Meta Ad Library search operators for the free path, and read run duration — an ad live for ninety days — as the profitability signal.

Is it safe to let an agent change bids on its own?

It depends less on the agent and more on whether it can tell why a number moved. An agent with only internal signals will act confidently on ambiguous evidence, which is the failure mode described above. A staged control ladder — analysis first, then act with approval, then autonomy, with every decision logged — is the shape that makes autonomy safe.

Last updated August 2026.

Related Tools

Related Use Cases

Relevant Reads