- Home
- Case studies
- An agent that reviews Google Ads every day and suggests changes for approval
An agent that reviews Google Ads every day and suggests changes for approval
Daily account analysis with B2B context instead of generic tips. The agent only reads and makes suggestions; a person approves every change.
4 min read
- Client
- B2B company (in-house advertising account)
- Industry
- Advertising / Google Ads / Analytics
- Scope
- Analytics and data
Who the client was and what was getting in the way
A B2B company managing its own Google Ads account. The account is not huge, but it needs daily attention. Search terms can start leaking spend from one day to the next, and budget gets spent on queries that will never bring in a customer. If no one checks for a week, the waste is already measurable.
The natural instinct is to reach for an off-the-shelf account-audit tool. The problem is that these tools judge every account by the same standard β the economics of an online store where a lead costs ten zlotys. In B2B, a single lead can be worth as much as one hundred orders in an online store. Recommendations such as βlower the bid because the cost per click is highβ can therefore be actively harmful.
The second problem is repetitive advice. Tools tend to recommend the same thing every week because they do not remember what has already been done. If the accountβs negative-keyword list has been built over two years, suggestions to add terms that are already there are just noise β and eventually people stop reading the whole list.
The third requirement was non-negotiable from the start: no automatic account changes. The agent can read everything and suggest anything, but it cannot touch the settings. A person makes the decision.
What we built
We built an agent that retrieves account data every day and prepares a list of recommendations for approval. The data collection layer runs in Python and uses the Google Ads API in read-only mode. This is enforced by permissions, not discipline: the agent physically cannot change anything.
The daily review covers campaigns, keywords, and search queries that triggered ads. This data goes to an analytical model with business context: the sales model, the real value of a lead, and the target customer. The account review is therefore not arithmetic about cost per click; it considers whether a particular query could actually bring in a customer.
Before suggesting anything, the agent cross-checks what has already been done. It reads the existing negative-keyword lists and removes anything someone has already added. It is a simple mechanism, but it determines whether the report is readable.
Recommendations appear on a dashboard with a priority level and an explanation. Recommendation history, statuses, and supporting data are stored in Supabase, and the whole process runs on a daily schedule. A person reviews the list and marks each item as implemented or rejected.
How it works today
The agent runs continuously, once a day. Each morning, the dashboard shows a list of suggestions sorted by priority. Every item briefly explains where it came from and which part of the account it concerns. Nothing is implemented automatically.
Marking an item as implemented or rejected is more than interface housekeeping. It gives the agent feedback, so it stops returning to topics that have already been closed. As a result, the list gets shorter week by week instead of longer.
The outcome
The account is analyzed once a day rather than whenever someone finds the time. The agent has read-only access, so no change goes live without a personβs approval. The B2B cost-per-lead context is part of the assessment, not an afterthought at the end of a report. Existing negative keywords are checked automatically, so the same advice does not keep coming back.
What we would do differently
The biggest bottleneck was neither the API nor the model, but the description of the business context. The first version did not include enough, so despite having access to all the data, the agent made recommendations like a textbook for online stores. Adding a few paragraphs about the real value of a lead and the target customer improved the results more than any technical change would have. Next time, we will start there rather than with the integration.
We also underestimated the importance of cross-checking what had already been done. We treated it as a small extra, but it turned out to be essential for getting anyone to read the daily report. In our next monitoring agent, we will include memory of completed actions in the first version, not the second.
Related projects
E-commerce conversion tracking: from 35% event coverage to nearly complete
A beauty e-commerce store was showing Meta only one third of its purchases. We fixed server-side measurement while respecting consent and raised coverage to nearly complete.
Search Console and Keyword Planner data, available directly in a conversation
An agency with more than twenty clients stopped exporting files from Google dashboards. Two MCP servers provide direct access to SEO and keyword data in chat.