
A media and education group running six brands wanted an AI layer over their business data. We told them the AI wasn’t the first problem. Here’s what we built instead — and why the AI came last.
6 brands unified · 19 sources connected · 1,200+ hours recovered annually
A multi-brand media and education group came to us with a clear vision from the top. The CEO wanted his team to be able to ask questions of the business in plain language — across every brand, without waiting on an analyst or a monthly report cycle.
It was the right goal. It was also, at that moment, impossible — AI tools are only as good as the data underneath them. Customer, marketing, learning and operational data sat in 19 separate systems that had never been connected to each other. Any AI pointed at that environment would have produced fluent, confident, wrong answers.
So we started somewhere less exciting: making the data true.
Six brands had grown up under one parent company, and each had accumulated its own stack — the same pattern we see whenever reporting has to be consolidated across separately-grown businesses. HubSpot and Salesforce for customer data. GA4, Google Ads and Meta for marketing. An LMS for learning. Asana, Zoom, Cvent, Mailchimp and SurveyMonkey for operations and events. Nineteen sources in total, none of them speaking to each other.
Three problems compounded each other:
Nothing could be answered at the portfolio level. Every brand reported independently. A question like “which brands are actually growing” required someone to pull six sets of numbers by hand and reconcile definitions that didn’t match.
Roughly 100 staff hours a month went into reconciliation. Recurring reports were assembled manually, every cycle, by people whose job was supposed to be something else. The work was slow, error-prone, and grew with the portfolio.
The reporting stack cost more than the reporting was worth. Tableau had been in place for years and was priced for far more sophisticated analysis than anyone was doing with it. And a handful of critical monthly scripts ran on knowledge held by very few people — the kind of dependency nobody notices until someone takes a vacation.
Before you can realistically use AI to query your data, that data needs to be centralized and cleaned first. That was the first problem we solved.
DataNicely came in as the strategic data architect. That’s a different role from building dashboards or writing pipelines: we defined the architecture, the data model, and the specifications — then directed a data engineering firm through implementation, and built the AI layer ourselves on top of the result.
The build ran in four layers, in this order deliberately.
Everything landed in BigQuery: one environment, every brand. We designed the schema, the staging structures and the transformation logic — including a universal identifier for joining records across platforms and brands, which is what makes a portfolio-level question answerable at all. That identifier existed in no source system. Constructing it turned out to be the hardest part of the engagement, and it gets its own section below.
Recurring work moved to Make.com and Cloud Functions, with custom Python reserved for the genuinely complex workloads. The governing principle was maintainability, not elegance:
Low-code where maintainability mattered; custom Python where complexity justified it.
Every low-code automation is one a non-specialist can open, read and fix. That was the point. The client had already been burned by scripts only one person understood.
Tableau had been the reporting layer for years, and it was priced for analysis nobody was doing. The dashboards weren’t sophisticated. The licence was — along with the infrastructure that had been stood up to support it.
Once the data was centralized and the definitions standardized, the reporting layer stopped doing the heavy lifting, and the case for an enterprise BI licence went with it. Reporting moved to Looker Studio, which sits natively on BigQuery at effectively no cost, and the subscription and its supporting infrastructure were both retired.
There was no argument to win here. Once someone laid out what was being paid for against what was actually being used, the decision made itself — which is usually what happens when the underlying data is finally clear enough to reason about.
Only after the underlying data was standardized and trusted did we introduce the AI layer: a Claude agent, orchestrated with Vellum, that lets anyone on the team ask a business question in plain language and get an answer drawn from the governed BigQuery data.
Had we built this first, it would have demoed beautifully and failed in production. Sequencing was the whole strategy.
1,200+ hours recovered annually. Roughly 100 hours a month — and a large share of it was coming out of the sales team. They had been assembling the numbers their clients wanted to see, by hand, every reporting cycle. Salespeople were doing reporting work instead of selling. Those hours went back to selling.
Reporting became self-service. The first thing people asked the agent was the simplest question available to them: summarize this client. What came back was the whole relationship in one place — every dataset touching that account, joined and read together. Nobody at the company had ever been able to see that view, and now nobody had to ask anyone for it.
That answer isn’t a trick the AI performs. It’s possible only because a universal identifier in the foundation lets one client’s records be matched across every platform and every brand. The agent is the interface; the data model is what makes the answer true.
Key-person dependency disappeared. No more deadline-driven scripts running on knowledge held by a handful of people. The system is documented, specified, and owned by the client — the same governance discipline that held up when we rebuilt reporting for a multi-division restoration company.
The BI bill came off the books. Moving reporting to Looker Studio on top of governed BigQuery data retired the Tableau subscription and its supporting infrastructure — with no loss of capability, because the reporting had never needed that capability in the first place.
We didn’t build a dashboard. We built the data layer the business runs on — and an AI interface that put that data directly in the hands of the people who need it.
The identifier that makes summarize this client work is the thing that took longest, and it wasn’t really a technical problem. It was a naming problem.
There was no shared client ID across the 19 sources. Where IDs existed at all, they were system-generated and meaningful only inside the system that issued them. So joining a client’s records across platforms came down to matching on names — and names are messy. The same company appears with different spellings, punctuation and legal suffixes depending on who typed it in. Companies merge and rebrand, which leaves two names for one business sitting in the same dataset with nothing to indicate they’re the same client.
We solved it with a company lookup table: every known spelling and former name across every source, mapped to one current accepted name. It is unglamorous, it needs maintaining as new variants turn up, and it is the piece of the build that everything else rests on. Get it wrong and every answer downstream is confidently, invisibly wrong.
Which is the argument of this whole case study in miniature. The natural-language interface is the part people find impressive. The reason it can be trusted is a lookup table nobody will ever see.
Phase one is complete. Phase two extends the data layer to website tracking and behavioral data across the portfolio — closing the loop between advertising spend, content performance and on-site behavior, so leadership can see each brand from impression through conversion.
Most companies asking for AI over their business data don’t have an AI problem. They have a data problem wearing an AI costume. The sequence that works is unglamorous: centralize, standardize, automate, then put an interface on top. Skip a step and you get a system that answers confidently and incorrectly — which is worse than no system at all.
If your data lives in a dozen systems and your team is still assembling reports by hand, the first move isn’t an AI tool. Let’s talk about what an AI-ready data foundation would look like for you.
Client identity anonymized.