Skip to content

How we cut response time from 7 hours to 2 minutes with a WhatsApp bot

A real case from a Caracas store that sells on WhatsApp: customers who waited 7 hours on average, and up to a week, now get a reply in 2 minutes. Here is how we built it.

whatsapp automation case-study ai

From November 2025 to July 2026 I was Tech Lead at Vitrina Online / NQLN (nqlnstore.com), a retail store in Caracas that sells almost everything through WhatsApp. There we built Necesitas Bot, an assistant that serves customers in the same chat where they were already buying.

This article is for business owners who sell on WhatsApp and feel the chat is getting away from them. I’ll cover the problem, what we built, the results we measured, and what I’d do the same way if I started today. At the end there’s a short technical section for developers.

The problem: customers waiting hours, sometimes days

In Venezuela, a lot of people shop through WhatsApp. They write in, ask if a size or color is available, ask for the price in bolívares, send a screenshot of their Pago Móvil transfer, and wait for someone to confirm. For the store, each of those conversations is a possible sale.

The problem was that a person handled all of it, message by message. When we looked at the support panel, the average time to the first human reply was 7 hours and 16 minutes. And that was the average: on the busiest days, some customers waited up to a week for a reply. It wasn’t for lack of people: about 10 people were answering the chat.

Seven hours is a long time on WhatsApp; a week is a lost sale. By then the customer has already written to another store, lost interest, or simply forgotten. On top of that, most questions were the same ones:

  • Do you have this product? In what size?
  • How much is it in bolívares?
  • I already paid, can you confirm?
  • Do you ship to my city? How much is it with MRW?

All of these have an answer in some system: the inventory, the day’s exchange rate, the bank, the shipping table. Whoever was answering had to look up each piece of data, go back to the chat and type it. Multiply that by hundreds of conversations and you get 7 hours.

What we built: Necesitas Bot

The idea was not a “press 1 for sales” menu. We wanted customers to write the way they always did and get a fast answer based on real data.

Necesitas Bot does the following:

It understands how people actually write. It reads text messages, listens to voice notes and looks at photos. If a customer sends a photo of a product and asks “do you have this one?”, the bot understands it. If they send several messages in a row, it waits until they finish typing and answers everything at once.

It checks the real store. It searches products and checks stock in Shopify, where the store already kept its catalog, and looks up the status of the customer’s orders. It doesn’t make up availability: if something is out of stock, it says so.

It validates payments. The bot sends the customer a link where they enter the reference, bank and date of their payment. The system looks that payment up in Banesco, including Pago Móvil, and if it’s complete it marks the order as paid. If it can’t find it, the payment goes to manual review. This was one of the tasks that took the most time from the team.

It handles currency and shipping. It converts prices to bolívares at the official BCV rate and, on the same payment link, collects the shipping details: an MRW or Zoom office, or delivery in Caracas.

It asks for help only when it needs it. The bot answers almost everything on its own. When a case is beyond it (a complaint, a cancellation, a question it can’t solve, or a customer who asks to talk to someone), it hands the conversation to a person on the team and stays quiet in that chat. I explain how below.

It recovers sales that were slipping away. It messages people who left a cart halfway, cancels only the orders that were never paid to free up stock, and closes finished conversations, so the team only sees what is actually pending.

It works for several brands. During my time on the project, the bot served five brands in the group: NQLN, Levni Care, Pictorys, Enlazados and Vauli. On WhatsApp it sold for the first four, each with its own tone, rules and assistant. Vauli, which sells wholesale, used the automatic price replies on Instagram and Facebook comments and messages.

The results

These are the numbers we measured:

MetricBeforeAfter
First response (average)7 h 16 min (human)~2 minutes (automated)
First response (worst case)up to 1 week~2 minutes
People answering chat~102 to 3

First response went from more than 7 hours on average, and up to a week on the worst days, to about 2 minutes, at any hour. A note on the comparison: before, we measured the first human reply; now, the first automated reply. But for the customer what matters is the same: someone answers with useful information almost right away.

The support team went from about 10 people to 2 or 3. At a reference cost of US$300 per person per month, that’s more than US$2,100 per month in payroll, not counting social charges or other costs tied to each position.

The people who stayed don’t do the repetitive work. They handle the cases the bot passes to them: complaints, cancellations, special orders, customers who prefer to talk to someone. That’s more useful work than copying prices from the inventory into the chat.

How the bot hands a chat to a person

This is what people ask about most, so here it is in detail.

The bot has a tool to ask for human help, and it uses it when the customer asks for it, when there’s a complaint, when the customer wants to cancel an order (the bot doesn’t cancel orders), when information is missing, or when the question is too complex. It also asks for help if a payment doesn’t match the order: for example, if the order was already paid or cancelled.

When that happens, in this order:

  1. The conversation is assigned to a person in the team’s dashboard, and the bot stops replying in that chat.
  2. A supervisor gets a notification.
  3. The chat is tagged so it’s easy to find.
  4. An internal note with the reason is left in WhatsApp Business, so whoever picks it up doesn’t have to read everything from the start.

The bot stays quiet for a while after a person steps in. It starts answering again when that time is up, when someone on the team turns it back on, or when the customer places a new order or payment. Each store can also choose a softer mode, where the bot notifies and tags but keeps answering.

And if the bot fails for a technical reason, it leaves a note in the conversation with the reason and the time, so no chat goes unanswered without anyone knowing.

How we did it, without the code

We didn’t build it all at once. Roughly, the order was:

  1. First week (November 2025): AI replies using the Shopify catalog, voice notes, photos, and the tool to hand a chat to a person. With that, the bot could already serve customers without the risk of leaving one stuck.
  2. December 2025: payment validation with Banesco, including Pago Móvil.
  3. January 2026: the payment link where customers validate their payment and leave their shipping details.
  4. February 2026 onward: more brands on the same foundation, Zoom shipping and, later, price replies on Instagram and Facebook.

In parallel we built a web dashboard where the team sees conversations, picks up the ones the bot hands over, and reviews orders and payments.

What I’d do again

Measure before building. Having the 7 h 16 min written down from the start is what let us show with numbers that the bot worked. If you’re going to automate your WhatsApp, first measure how long you take to reply today.

Connect to the real systems. A bot that replies “let me check and get back to you” isn’t worth much. The value is that it actually checks stock, the exchange rate and the payment, right then.

Let the bot say “this one isn’t for me”. Handing the conversation to a person when needed made the team trust the bot and kept customers from getting frustrated.

Keep sensitive data out of the model’s hands. The bank details the bot can give a customer are checked by code before the message is sent, not by the AI. If the model gets it wrong, the message doesn’t go out with the wrong account.

Accept voice notes and photos. In Venezuela many people prefer to send an audio or a screenshot instead of typing. If the bot only understood text, a good share of messages would still end up with a person.

For developers: the stack

If you’re a developer and curious how it’s put together:

  • TypeScript across the whole project, organized as a monorepo.
  • Node.js with Fastify for the backend: it receives WhatsApp webhooks and orchestrates calls to the AI and external systems.
  • PostgreSQL for conversations, bot state, orders and payments.
  • React 19 for the team’s dashboard and the customer’s payment page.
  • Zod in a package shared by server and client: the same schemas validate the API, the dashboard forms and the inputs of the AI’s tools.
  • Callbell as the WhatsApp Business provider.
  • Shopify for catalog, stock and orders.
  • OpenAI, through the Vercel AI SDK, for replies and to understand audio and images.

A few decisions I think matter:

  • Tools instead of text you have to parse. The model replies in plain text, but to do things it calls tools whose inputs are validated with Zod: search products, check inventory, look up orders, convert to bolívares, register a payment, update the shipping address or ask for human help. The backend runs the tool and returns the result.
  • Structured output only where it’s needed. To read payment receipts we do use fixed-shape output validated with a schema, because every field matters there.
  • Hand-off to a human is just another tool. It isn’t an error case: it’s a normal action the model can choose, with a reason from a closed list. Keeping the bot quiet after the hand-off is handled by the backend, not the model.
  • Per-brand instructions. Each brand has its own prompt and settings on top of the same logic, so adding a brand doesn’t mean copying the bot.

Do you sell on WhatsApp?

If your business sells on WhatsApp and your customers wait hours or days for a reply, we can look at whether a bot like this makes sense for you. Message me on WhatsApp and tell me how you handle support today.