Insights / AI with Claude

How we built a Claude-powered support assistant for our store

A scripted chat widget became a real assistant: live product catalog, clear guardrails, WhatsApp handoff, and two production problems we did not expect.

VIREXAGROUP Engineering · 13 October 2026

Our Viranta store sells home and DIY products to customers in Malaysia. The site already had a chat widget, but it was scripted: it looked for keywords such as "harga" or "cod" and returned a fixed answer. Anything a customer phrased differently got a generic reply. We replaced the free-text part of that widget with Claude, and kept everything else.

You can try it on virexagroup.click: open the chat button and type a question in Malay or English.

What it does

How it works

Chat widget→Cloudflare Worker→Claude API

The browser never sees the API key. The widget posts the conversation to a small Cloudflare Worker, and the Worker calls the Claude Messages API with the key stored as a Worker secret.

On each request the Worker loads our live product catalog from the store's public API, caches it for an hour, and places it in the system prompt after the rules. The rules and catalog are identical between requests, so they are marked for prompt caching; only the conversation changes.

We use Claude Haiku 5.5 at low effort. For short product questions it is fast and inexpensive, and it follows the rules reliably.

Guardrails

Two problems we hit in production

Requests blocked by region. Everything worked from a laptop, then failed with a 403 once deployed. A Worker runs at the Cloudflare location nearest the visitor, and for some of our test traffic that was Hong Kong, a region the Claude API does not serve. We fixed it by pinning the Worker's placement next to the API, so the call to Claude always leaves from a supported region.

English questions answered in Malay. Our catalog is written in Malay, and it pulled some English answers into Malay. Two changes fixed it: an explicit rule to reply in the language of the customer's latest message while keeping product names unchanged, and a plainer catalog format that the model stopped copying verbatim.

Before going live we ran a fixed set of test questions: a price question, a recommendation in English, an order-status request that included a phone number, an off-topic request, and a medical question. We re-ran the set after every prompt change.

What is next

The assistant is live and at an early stage. Next we plan to review real conversations to find questions it handles poorly, add order lookup behind a human-approved step, and extend the same pattern to ad copy and ad analysis for our marketing team.

More from VIREXAGROUP: Server-side conversion tracking for COD e-commerce · Hourly ad and sales reports