Skip to main content
veles

Case study deep-dive

How we built a WhatsApp AI agent for a B2B wholesaler

By Igor Medic6 min read

In December 2025 we shipped a WhatsApp AI agent for a B2B mobile-parts wholesaler in Serbia. The owner was personally answering 80-120 WhatsApp messages a day from buyers across the country. He could not scale the business because he was the bottleneck. Four weeks later, the AI was reading every inbound message, proposing a daily promo, taking orders from approved buyers, and routing only the genuinely complex conversations to a human. The owner went from 5 hours a day in WhatsApp to 30 minutes.

This is the story of how we built it, what we got wrong on the way, and what a custom WhatsApp AI agent actually does that off-the-shelf chatbot platforms cannot.

The problem the owner actually had

Most "we need a chatbot" pitches turn into Intercom installations. This one was different. When we ran Discovery, three things stood out:

  • The buyers were repeat B2B customers. They knew what they wanted, used Cyrillic and Latin Serbian interchangeably, and expected fast pricing for irregular SKU combinations.
  • The owner was making one strategic decision per day: which slow-moving inventory to promote. The rest of the work was repetitive. Quote, confirm, hand-off, repeat.
  • WhatsApp was non-negotiable. Buyers wanted WhatsApp. The owner wanted WhatsApp. Migrating them to a web app or a "customer portal" would have lost the relationship, not improved it.

A scripted chatbot was wrong for this. A web app was wrong for this. What the owner actually needed was a senior salesperson who lived in WhatsApp, knew the catalog cold, and could make pricing decisions inside owner-approved limits.

The design: AI proposes, humans approve

We built around a constraint that has become a Veles signature: AI proposes, humans approve any revenue-critical decision. Specifically:

  • The AI reads every inbound WhatsApp message in real time. It classifies intent (price quote, order, support question, off-topic), looks up the buyer's history, and drafts a response.
  • The AI proposes the daily promo: which slow-moving SKUs to push, at what discount, with what margin. The owner reviews this once a day and approves or edits. Total time: 5-10 minutes in the morning.
  • The AI takes orders within owner-approved limits: standard pricing, standard delivery, known buyers, in-stock SKUs. These flow straight to the back-office system without human review.
  • The AI escalates the rest: new buyer signups, custom pricing requests, low-stock substitutions, complaints. The owner sees a summarized conversation, not a transcript dump, and can reply in one tap.

In short, the system inverts the time budget. The owner used to spend 5 hours answering WhatsApp and 30 minutes deciding strategy. Now he spends 30 minutes deciding strategy and the system answers WhatsApp.

The technology choices, briefly

We used the official WhatsApp Business Cloud API (not third-party scrapers or unofficial wrappers, which both fail at scale and risk number bans). The AI layer is a custom orchestration of frontier language models with structured tool calls into the wholesaler's existing order system. Inventory and pricing data flow through a small in-house API we built. Nothing exotic, nothing rented from a no-code stack with a markup.

The two technology decisions that mattered most:

  1. Latin and Cyrillic Serbian, plus English. The buyers code-switch mid-message. The AI handles all three natively because the underlying models do. We did not have to train anything custom for this.
  2. Tool use over pure prompting. The AI does not "decide" how much to charge. It calls a pricing function with structured arguments, gets back a number, and quotes that number. Same for inventory checks. This makes the system auditable and stops the model from hallucinating prices.

What we got wrong (and fixed)

Two things broke in production that we did not catch in dry-runs.

The 24-hour customer service window. WhatsApp Business API distinguishes between freeform messages (allowed inside a 24-hour rolling window from the customer's last message) and template messages (allowed outside it). We initially built the agent to send freeform messages always, and the API started rejecting after-hours follow-ups. Fix: classify whether we are inside or outside the window, and route to approved templates when outside. Cost us a day, no customer impact because we caught it during the soft-launch phase.

Buyer disambiguation. Several buyers shared phone numbers across multiple businesses, or used personal numbers for their wholesale ordering. The AI initially attached orders to whichever business name first matched, which was sometimes wrong. Fix: explicit buyer confirmation on the first message of every new conversation. Adds 5 seconds at the start, eliminates the ambiguity. The owner had been doing this implicitly for years; we just had to encode it.

Both of these are typical for production AI. The reason we caught them in week one rather than month three is that the scoping process had a two-week post-launch monitoring period built in. Custom AI is never "done at launch" — it is launched and then tuned for a sprint.

The result, in numbers we can share

  • Daily WhatsApp time for the owner: from ~5 hours to ~30 minutes
  • Orders handled without human review: ~80% (the easy ones)
  • Orders routed to the owner with full context: ~20% (the high-value or unusual ones)
  • New buyer signups handled by the agent: previously zero, now most of them
  • Project timeline: 4 weeks from kickoff to production, plus 2 weeks of close monitoring

The full case study lives on the Mobilni Market portfolio page. It has the screenshots and a more detailed breakdown of the agent behavior.

When a WhatsApp AI agent is actually the right move

A custom WhatsApp AI agent makes sense if all three of these are true:

  1. WhatsApp is where your customers already are. Forcing them to a web portal will lose them. Doubly true for B2B in Serbia, the Balkans, and most of Europe outside the Nordics.
  2. The bottleneck is a person, not the tool. If a no-code platform would solve it, use no-code. Custom agents are for problems where judgement, multi-language understanding, or system integration are required.
  3. There is a clear human-in-the-loop checkpoint. Pure full-automation in WhatsApp customer-facing work is risky and usually wrong. The agent should propose, the human should approve revenue-critical actions.

If those three are true, custom is meaningfully better than off-the-shelf. If only one or two are true, you can probably get there with AI automation or a focused AI agent in a different channel.

What this kind of build typically costs

We do not publish tiered pricing because every WhatsApp AI agent is different. A focused agent on one channel for one buyer segment with light integration is at the lower end of our range; a multi-tenant agent across channels with on-premise inference and a back-office CRM rebuild is at the higher end. After a 30-minute discovery call you get a real fixed-price estimate, not a "starting from" number. The full methodology lives on our scoping page.

If your business runs on WhatsApp and your bottleneck is you, we should probably talk. Book a 30-minute discovery call and we will tell you on the call whether a custom WhatsApp AI agent is the right fit, or whether something simpler will save you money.

We use cookies to analyze site traffic and improve your experience. Privacy Policy