
Only Biker Stuff is my biker merch store. It is a one-person shop: printed to order, shipped across India, and run around everything else I do.
The questions customers ask are mostly the same handful. Which size? How long does shipping take? Where is my order? They arrive at all hours, and a size question at 2 AM that waits until morning is often a sale that never happens.
So the store now has a chat box on every page. An AI assistant answers first. When a question needs a decision, it comes to me.
I built it with Claude, Anthropic's AI model, working in Claude Code, the same way I built my CMS. I set the requirements, made the calls and tested it. Claude wrote the code and the tests. The first version took a morning.

The assistant looks things up
A chatbot that answers from memory will tell a customer something confident and wrong. For a store, that means a size that doesn't exist, a discount I never offered or a delivery date nobody can keep.
So the assistant answers from the store itself. It has six tools:
search the live catalogue: products, prices, colours, sizes, links
read a size chart for a product category
look up an order's status and tracking
list a signed-in customer's own orders and points
read a store page: shipping, returns, terms, privacy
hand the chat over to me
Its instructions say plainly what it must never do: invent products, prices, discounts, coupon codes, delivery dates or policies; promise refunds or exceptions; ask for card, UPI or bank details; share anything about another customer. If it can't answer after checking its tools, it hands over.
Order lookups need proof
"Where is my order?" is the most useful question the assistant can answer and the easiest one to abuse. Order numbers run in sequence, so anyone can guess one.
An order lookup only works when the email address or mobile number on the order matches what the customer gave. A signed-in customer can see their own orders. Nobody else gets anything, and the assistant is told to say so politely and ask them to check.
The handover is a reply on my phone
The assistant hands a chat to me when there is a problem with an order (a misprint, damage, a wrong or missing item, a refund, a cancellation), a club or custom order, an upset customer, or a plain "I want to talk to a person."
I first thought of Discord. Receiving messages from Discord is easy, but sending my replies back needs a bot that stays connected all the time: one more thing running on my server. Telegram does both directions with ordinary web requests. When a chat is handed over, I get a Telegram message with the customer's name, the topic, the order number and the conversation so far. I reply to that message, and my reply appears in their chat box on the site.
If they have already closed the tab, my reply goes to their email instead. Nobody is left waiting in a chat window that no longer exists.
My writing rules apply here too
I have rules for anything written in my name or my brands' names: no em or en dashes, a list of banned words, no filler transitions. They are in the assistant's instructions. Instructions are not guarantees, so the code also cleans every reply before it is shown: dashes become commas, and stray Markdown bold and headings are removed.
What it costs
The assistant runs on Claude Haiku 5.5, the smallest current Claude model. Each call sends about 2,500 tokens of store facts, rules and tool descriptions. A typical reply takes one or two calls, which comes to under 10 paise.
There are also limits, because a public chat box is an open invitation to spam:
1,000 characters per message and 40 messages per chat
15 messages a minute from one connection
400 assistant replies a day, after which chats come straight to me instead
The daily cap means the worst a flood of nonsense can do is fill my inbox. It can't run up a bill.
What I changed after the first day
The first version opened straight into a message box. That worked, but when a chat reached me it often said little more than "anonymous customer, needs help". I had to start every handover by asking who they were and what order they meant.
So the chat now opens with a short form: name, email, an optional mobile number, and what it's about (track an order, a problem with an order, a new order, a club or bulk order, or something else), plus the order number for the order topics. Signed-in customers find it filled in. The assistant starts with all of that, never asks for it again, and uses the details to verify order lookups. My Telegram alerts now start with a name, a topic and an order number.

A form at the start costs the customer ten seconds and saves me a round of questions on every chat I take.
Testing it
The code is tested with a stand-in for Claude and a stand-in for Telegram, so the tests can check what the assistant is sent, what it is allowed to look up, and what happens at each step of a handover, without spending money or messaging my phone. The real test was using it on the live store.
The assistant can still be wrong. That is why every chat says replies may be written by an AI, and why anything with money or a promise attached comes to me.