Case Study: An AI Sales Engine for a B2B Skincare Brand
One platform, two engines: AI prospecting that works 36,000 leads, and account intelligence that reads every invoice to catch ~30% silent churn before customers leave.
A Polish premium dermocosmetics brand selling B2B to beauty and derma salons was running a healthy business on top of a system that could not see itself. Two completely different jobs, finding new customers and keeping the ones it already had, were both running on spreadsheets, manual messaging and memory.
We replaced that with one platform, OSAI, built around a distinction that matters: two independent engines that do not share a pipeline.
- An acquisition engine that prospects to a database of potential customers, the leads.
- A retention engine that reads the orders and invoices of the customers who already buy.
Leads are people who might become customers. Ordering companies are people who already are. They are different populations, they are handled by different parts of the system, and conflating them is exactly the mistake we designed around. Here is what we built, with the real numbers behind it.
The situation before
Both jobs worked on effort and memory, and both were blind in their own way.
On the acquisition side, a database of tens of thousands of leads sat mostly cold, worked by hand when someone had time.
On the retention side, the problem was deeper: nobody read the order history at all. Invoices were issued and filed. Because nothing watched the orders of existing customers in aggregate, decline was invisible. A customer could quietly halve their orders and nobody would notice. In fact, a customer could stop ordering entirely, go completely silent, and nobody would realise it had happened until long after the account was already gone.
A customer could stop ordering entirely and nobody would realise it had happened. There was no system watching for it.
What we built: one platform, two engines
The core design decision was to keep the two jobs separate, because they answer different questions about different people. One platform, one login, two engines that run independently.
Engine 1: winning new customers
The acquisition engine works the lead database, more than 36,000 potential customers, and runs the top of the funnel almost entirely on AI.
- The SMS system enriches the base. It harvests email addresses for leads that were missing them, so the database becomes more complete on its own.
- Cold email goes out automatically. Interested replies drop straight into the sales funnel, with no manual sorting.
- An AI Assistant answers inbound SMS and email. Prospecting runs end to end: it replies, qualifies and routes. Follow-ups are automatic, so no warm lead is ever forgotten.
A human enters only when it matters: when a qualified, interested prospect is ready for a real conversation. This engine never touches invoice data, because a lead has no orders to analyse yet. Its whole job is to turn strangers into that first conversation.
Engine 2: keeping and growing the customers you have
The retention engine ignores leads entirely. It looks only at the companies that already order, and it does the thing the business never did before: it reads the data.
Every invoice, finally read
Before, invoices were a dead end. Now they are the richest signal in the business. Every invoice, more than 7,000 a year and 20,000+ to date, is parsed into structured data: which customer, which products, how much, when. That is over 90,000 individual line items turned into analysable history.
Two technical details make this trustworthy at scale:
- Multi-currency, one yardstick. Invoices arrive in different currencies. The system normalises each to PLN at the invoice-date exchange rate, so revenue, trends and commission are always comparable.
- Commission on autopilot. Sales rep commission used to be worked out by hand. Now it is calculated automatically from the normalised invoice values. No spreadsheet, no disputes, no month-end scramble.
Spotting accounts before they churn
This is the part that changed the most. The engine watches each existing customer's order rhythm and flags the two things that used to be invisible: customers who have stopped ordering, and customers who are ordering less than they used to. It predicts who needs attention now, before the account is gone.
Across this brand's established accounts, the data revealed an annual churn of roughly 30%, and before OSAI, none of it was being caught in time. With decline-and-silent-churn detection feeding a daily call list, the goal is to roughly halve that.
Every morning at 7:00, each rep opens the app to a ranked call list. Not a raw customer dump, a prioritised list of exactly who to phone today, why they are on it, and what to offer when they pick up.
Knowing what to sell, and seeing the whole base
- Product recommendations. With a catalogue of more than 90 products, the engine matches products to each customer's purchase history and proposes what to offer next, so reps walk in with a specific recommendation, not a generic pitch.
- The customers on a map. The whole base is plotted geographically: one view of every customer, another of who is actively ordering and where that ordering is concentrated.
- Reporting that builds itself. The CEO receives a report automatically. And anyone can ask the AI a plain-language question, like which accounts are slipping this month or what a customer last ordered, and get the answer straight from live data, both inside the web app and in Discord, where the team already works.
Why the separation matters
Keeping the engines apart is not a technical footnote, it is the point. A lead and a customer need opposite things. A lead needs to be contacted, qualified and converted; there is no purchase history to mine. A customer needs to be watched, retained and grown; cold outreach would be noise. By refusing to blur the two, each engine stays sharp: the acquisition engine optimises for first conversations, the retention engine optimises for revenue you already have and could lose.
The numbers behind it
This is not a prototype. It runs a real business at real volume.
| Engine | Metric | Scale |
|---|---|---|
| Acquisition | Leads in the database | 36,000+ |
| Acquisition | Top-of-funnel handling | AI-run (SMS + email) |
| Retention | Invoices analysed | 20,000+ (about 7,000 a year) |
| Retention | Invoice line items parsed | 90,000+ |
| Retention | Active ordering customers | 5,000+ |
| Retention | Annual churn surfaced | ~30%, now monitored |
| Retention | Catalogue for recommendations | 90+ |
Under the hood
For the technically curious, OSAI is a custom application, not a stack of SaaS subscriptions glued together:
- Next.js + PostgreSQL (Supabase), multi-tenant with row-level security. One schema, strict per-organisation isolation.
- Invoice ingestion from the brand's accounting platform (wFirma) on a schedule, parsed into orders, line items and per-currency totals normalised to PLN (retention engine).
- Self-hosted SMS gateway so messaging costs effectively nothing per message, with inbound replies matched back to the right lead even when numbers arrive in messy formats (acquisition engine).
- Cold email with AI-written personalisation, and reply classification that maps inbound answers to status automatically (acquisition engine).
- An assistant layer that turns the live database into plain-language answers, on the web and in Discord (retention engine).
Why weeks, not quarters
People are surprised something this broad shipped in weeks. It works because the build follows the process we use on every project: a sharp scope, an agent-assisted build, and a deploy with monitoring from day one. We break it down in how we ship custom apps in weeks, and the build-vs-buy logic in build vs buy: when a custom app wins.
The results
The change was less about one headline number and more about how the whole motion now runs.
- Chaos became a scalable system. A scatter of disconnected tools and a lot of memory turned into one platform with two focused engines.
- The acquisition engine works the cold base. 36,000 leads went from a static list to a self-enriching, AI-run funnel that hands reps warm conversations.
- The retention engine reads the data nobody read. 20,000+ invoices went from filed-and-forgotten to the signal that drives retention and upsell.
- Silent churn gets caught. Existing customers who slow down are flagged and called before they leave, instead of being noticed once they are gone.
- Reps stopped guessing, leadership stopped flying blind. A 7:00 call list, automatic reports, and an ask-anything AI replaced gut feeling and hand-built spreadsheets.
What we would tell anyone considering this
A few honest lessons from the build.
- Do not blur prospects and customers. They need opposite things. The clarity of two separate engines is what makes each one effective.
- Unread data is the most expensive thing you own. This brand had years of invoices that answered every important retention question. Nobody was reading them. Turning that history into signal was the single biggest win.
- Put the intelligence where the team already is. A 7:00 call list and answers in Discord get used. A dashboard someone has to remember to open does not.
If you are sitting on a cold lead database, a wide catalogue, or years of unread orders, talk to us. We will look at your data with you and tell you honestly what an AI sales engine could pull out of it before we build anything.