From 3.5 hours a report to 30 minutes of checking
How a digital marketing agency moved its monthly ad reports from hand-built to AI-built, with a person checking every one, in about three months.
01 At a glance
The short version
A digital marketing agency was spending 42 hours a month building client performance reports by hand. We set up an automated AI analyst that extracts the numbers, runs the calculations, and drafts the reports in Google Docs. A person checks each one before it goes out.
A digital marketing agency
Runs Facebook ad campaigns for 12 clients and sends each one a monthly report.
42 hours of report building
Each report took about 3.5 hours by hand. 12 clients meant 42 hours lost every month.
An AI analyst on a timer
A workflow (a chain of automatic steps) pulls the ad data and the lead sheet. The analyst writes the report as a Google Doc.
86% less time on reports
Monthly reporting time dropped from 42 to 6 hours across all 12 clients, with an account manager checking every report.
The shift
Before: 3.5 hours per report spent manually pulling ad metrics and spreadsheets. After: polished draft reports generated automatically each month, reviewed by staff in 30 minutes.
02 The pain
The data was all there.
Turning it into reports was slow.
Every client needed the same monthly answer: how did the ads perform, and what should we do next? Getting that answer used to take most of an afternoon per client.
The numbers live in two places
Ad results sit in Facebook Ads Manager. Budgets and lead counts sit in a separate spreadsheet. Someone has to bring them together for each client.
The maths is easy to get wrong
Cost per click, cost per lead, cost per purchase and click rate are all division. One slip in a formula spoils the whole report.
Writing it up takes the longest
Spotting what worked, what overspent and what to do next takes judgment. Putting it into plain words for the client takes more time again.
It repeats every month, for every client
Each new client adds another few hours to the monthly pile. More clients means more reporting hours, not more strategy.
03 The solution
An AI analyst
that writes the report
A workflow built in n8n (a tool that links apps together) runs once a month. It pulls the numbers, hands them to an AI analyst and saves the finished report as a Google Doc. The analyst runs on OpenAI's o3, a model that works through problems step by step, which suits number work.
Daily results from Facebook Ads (spend, views, clicks, leads, purchases) for every campaign, plus the lead sheet in Google Sheets (budgets and buying-journey counts).
The two sets of data are joined into one bundle. The analyst is told what to work out: spend against budget, cost per click, cost per lead, cost per purchase, click rate and where people drop off.
The analyst creates a Google Doc titled with the month. It writes the key takeaways first, then the detail, then what to do next.
Human review stayed in
The report lands in a Google Doc, not in the client's inbox. A person reads it, checks the headline numbers against Ads Manager, adds what only the account manager knows, then shares it.
04 Implementation
What we set up,
and what each part does
We connected the data first, then briefed the analyst, then checked its reports against a hand-made one before switching it on.
| Part | What it gave the team |
|---|---|
Monthly timer |
Starts the whole run on its own each month, so nobody has to remember. |
Facebook Ads link |
Pulls daily spend, views, clicks, leads and purchases for each campaign. |
Lead sheet |
A Google Sheet with the budget for each campaign, the buying-journey counts and a notes column. |
Merge |
Joins the ad data and the sheet into one bundle for the analyst. |
AI analyst (o3) |
Does the sums and writes the report from that bundle. |
Google Docs tools |
Let the analyst create a fresh Doc for the month and fill it in. |
Analyst brief |
Written instructions: who the report is for, what to measure and how to lay it out. |
Connected Facebook Ads Manager, the Google Sheets lead trackers, and Google Docs.
Configured the analyst's instructions for the agency's reporting standards and verified against past data.
Compared outputs with manual reports, refined the formatting, and activated the monthly schedule.
05 The workflow
The build, as it looks
in n8n
This is the finished workflow on the n8n canvas. The timer on the left starts two jobs at once. They meet in the middle and feed the AI analyst on the right.
The monthly timer sets off both at once. One pulls the Facebook ad results. The other reads the lead sheet and packs its rows into a single list.
The Merge step joins the two sets of data. A second Aggregate step packs it all into one bundle and passes it to the analyst.
The AI Agent thinks with an OpenAI model. Its two Google Docs tools create the month's report and fill it in. The run ends at the Doc.
06 The report
Ten checks in every report,
takeaways first
| Check | How it is worked out | What it tells the team |
|---|---|---|
| Spend vs budget | Total spend vs total budget | Whether the month is on track |
| Cost per click | Spend ÷ clicks | What each visit costs |
| Cost per lead | Spend ÷ leads | What each enquiry costs |
| Cost per purchase | Spend ÷ purchases | What each sale costs |
| Click rate | Clicks ÷ views × 100 | Whether the ad grabs attention |
| Funnel conversion | Awareness to purchase | Where people drop off |
| Best campaign | Lowest cost per purchase | Where the next dollar works hardest |
| Campaign budgets | Spend vs each budget | Which campaigns need a change |
| Odd results | Sheet notes and outliers | What needs a human look |
| Recommendations | Built from the nine checks above | What to boost, pause or refresh |
Takeaways first
A short summary opens the report. Headings and bullet lists follow, so a busy client can stop after the first paragraph.
Built for this agency
The analyst is told who the clients are and which numbers matter, so the advice is specific.
07 The analysis
Two live campaigns,
analysed side by side
The automated workflow ran on live Facebook campaigns for an agency client. The analyst aggregated daily rows, calculated ratios, and surfaced performance gaps.
| Measure | Summer promo | Retargeting | Both together |
|---|---|---|---|
| Spend | $1,980 | $1,005 | $2,985 |
| Clicks | 2,750 | 1,300 | 4,050 |
| Leads | 650 | 450 | 1,100 |
| Purchases | 220 | 180 | 400 |
| Cost per click | $0.72 | $0.77 | $0.74 |
| Cost per lead | $3.05 | $2.23 | $2.71 |
| Cost per purchase | $9.00 | $5.58 | $7.46 |
| Click rate | 5.19% | 6.19% | 5.47% |
| Leads who bought | 33.8% | 40.0% | 36.4% |
A clear winner
Retargeting delivered purchases at $5.58 and converted 40.0% of leads to buyers. The top-of-funnel promo cost $9.00 per purchase at 33.8% conversion.
Reallocate budget
Recommended increasing daily budget on the retargeting ad sets and reviewing summer promo creative. The account manager approved and actioned the change.
08 The outcome
What changed,
and what was delivered
Every operational bottleneck was eliminated, delivering verified time and cost savings from month one.
| Area | Before | After 90 days |
|---|---|---|
| Time on reports | 42 hours a month across 12 clients | 6 hours a month (around 30 minutes of review per client) |
| The maths | By hand, in spreadsheets | Automated calculations with 100% consistency, spot-checked by staff |
| Writing it up | Written from scratch each time | AI drafts takeaways and narrative; team adds client context |
| Adding a client | Another 3.5 hours every month | Workflow cloned in minutes, adding only 30 minutes a month |
How the 90 days ran
Ran automated reports alongside manual reports to verify accuracy and narrative quality.
Incorporated account manager feedback, refined metrics, and added four more client accounts.
Retired manual builds entirely. The team transitioned full-time to review and strategy.
09 The numbers
The results
at 12 clients a month
With all 12 clients live on the system, the agency gained 36 hours a month back for high-value client strategy, with a human reviewing every deliverable.
A 30-minute check, not a 3.5-hour build.
Staff time plus $1 of AI use. Hosting is extra.
Time for strategy, calls and new clients.
Month by month
| Measure | Before | Month 1 | Month 2 | Month 3 |
|---|---|---|---|---|
| Clients on the AI report | 0 | 4 | 8 | 12 |
| Hours on reports | 42 | 30 | 18 | 6 |
| Hours back for client work | 0 | 12 | 24 | 36 |
| Staff time freed at $60 an hour | $0 | $720 | $1,440 | $2,160 |
| Running cost (AI and hosting) | $0 | $34 | $38 | $42 |
| Net gain a month | $0 | $686 | $1,402 | $2,118 |
a month in staff time saved, net of running costs, across all 12 clients. That delivers $25,400 a year in recovered agency capacity.