Olee

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
The platform's analytics: messages sent, delivery, engagement and responses, engagement by channel over twelve weeks, the channel mix, an AI insight suggesting which channel to lead with, and the top campaigns.
Illustrative screen. All figures are invented.

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. 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. 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. 3

    One message, every channel. WhatsApp, email, SMS and app notifications were run separately, so the same broad message went out everywhere.

  4. 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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
Live change feed

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. 1

    The request

    “Lapsed customers who still open our emails”

  2. 2

    The AI's plan

    Segment + filters + exclusions, as structured fields

  3. 3

    Approved catalogue

    Only known segments, measures and joins can be used

  4. 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.

audience.csv214,806 rowsServer workspace
Review before importPage 1 of 4,297
  • 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

WhatsApp

Hi Sam, it's been a while! Here's 15% off anything this week, just for you.View my offer

Email

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.

  1. Queued
  2. Sent
  3. Delivered
  4. Engaged
  5. Responded
  6. 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.

  1. Customer data
  2. Live sync
  3. Ask in plain words
  4. Segment
  5. Campaign
  6. 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. 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. 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. 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. 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.