← Case studies

Case study

Case study · AI chat sales

From 30 operators to 5, replying in seconds

We built the bot that handles the ads of a high-volume B2C operation in Latin America. It now replies in seconds at any hour, the chat team went from 30 people to 5, and the client saves about USD 15,000 a month in salaries.

  • 217,392 leads handled
  • 15 brands
  • Production data

By the numbers

−83%
Chat operators: from 30 to 5
$15k
USD estimated monthly salary savings
97,7%
Of October leads handled with no person involved
10,8×
Higher conversion replying within 5 min than after 1 hour
Client
High-volume B2C operation, LATAM (anonymous)
Channels
WhatsApp and web chat from Meta ads
Volume
217,392 leads; 80,014 at the July peak
Period
April to October 2026
Stack
Ruby on Rails, PostgreSQL, Sidekiq and an LLM

The problem

The problem

Every minute of waiting cools the customer down

Every ad ends in a chat conversation. Customers write while their intent is fresh, and whoever answers first wins the sale. Manual service needed about 30 operators in shifts, and peaks still created queues. The work was nearly always the same: greet, ask for details, create the account, send payment details and check the receipt.

  • 24%of leads write between midnight and 8 am, when staffing is hardest.
  • 32,6%arrive on weekends.
  • 2.580leads a day at the July peak. Volume rises and falls with ad spend.
  • 30operators on rotating shifts, with constant hiring, training and turnover.

Companies that contact a lead within the first hour are nearly 7 times as likely to qualify it as those that wait one more hour.

Harvard Business Review · 2011 · hbr.org

More than 99% of companies do not reply to a new lead within 5 minutes.

Workato · 2026 · workato.com
Before, by hand
  • 30 operators in shifts
  • Queues at peak hours
  • Thin cover at night and on weekends
  • Copying and pasting the same details all day
With the bot
  • 5 people for special cases
  • First reply in 44 seconds, at any hour
  • The same process, done right, for every lead
  • Every sale attributed to its campaign

The solution

The solution

A bot that does the repetitive work and hands off the rest

Instead of a button menu, we built a conversational bot that follows the same process as the best operator. AI is used only where free text needs to be understood. People handle what the bot cannot or should not resolve.

Entry

Meta ad

The click opens WhatsApp or web chat with the campaign code.

Intake

CRM

Groups back-to-back messages and triggers a single reply.

Brain

21-step bot

Greeting, details, sign-up, payment, receipt and free questions with AI.

Outcome

Conversion

Recorded in the CRM with its source campaign.

Feedback

Event to Meta

The sale goes back to Meta so ads optimise for real customers.

Handoff

Human operator

Gets only what the bot cannot close, with the full history.

  1. Greets in seconds

    With each brand's text, amounts and tone.

  2. Attributes the campaign

    Reads the ad code to know which campaign made the sale.

  3. Creates the account

    Asks for the name and signs the customer up on its own.

  4. Sends payment details

    Each brand's own, with variables instead of fixed amounts.

  5. Reads the receipt

    In-house OCR validates the payment image or PDF.

  6. Answers questions with AI

    An LLM answers free questions, with a cap on replies.

  7. Hands off in time

    On a problem or after N AI replies, passes the chat to a person.

  8. Closes the loop

    Marks the conversion and sends it to the Meta Conversions API.

Rollout

Rollout

From pilot to production in six months

We first proved the process on a workflow tool. When volume justified it, we rewrote the bot inside the client's CRM and moved it over one brand at a time.

  1. Apr 2026

    Pilot

    First version on an external workflow engine: 19 workflows and about 210 nodes.

    652leads
  2. May – Jul 2026

    Scale

    The bot now serves 9 brands, and the human team shrinks as the bot absorbs the volume.

    80,014leads in July
  3. Sep 24 – 25, 2026

    Rewrite in the CRM

    All 21 steps move to in-house code with end-to-end tests. It first runs in shadow mode: it processes everything but sends nothing.

    36shadow runs
  4. Sep 26 – Oct 14

    Brand-by-brand switch

    A per-brand switch moves from the old engine to the new one. Turning it off is the emergency brake.

    15brands moved

Results

Results

Replying fast is what sells most

Conversion rate by how long the first reply took. Leads from August to October 2026 with a recorded conversation (n = 40,749).

< 1 min33,705 leads
38,7%
1 – 5 min4,427 leads
58,8%
5 – 15 min1,262 leads
39,2%
15 – 60 min457 leads
32,4%
> 1 hour898 leads
3,8%
Up to 5 minutesOver 5 minutes

The under-1-minute bar includes the previous bot version in August, which converted less; that is why it sits below 1 to 5 minutes. With the new version in October, conversion stays near 60% for the whole first hour.

41,0%VS3,8%

Conversion when replying within 5 minutes versus after an hour: 10.8 times higher.

57,5%VS34,3%

Conversion of the new bot versus the previous one over the same weeks (Sep 26 – Oct 23; 5,924 and 743 leads).

3,9 s

Median processing time per message, including the LLM call. The visible reply takes about 44 s because each brand sets a delay so it feels natural.

217.392

Leads handled by the bot from April to October 2026.

The difference in one chat

The difference in one chat

Same message, two waits

Manual service at peak hour+17:00
Hi! I saw the ad, how do I sign up?
Hi! Sorry for the wait, what's your name?
The customer stopped replying
Bot+0:44
Hi! I saw the ad, how do I sign up?
Hi, welcome! What's your name so I can create your account?
Martín
Done, Martín. Your account is ready and here are your login details.
Here are the payment details. Once you transfer, send me the receipt and I'll credit it.

Illustrative conversation: timings are the bot's median and a typical manual queue.

The savings

The savings

Thousands of dollars a month in salaries

The chat team went from about 30 operators to 5. Move the values to see the savings with your own costs.

Monthly savings
USD 15.000
Yearly savingsUSD 180.000
Team reduction−83%
Leads per person×6

Assumption: USD 600 total cost per operator per month, as an editable reference. The operator count comes from the operation, not the database. The bot's AI and server costs are not deducted.

  • Handle what the bot hands off

    In October that was 2.3% of leads, and they arrive with the full history.

  • Review special cases

    Complaints, payments that don't match and customers who ask for a person.

  • Tune the bot without code

    Texts, amounts and rules per brand, with history and undo.

For technical teams

For technical teams

How it is built

Architecture and technical decisions
  • Fixed 21-step pipeline in Ruby on Rails. Each step is a class with tests; full conversations have end-to-end tests.
  • Three modes per brand: old engine, shadow (runs and compares without sending) and new. Moving leads between engines is a job with a bulk copy, a catch-up and a second pass 2 minutes later.
  • Idempotent effects. Every message sent and every write goes into an effects ledger, so a retry never duplicates messages or sign-ups.
  • Lead state in PostgreSQL with an advisory lock, so two simultaneous messages never create two leads.
  • Message debounce. If a customer sends three messages in a row, the bot replies once.
  • Configurable delay so replies feel natural; that is why the visible median is 44 s while processing is 3.9 s.
  • Handoff after N AI replies or on an unresolved question, with the history visible to the operator.
  • Server-side conversion to the Meta Conversions API with fbc, fbp, IP and user agent, so ads optimise for real customers.
  • In-house receipt reader (self-hosted OCR) instead of a paid external service.
  • Per-brand settings with history and undo; texts use variables like {min_amount} instead of fixed numbers.
Method and limitations
  • Source: the client's production database, read-only query on October 24, 2026.
  • Conversion: a lead marked as converted in the CRM.
  • First reply: time between the customer's first message and the first outgoing message in that conversation.
  • Messages are stored from July 10, 2026, so there is no direct measurement of the fully manual period. The speed comparison uses leads from August to October.
  • The operator count (30 → 5) and the cost per operator come from the operation, not the database.
  • Leads before September were copied from the previous version only for brands that moved, so August to October volume is undercounted.
  • Campaigns and ad spend changed over the same period, and the version comparison mixes different brands (15 versus 5).

What we learned

What we learned

Four decisions we would repeat

  1. Copy the best operator

    The bot follows a fixed process; AI only comes in where free text must be understood.

  2. Run in shadow first

    Processing real conversations without sending anything catches mistakes before a customer sees them.

  3. One switch per brand

    Moving one brand at a time, with an emergency brake, brought the risk close to zero.

  4. Measure the first reply

    It is the number that explains conversion best, and the easiest to improve with automation.

Are your chats still answered by hand?

Davar means both “word” and “deed”: what is said, is done. Tell us how your team handles chats and we turn it into a system that answers on its own.

Get a free diagnosis →