LLM chatbots
A chat assistant that understands what was asked, rather than matching keywords.
The chatbots most people have met were keyword machines. They matched phrases to canned replies, and the moment a customer typed something slightly different they collapsed into "Sorry, I did not understand that." Everyone learned to type "agent" immediately.
A chatbot built on a language model reads the question the way a person does. "Do you deliver to Klang?", "can send to klang ah?" and "delivery available Selangor?" are the same question, and it answers all three from your actual delivery policy.
The engineering that matters is not the model — anyone can call an API. It is grounding: making sure it answers from your price list and your policies rather than from its own imagination, and that when it does not know, it says so and fetches a person instead of inventing a price.
Enquiries come in at 9pm. Nobody sees them until morning. By then two of the five have bought elsewhere, and your team spends the first hour re-typing the same answers about delivery and sizing.
All five get an accurate answer within seconds of asking. Three self-serve completely. Two are qualified, captured with name and number, and sitting in your inbox as leads when you open your laptop.
Why the old chatbots failed, and what changed
It is worth being precise about this, because most people's opinion of chatbots was formed by something genuinely bad.
The previous generation worked by matching what you typed against a list of phrases someone had written in advance. If your question was on the list, you got the right answer. If it was not — and it usually was not, because people phrase things a hundred ways — you got "Sorry, I did not understand that", and after two rounds of that everyone learned to type "agent" immediately.
A language model does not match phrases. It reads the sentence the way a person does, which means "do you deliver to Klang", "can send klang ah" and "delivery Selangor available?" all land as the same question. That single change is what makes the difference between a chatbot customers avoid and one they actually use.
But reading the question well introduces a new risk that the old ones did not have. A language model will produce a fluent, confident answer whether or not it knows anything. Left unchecked it will invent a delivery charge, quote a discount you never offered, or promise a lead time you cannot meet. That is the actual engineering problem, and it is where most of the build effort goes.
Grounding: how it is stopped from making things up
The technique is called retrieval-augmented generation, and the idea is simpler than the name.
Rather than letting the model answer from what it absorbed during training, we give it a library of your own documents — price list, delivery terms, returns policy, warranty conditions, opening hours. When a customer asks something, the system first searches that library, pulls out the passages that actually relate to the question, and then asks the model to answer using only those passages.
The practical effect is that the answer is traceable. When it tells a customer delivery to Johor is three working days, that came from a specific line in a document you wrote and can point at. If you change the document, the answer changes the same day. Nothing needs retraining.
It also means the system knows when it has nothing to work from. If the search returns no relevant passage, the correct behaviour is to say so and offer a person — not to improvise. We test this deliberately, by asking it things your documents do not cover and checking that it declines rather than invents.
This is also why the first deliverable is often just writing your policies down. Many businesses have never put delivery terms or the return window in one place; it lives in the head of whoever has been there longest. That document is useful whether or not you ever ship the chatbot.
What it should never handle
A chatbot that tries to do everything is worse than one with clear limits, and the limits are a design decision made before anything is built.
Complaints go to a person. Someone who is already unhappy does not want an efficient reply, they want to feel heard, and the fastest way to lose a customer permanently is to have software handle their frustration smoothly. The bot's job there is to recognise the tone, apologise briefly, and hand over with the full conversation attached.
Anything involving money it is not certain about goes to a person. Custom pricing, negotiated rates, credit terms, refunds. The rule we use is that if getting it wrong costs you money or a relationship, it does not get answered automatically.
Legal, medical and safety questions go to a person, always, regardless of what your documents say. And when a customer asks directly to speak to someone, that request is honoured immediately — no retention loop, no "let me try to help first". That single behaviour does more for how the bot is perceived than any amount of answer quality.
What to expect it to handle, and what to expect it to pass on
| Question type | Handled automatically | Why |
|---|---|---|
| Stock, price, delivery, hours | Yes | Factual, and answerable from documents you control |
| Product comparison and fit | Usually | Works well when specifications are written down |
| Order status | Yes, with a system connection | A lookup, once it can reach your order data |
| Custom or negotiated pricing | No | Getting it wrong costs money or sets a precedent |
| Complaints and disputes | No | Belongs with a person, immediately |
| Anything legal or safety related | No | Never worth the exposure |
Where this goes wrong
The bot can only be as consistent as your documents. If delivery terms differ depending on who is asked, the bot will be wrong in a new and more visible way. Write them down first.
Making it hard to reach a person is the single fastest way to make customers hate an otherwise good assistant. The handover should be one message away, always.
The first two weeks of conversations are the most valuable feedback you will get about your own business. Skipping that review is how a fixable gap becomes a permanent one.
How we actually build it
-
01
We collect what it should know
Price list, delivery terms, returns policy, opening hours, the ten questions you answer daily. If these only exist in someone's head, writing them down is the first deliverable and it is valuable on its own.
-
02
We ground it in those documents
It retrieves the relevant passage and answers from it, rather than generating from memory. This is what stops a chatbot inventing a discount you never offered.
-
03
We define the handover
Which questions it must never attempt — complaints, disputes, anything about money it is not certain of — and how it passes a person the full conversation, not just a name.
-
04
We put it where customers already are
Your site, WhatsApp, Instagram. One assistant, several front doors.
- You answer the same ten questions every day across WhatsApp, web and social
- Enquiries arrive outside working hours and go cold by morning
- You want leads qualified before a person spends time on them
- Your questions are genuinely complex and each answer is bespoke
- You have no written policies or price list for it to learn from — that comes first
- The conversation is emotionally sensitive. Complaints belong with a person
- Your price list and policies in writing
- A WhatsApp Business number if you want that channel
- Someone to review the first week of conversations
1–2 weeks for web; add a week for WhatsApp Business approval.
What people ask about this
Will it make things up?
Grounded properly, it answers only from your documents and says "let me get someone" outside them. That behaviour is designed in and tested, not hoped for.
Can it speak Malay and Chinese?
Yes, and it will usually reply in whatever language the customer used. Worth testing with real phrasing including the mixed English-Malay people actually type.
Often paired with
Would this work for you?
The first call is free, and we will say plainly if this is the wrong tool for your problem.
Book a free call