Pull each client's numbers with code into a fixed table, let the AI write only the commentary from that table, and have an account manager approve every report before it goes out. The model should never fetch or calculate the numbers in the same step where it writes about them. Plan on a few days to build it for your first clients, and on someone owning it every month after that.
How much work this really is. The first client takes the longest, because it forces you to clean up a template that lives in someone's head. After that, each new client is mostly configuration. The ongoing work is the part people underestimate: tokens expire, someone removes your GA4 access, a client opens a second ad account. If nobody owns those fixes, the reports quietly go stale.
Language models fill gaps with plausible numbers. One UK agency wrote up an AI reporting tool that put an "industry average" click-through rate in a client report; they could not find that figure anywhere. Invented benchmarks, guesses about competitor activity and made-up citations all look fine at a skim. Ban benchmarks unless they come with a named source, and keep the automatic number check.
Search Console data runs a few days behind, and GA4 reports in the property's own time zone. If your week ends on Sunday and the pull runs Monday at 6am, you may be comparing a partial week with a full one. Fix the date window in the script, not in the prompt.
An expired token can return zeros, and the model will happily write "organic traffic fell sharply." Make the pipeline stop that client's report when a pull returns nothing or zero, and tell a person.
Letting the agent email clients directly saves one click and risks the account. Keep a person between the draft and the client, every time.
Read your client contracts before sending their data to any AI service. Use API access or a business plan that does not train on your inputs and offers a data processing agreement. Send the aggregated numbers the report needs, not raw exports with customer details. Give the agent read-only access through accounts you control, and remove it when a client leaves.
Build it yourself if someone on your team likes this work and has time each month to keep it running. Pay someone when the upkeep is the problem: more clients than one person can babysit, nobody who wants to own broken tokens, or you want the same setup to also watch client sites and sort the inbox.
That upkeep is the part we sell. We set up and run an AI operator for agencies that drafts client reports from real data pulls, with every send waiting for your approval. We have not run it for an agency yet. Our own studio runs on the same setup:
Our own operator ran 358 scheduled jobs and shipped 39 production deploys in a week, with 1 human tap.
They write good commentary from a finished table of numbers. Do not let the model pull or calculate the numbers, and do not let it send anything to a client.
A way to pull the data (GA4 and Search Console APIs through n8n, Make, Zapier or a script), one table per client per week, an AI model for the commentary, and a review step in Slack, email or a shared doc.
Tell it to use only the numbers in the table, then run a check that confirms every number in the draft exists in that table. Drafts that fail go back to a person.
No. Drafts go to your account manager, who reads, edits and sends. Keep client email addresses out of the agent's reach.
Check your client contracts first. Use an API or business plan that does not train on your data and offers a data processing agreement, send only aggregated numbers, and give the agent read-only access you can revoke.