Case study
From scattered customer data to campaigns that land.
A business sat on a mountain of customer data it couldn't easily use. We built an AI platform that turns it into audiences a marketer can describe in plain words, campaigns across every channel, and analytics that show what worked.
- Built for
- Marketing and growth teams
- What we built
- An AI campaign and analytics platform
- Services
- Data engineering, AI integration

01
The challenge
The right customers were in there. Somewhere.
The data to run great campaigns already existed. It just wasn't in a shape anyone in marketing could use.
The business held a large and growing body of customer data, spread across its core systems, exported spreadsheets and files that had been added to for years. Somewhere in there were exactly the right people for every campaign. Finding them was the hard part.
Like many marketing teams, they depended on someone who could write database queries to pull each list, and that meant a wait. Lists came back as spreadsheets, were cleaned by hand, then uploaded to whichever channel the campaign used. Once the messages went out, there was no single place to see what had actually worked.
We set out to fix four things.
- 1
Too much data, too little shape. Large volumes of records in different systems and formats, none of it organised around the questions marketing wanted to ask.
- 2
Every list needed an analyst. Finding the right audience meant a technical request and a wait, so campaigns were built around whoever was easiest to find.
- 3
One message, every channel. WhatsApp, email, SMS and app notifications were run separately, so the same broad message went out everywhere.
- 4
No view of what worked. Sends, deliveries and responses lived in different places, so the next campaign learned little from the last.
02
How we solved it
Four problems. Four answers.
Make the data usable, make it easy to ask, make every channel one campaign, and measure everything.
The problem
Data too big and too messy
What we did
One live, campaign-ready copy of the data.
The platform keeps its own copy of customer records, updated moments after the source systems change, and cleaned into a shape marketing can work with. Large files can be imported too, and checked row by row before they count.
The problem
Every list needed an analyst
What we did
Describe the audience in plain words.
A marketer types who they want to reach. AI turns it into a precise, approved query, shows how many people match, and saves the result as a segment anyone can reuse.
The problem
One message, every channel
What we did
One campaign, the right message per channel.
A five-step wizard takes a campaign from audience to schedule. AI drafts each message in the right length and tone for WhatsApp, email, SMS or push, and people edit before anything is sent.
The problem
No view of what worked
What we did
Analytics from send to response.
Every message is tracked from sent to delivered, and engagement and responses flow back into the same dashboard, so the team can compare channels, campaigns and audiences in one place.
Try the audience builder. Pick a request.
Build an audience. Three example requests.
Who do you want to reach?
Customers who haven't bought anything in six months but opened one of our emails last month
Understood as
- SegmentExisting customers
- FilterLast purchase over 6 months ago
- FilterOpened an email in the last 30 days
- ExcludeOpted out of marketing
- Uses approved segments and measures only
- Read-only query checked before it runs
People who match
18,240
Reachable by
- Email100%
- WhatsApp64%
- SMS81%
The AI plans the audience. It never writes the query itself.
Illustrative data.
03
How we built it
Data first. Then the campaigns.
We built from the bottom up: a clean, live foundation of data, then the tools that sit on top of it.
Phase 1
Connect the data
We set up a live feed from the business's core systems into a separate campaign database, so marketing could work with fresh data without ever slowing down, or touching, the systems the business runs on.
Phase 2
Make the data safe to ask
Together with the team we wrote down the language of their customers: the segments, measures and filters that matter. That catalogue became the only vocabulary the AI is allowed to use.
Phase 3
Build the campaign engine
Segments, templates, a five-step campaign wizard, AI-drafted messages per channel, scheduling, and sending through WhatsApp, email, SMS and push, all from one place.
Phase 4
Close the loop
Each customer can get a personal page to respond to an offer, verified with a one-time code. Deliveries, opens and responses flow back into the analytics, campaign by campaign.
Phase 5
Lock it down
Two-factor sign-in, roles that decide who can build and send campaigns, and a record of every change.
04
Under the hood
The decisions that make it work at scale.
Four engineering choices let the platform handle large, messy data safely, and keep marketers in control.
A
Live data, without touching the source.
Running marketing queries straight against the systems a business depends on is a good way to slow them down. Instead, the platform listens for changes as they happen in the source databases and copies each one into its own campaign database, usually within moments.
The core systems carry on as if nothing were there. Marketing gets fresh data, organised around customers rather than transactions, that it can query as hard as it likes.
Core systems
- Customer records
- Transactions
- Files and exports
Built for marketing
Campaign database
Organised around customers, refreshed within moments, safe to query as hard as you like.
B
Plain words in, safe queries out.
Letting an AI model write database queries freely is fast to demo and risky to run. So the model never writes the query. It produces a structured plan: which segment, which filters, which measures. That plan is then compiled into a query using only the approved catalogue of segments, measures and joins.
The compiled query is checked before it runs, and it can only ever read. If the request doesn't map onto the catalogue, the platform asks a clarifying question instead of guessing. Every audience comes with a plain-English explanation of exactly who is in it and why.
1
The request
“Lapsed customers who still open our emails”
2
The AI's plan
Segment + filters + exclusions, as structured fields
3
Approved catalogue
Only known segments, measures and joins can be used
4
Checked query
Validated and read-only before it ever runs
If a request doesn't fit the catalogue, the platform asks a clarifying question instead of guessing.
C
Imports that don't break the browser.
Some audiences arrive as files, from a few thousand rows to hundreds of thousands. Loading all of that into a web page freezes it, and at the top end crashes it.
So the file goes straight to the server, which reads it, holds the rows in a temporary workspace and hands the page one screen at a time. People can search, fix and remove rows before confirming, and nothing becomes part of an audience until they do.
- Customer 20411n•••@mail.example
- Customer 20412missing
- Customer 20413r•••@mail.example
- Customer 20413r•••@mail.example
D
Every channel, one campaign.
A campaign is written once and delivered through each channel in its own way: a short SMS, a richer WhatsApp message, a full email. Messages are queued and sent at a steady pace, so a large campaign never overwhelms a provider.
Each message's progress is recorded, from queued to sent and delivered, along with engagement and responses where the channel reports them. That record is what the analytics are built from.
SMS
We've missed you. 15% off your next order this week: link.example/s1
Something to welcome you back
A lot has changed since your last visit. Here's what's new, and 15% off to explore it.
Push
15% off, this week only
Tap to see your offer.
- Queued
- Sent
- Delivered
- Engaged
- Responded
- Every stage feeds the analytics.
05
Inside the platform
Inside the platform.
Everything a marketing team needs to go from a question about its customers to a campaign, and back to the results.
From raw data to insight.
- Customer data
- Live sync
- Ask in plain words
- Segment
- Campaign
- Analytics
AI audience builder
Describe who you want to reach; see how many match and why.
Reusable segments
Save audiences once and use them across campaigns.
Five-step campaign wizard
Channel, audience, content, schedule and review, in that order.
AI message drafts
Channel-ready copy in the tone you choose, always edited by a person.
Four channels
WhatsApp, email, SMS and push notifications from one campaign.
Large file imports
Hundreds of thousands of rows, reviewed before they count.
Campaign analytics
Delivery, engagement and responses by channel and over time.
Secure by default
Two-factor sign-in, roles and a full history of every change.
06
What we learned
Four things we'd do again.
What building AI on top of large, messy customer data taught us.
- 1
Give AI a vocabulary, not a keyboard. Constraining the model to an approved catalogue made its answers predictable, explainable and safe to act on.
- 2
Keep marketing off the production database. A live copy built for campaigns gives the team freedom to explore without putting the core business at risk.
- 3
Show your working. An AI-built audience is only useful if people trust it. A plain-English account of who is in it, and why, is what earns that.
- 4
Measure from the first send. Designing tracking in from the start is what turns a messaging tool into something a team can learn from.
07
The result
Years of scattered customer data became something a marketer can simply ask: who to reach, what to say on each channel, and what happened when they did.
Audiences without a ticket. A plain-English request replaces a technical request and a wait.
Every channel, one place. Campaigns are planned, sent and measured together.
Insight that compounds. Each campaign's results are there to shape the next.
Your turn
Sitting on data you can't use?
Tell us where your customer data lives today. Our engineers will show you honestly what it would take to turn it into campaigns and insight.