
Sep 4, 2026
Arabic AI Support in 2026: What Finally Works
The breakthrough was in retrieval, not in writing. Arabic support bots produced fluent Arabic without difficulty, yet they kept answering the wrong question, because a message typed in Khaleeji never once matched a knowledge base written in Modern Standard Arabic. Repair the search layer and the answers take care of themselves.
The story ends there, though the industry spent an embarrassingly long time before it found where the failure lived. What follows covers what was genuinely broken, the changes we shipped in the September 2026 release, and what remains broken today.
The problem was never generation
Look at the complaints closely and none of them describes a language failure. Grammar is correct, and the register is appropriate. What you get instead is an assistant that discusses something adjacent to the customer's actual question with complete confidence, or one that apologises and gives nothing at all. Writing Arabic well is not what broke in either case.
A grounded assistant works in two stages: it searches your knowledge base and retrieves a handful of passages, then composes its reply from those passages alone. Stage two has been solid for some time. Stage one is where Arabic collapsed, and if the wrong passages turn up, a stronger model only writes a more eloquent wrong answer. The merchant-facing shape of this problem is covered in the guide to Arabic AI customer support. Here we look at the machinery running underneath.
Dialect in the question, MSA in the knowledge base
No one writes Modern Standard Arabic into WhatsApp. Yet nearly everyone builds their knowledge base in it, typically by pasting copy from their own website, where a professional writer produced it. The result: the question and its answer live in two different varieties of one language, and a naive search weighs them word against word.
Here are four genuine forms of that mismatch. Each pair puts the customer's wording on the left and the merchant's heading on the right:
Customer: وش سعر التوصيل للرياض؟
Knowledge base: رسوم الشحن داخل المملكة
Customer: أبي أرجع القطعة، صار لها أسبوع
Knowledge base: سياسة استبدال وإرجاع المنتجات
Customer: دوامكم اليوم لين متى؟
Knowledge base: ساعات العمل الرسمية
Customer: يبي لها كم توصل جدة؟
Knowledge base: مدة التوصيل المتوقعة
The first pair overlaps in a single word, and it happens to be the wrong word to rely on. The second and third pairs share nothing whatsoever. A customer asking about working hours and a page titled working hours have literally zero characters in common, since دوام and ساعات العمل are two different words for one idea, and no policy document ever contains the phrase لين متى.
Two distinct problems are layered on top of each other here, and each calls for its own remedy. The first is lexical: أبي and أريد carry identical meaning while sharing no resemblance. The second concerns spelling and morphology: التوصيل is simply توصيل with a prefix attached. That second problem yields to mechanical treatment, and it accounts for most of the volume, as it turns out.
What normalisation actually does
Before any comparison happens, normalisation converts both the question and the stored text into a single canonical spelling. It is neither translation nor correction. Customers never see normalised text, and the reply is still composed from the original wording. Think of it as a private representation whose only job is to let two spellings of the same word meet.
The definite article
Arabic attaches ال to the front of a word, then attaches و, ب, ل and ك to the front of that result. For a keyword index, سعر, السعر, بالسعر and وللسعر are four tokens with no relationship. Someone asking كم سعر الاشتراك؟ against a page headed أسعار الاشتراكات matches nothing: أسعار is a broken plural, and الاشتراكات carries the article plus a plural ending. Remove the article and the clitics, reduce the plural to its base, and both sides fold into the same pair of tokens.
Hamza forms
People type أ, إ, آ and bare ا interchangeably as a matter of routine, and the same goes for ء, ئ and ؤ. Whether إرجاع shows up as ارجاع or أرجاع depends on who has the phone in hand. Endings behave the same way: ى and ي trade places, and close to half of all writers type ه where ة belongs. Collapse each family onto a single form and three spellings of one word become one token.
Merchants are usually surprised to learn this is not only a customer-side issue. Assemble a knowledge base out of a brochure, a WhatsApp broadcast and a page drafted in 2023, and the merchant's own copy will contain one word in three spellings. Normalisation repairs both sides of the comparison simultaneously.
Diacritics and elongation
Arabic treats short vowels as optional and usually drops them, though not invariably. Formal text copied from a printed brochure frequently keeps them, which leaves سِعر stored in the knowledge base while every customer types سعر. Elongation produces the identical problem from a different cause: to an index, ســـعر stretched with kashida by a design tool or by someone adding emphasis is simply not the word سعر. Arabic-Indic numerals behave the same way, so ٥٠ and 50 arrive as two different things. Matching strips all three beforehand.
Why pure vector search under-performs on Arabic
An obvious objection is that meaning-based search ought to be indifferent to spelling entirely: embed the question, embed the passages, compare the vectors, finished. In practice it works halfway, and the failing half is the costly one.
There are three reasons. Multilingual embedding models train mostly on formal written Arabic, since that is what exists at scale: news, encyclopaedias, official web pages. Conversational dialect makes up only a thin slice, so the model has encountered وش far less frequently than ما هو, and encodes it with less certainty. Arabic morphology makes this worse, because a single root branches into dozens of surface forms and dilutes the signal across all of them. Embeddings are also structurally poor at exact tokens: product codes, branch names, plan names, prices. Ask a vector search about model A15 Pro and it will happily hand back the passage on model A15, since those two passages really do discuss almost the same thing.
That final failure mode is the dangerous one. The passage retrieved is topically close yet factually wrong, so the assistant delivers a fluent, specific, confidently incorrect answer about a product you never stocked. A clean miss can be recovered from. A near-miss is what erodes trust.
Hybrid retrieval: meaning plus keyword
The September 2026 release brought hybrid retrieval together with Arabic normalisation, active on every plan, the free one included. Two searches now execute against the same normalised text, and their results are merged and ranked as one.
The keyword leg acts as the literalist, anchoring the exact tokens that embeddings blur: A15 Pro retrieves the A15 Pro passage rather than its neighbour, and a branch name, an IBAN or a plan name lands on the row that genuinely contains it. The meaning leg plays the interpreter, covering questions that share not one word with their answer, so عندكم شي للبشرة الدهنية؟ arrives at a section headed منتجات العناية بالبشرة with zero vocabulary overlap.
The entire design rests on each leg covering the other's failure mode. Keyword search by itself cannot bridge a vocabulary gap, and vector search by itself cannot be trusted with a product code. Arabic requires both. Running only one explains why so many Arabic bots felt unreliable in ways their English versions never did.
Before, and after
Below are three questions, each presented as it was handled before the change and as it is handled today. Both columns draw on the identical knowledge base. The only variable is the search.
Customer: وش أقل مبلغ للتوصيل المجاني؟
Before: a passage on international shipping fees was matched, and the reply quoted a figure for shipping abroad. Fluent, specific, wrong.
Now: the article comes off التوصيل, the keyword leg locks onto توصيل and مجاني, the meaning leg brings up the line on free shipping above 200 riyals, and that is what the customer receives.
Customer: عندكم A15 برو؟
Before: meaning-wise the closest passage was the A15 listing, so the assistant confirmed a model the merchant does not carry.
Now: the keyword leg treats A15 Pro as one unit, turns up nothing, and the assistant states that the model is not listed while offering the two that are.
Customer: متى يخلص العرض؟
Before: يخلص matched nothing, so the question was classed as outside the assistant's scope. The customer received a generic refusal with no way forward.
Now: the offer end date is found wherever it sits in the base. When it truly is absent, the assistant says the information is unavailable, offers a human, and logs the question as a knowledge gap.
The third pair deserves the longest look, because here the answer did not improve. There had never been an answer. What changed is that the failure became visible to the merchant rather than vanishing.
What still doesn't work
Four candid gaps, ordered roughly by how frequently we encounter them.
- Arabizi. A question written as 3andkom tawsil lel reyadh is Arabic rendered in Latin letters, with digits substituting for consonants. All the techniques above operate on Arabic script, so not one of them applies here. This is our weakest case; it appears more often in Egypt and the Levant than in the Gulf, and we still lack a good answer for it.
- Questions with no content. الأسعار؟ by itself retrieves perfectly yet remains unanswerable, since there are eleven prices. The assistant asks which one, the correct behaviour, but it still costs an extra round trip.
- Regional vocabulary you never wrote down. When customers in a given city call your product by a word that appears nowhere in your knowledge base, no quantity of normalisation will summon it. The remedy is one line of text rather than a model change: write the word down.
- Facts that are not there. Retrieval has no power to invent. A knowledge base that never states the return window cannot answer a question about the return window, whatever the dialect. This accounts for most of what still goes wrong, which makes it worth reading what actually belongs in a knowledge base before you blame the search.
Still selecting a tool rather than tuning one? The vendor questions that matter on all of this are gathered in our rundown of Arabic WhatsApp chatbots. In short: ask what happens when a Khaleeji question comes in, and ask to watch it fail.
When the knowledge base simply has a gap
The same release changed this too, and it matters more than the retrieval work, because it determines what the customer experiences down the bad path. Previously a missing fact was handled as an out-of-scope request, yielding a polite refusal that read as a useless assistant. The assistant was not useless. It was uninformed, and those are distinct conditions, of which only one can be fixed.
Today the assistant states that the information is not available and offers a person in its place. No improvising, no extrapolation from a neighbouring passage, no confident guess about your return window. On WhatsApp this becomes a handover; outside business hours it becomes an honest statement on your clock instead of a promised immediate reply.
Statistics holds the second half of the loop: a knowledge gaps block listing everything customers asked that the base could not answer. Entries arrive in the customer's own words, dialect included, which is the most useful shape this data could possibly take. Check it weekly and it functions as a to-do list: add the offer end date, add the term your Jeddah customers use, add the return window no one ever documented. The next customer to ask that question then receives an answer instead of a person.
Not one part of this demanded a bigger model. What it demanded was an admission: that the Arabic problem was a search problem, and that an assistant aware of what it does not know is worth more than one that always has something to say.