Ingest nine platforms
An ingestion layer built on Windsor AI pulls performance data from nine ad platforms into BigQuery, so every client's numbers live in one consistent warehouse instead of scattered platform exports.
We built Engage Media an AI reporting system that writes campaign-performance commentary for every client dashboard automatically, and keeps that commentary correct no matter which date range the client selects.
Engage Media is a media agency that runs paid campaigns for more than 26 clients, each with their own performance dashboard. Every month the team wrote the narrative commentary on those dashboards by hand, and the commentary broke the moment a client changed the date range. We replaced that with an automated reporting system: ad data from nine platforms flows into a warehouse, an n8n workflow generates the commentary with Gemini per client and per dashboard section, and Looker Studio binds the right narrative to whatever date range the client picks. The manual monthly writing is gone, the commentary stays accurate for any range, and any edits a person makes are kept when the workflow runs again.
Client dashboards are only useful if the numbers come with a story. So every month, someone on the Engage Media team sat down and wrote the performance narrative for each client: what spend did, which campaigns moved, what changed since last period. Across 26+ clients that is a lot of repetitive writing, and it landed at the same time every month.
The deeper problem was correctness. The commentary was written for one fixed period, but a dashboard lets the client drag the date range to whatever they want. The moment a client looked at a different window, the words on the page no longer matched the chart above them. The narrative was stale by design, and there was no good way to keep static text in sync with an interactive report.
The fix was to stop treating commentary as a block of static text and start treating it as data. If a short narrative exists for every client, for every dashboard section, and for every date range that matters, then the dashboard can simply look up the right one instead of showing whatever was typed last month. That turns reporting commentary into something a workflow can produce on a schedule and a report can query on demand.
We kept the division of labour deliberate. The AI extracts the figures and drafts the words. The structure, the routing, and the storage stay deterministic, one clean row per client, per section, per date range, so the same input always lands in the same place. That is what makes the dynamic binding reliable rather than a guess.
An ingestion layer feeds a warehouse, an n8n workflow generates commentary with Gemini per client and per section, and Looker Studio binds the right narrative to the date range the client selects. Built on Windsor AI, BigQuery, n8n, Gemini, Looker Studio, and Google Sheets.
An ingestion layer built on Windsor AI pulls performance data from nine ad platforms into BigQuery, so every client's numbers live in one consistent warehouse instead of scattered platform exports.
A monthly n8n workflow reads each client's data and uses Gemini to write the narrative per client and per dashboard section. The output is stored as one row per client, per section, per date range, so the right text always exists for the right window.
Looker Studio pulls the matching narrative dynamically, so when a client changes the dashboard date range the commentary changes with it and keeps describing the data on screen.
When a person refines a piece of commentary, those edits are preserved the next time the workflow runs. The automation never silently overwrites human judgment.
We later extended the system to per-page insights, driven by a Google Sheets config layer so the team can shape what gets generated where without touching the workflow.
The monthly job of writing dashboard commentary by hand across 26+ clients is gone. The team no longer rewrites the same narratives every period, and the commentary now stays correct for any date range a client chooses, because the dashboard looks up the right text instead of showing last month's.
"Bastien was great to work with. He is very responsive, supportive, and takes strong initiative throughout the project. He is amazing at what he does and the value he offers. He did strong research, stayed accountable, and handled his responsibilities very well. He also completed tasks before the deadline, which made the whole process smooth and reliable. I strongly recommend Bastien to any client looking for someone dependable, proactive, and professional."
Verified on Upwork
Book a free audit. We will map where your reporting eats time every month and show you exactly what to automate first. Confidential, no obligation.
Book My Free Audit bastien@otimizagency.com