
AI Concierge Across a Hotel Group — 3 Properties, 3 Channels, 4 Languages, 91.7% Handled by the Bot, Improved From Real Chats Every Day
An AI concierge live at three properties of a Thai hotel group, on Facebook Messenger, LINE and the website, in four languages. 370 leads from the first property, 91.7% of conversations handled without the bot passing them to staff, the second property built in half the time of the first, and a daily loop that reads yesterday's real chats and fixes what went wrong.
All Case Studies
Auto Financial OpsAutomated Expense Entry into PEAK — 12 of 12 Bill Types Read Correctly, 45 of 48 Real Documents Passed
AI ChatbotOne Owner, 50 Chats a Day — a LINE AI Bot That Took 90% of Them Across 3,260 SKUs
Auto Financial OpsSix Legal Entities, One Message, Every Morning at 07:00 — Multi-Property Hospitality Group
Auto Financial Ops873 Students Off a 900-Parent Group Chat — and 293 Families Found Sitting Under a Silent Do-Not-Chase Flag
Auto Financial OpsA 3-Branch Clinic Now Checks Every Receipt, Every Day — and Matches 99.4% of Gateway Receipts to the Money That Actually Arrived
AI ChatbotLINE AI File Memory — 30-Second Searches Cut to Under One Second, Delivered 23 Days Early

One Owner, 50 Chats a Day — a LINE AI Bot That Took 90% of Them Across 3,260 SKUs
Full Case Study
The Client
A B2B distributor of industrial valves, pumps, and fittings, selling to contractors and factories — with the owner running it alone. No sales team, no back office. He personally answered every one of roughly 50 daily LINE chats: pricing questions, quotation requests, payment slips, shipment tracking.
What makes this business different from ordinary retail is that price is not attached to a product — it is attached to brand, model, size and standard together. One brand treats the standard as an option inside a single model; another splits the same standard into an entirely separate model.
And all of that knowledge lived in one person's head.
The Challenge: One Wrong Answer Costs More Than Ten Slow Ones
The difficulty stacked in four layers.
Layer 1 — everything landed on one person. Around 50 chats a day, on top of running the rest of the business. Every repeated question was time not spent closing deals.
Layer 2 — this is knowledge work, not lookup work. 3,260 items across 52 brands whose sizing standards are not one consistent system. The same question can have a different correct answer depending on the brand involved, so keyword matching against an FAQ table cannot answer it.
Layer 3 — what the bot says is a price. Most incoming questions are pricing questions, and customers act on the answer immediately. A bot that guesses one price wrong does more damage than a bot that says nothing — because it gets it wrong in the owner's own voice.
Layer 4 — customers do not type the spec. Many simply send a photo of a valve, with no brand and no model, and ask what it costs.
What it costs to leave alone
The owner stays the bottleneck on every deal. The business grows only as fast as one person can type. And the day he is ill or out on site is a day nobody answers customers at all.
The First Call That Changed the Whole Project
The deal closed against a simpler scope: a bot that answers basic questions and generates PDF quotations.
The first call — about 35 minutes — surfaced three layers of complexity that were not in the agreement:
- •Linking brand, model, and spec-sheet files together, not just a price table
- •Picking the correct sizing standard per brand, since brands do not follow the same logic
- •The owner's real expectation — customers get an actual spec file to open, not a text description
Rather than stopping to rescope and rebuild from zero, the owner chose to keep testing the live bot himself, round after round, sending feedback continuously while the build adjusted incrementally — instead of waiting for a complete written spec before starting. A second call added shipment tracking and the handover manuals; a third, later, was about scope itself.
And this is the part worth being honest about: moving ahead while the scope was still soft shipped the work very fast, and ended with far more delivered than was sold — which leads to the conversation at the end of this study.
The Solution: Remove the Shortcut, Don't Forbid It
One idea holds the whole design together: if the bot still has a route to answer a price without querying the catalog, then no matter how strictly the rule forbids it, one day it will take that route. The answer is to take the route out of the system.
What the bot does
| Capability | Detail |
|---|---|
| Live pricing | Searches 3,260 items across 52 brands, two-way synced with the owner's own existing price files |
| Brand recommendation | Suggests a fit without ever using tier language like "premium" or "budget" |
| Multi-spec narrowing | Filters on brand, size and spec together until only genuinely matching items remain |
| Standards glossary | Explains ANSI / PN / NPT and others from a knowledge base the owner can edit himself |
| Quotations and invoices | Ready-to-send PDFs with unique, non-repeating document numbers and an automatic tax-ID check before issue |
| Product photo reading | Customer sends a photo only; the bot returns brand, model and price |
| Payment-slip reading | Reads amount, date and bank from a photo, then messages the owner immediately |
| Shipment tracking | Looks a tracking number up from the shipments table |
| Spec file delivery | Sends a link the customer can open directly, with no login |
| Human handoff | Pauses the bot when a case needs the owner's own judgment |
Key Technical Decisions
| Problem | Decision | Why |
|---|---|---|
| The AI skipped the catalog lookup and answered from guesswork | The shortcut was removed entirely — the only remaining path is a real catalog lookup | However strictly the rule was written, it still slipped through occasionally. A route that does not exist cannot be taken. |
| The bot repeated an old wrong answer | Ban memory for product answers — always a fresh lookup — and cut the memory window from 10 messages to 4 | Memory had cached a "no data found" reply from an earlier test round and repeated it |
| The same brand uses different standards | A brand-category-model mapping table the owner fills in himself through chat, rather than per-brand rules written into code | A new brand can be added without the developer touching the system |
| Customers send only a photo | AI vision classifies the image first (slip / product / other) with a minimum confidence threshold — below it, ask rather than answer | A photo with no visible logo should get a question back, not a guess |
| The bot said "your quotation is ready" before it was | Forbid that sentence unless a real document number and a real file link exist | Words have to be tied to evidence, not to intent |
| The discount ceiling leaking to customers | Enforce it silently — approve below it, escalate above it, and never state the figure | A customer should not learn how far they can push |
| The bot answering "we don't have that" | Replace it with one fixed sentence saying it is being checked, with no embellishment permitted | "We don't have it" closes a deal. "Let me check" does not. |
| Someone has to take over | Automatic handoff plus a 30-minute bot silence, and words like claim, damaged, or wrong item skip the AI and go straight to a person | The owner types no command at all — he just opens the chat and replies |
| The staff-group alert failing to send | Configure that failure not to abort the whole run | The customer must always get their reply, even if an internal alert misfires |
| Quotations sitting unanswered over 24 hours | An automatic morning reminder pushing the pending list to the owner | Solves what he asked for without making him tag anything manually |
| 38% of imported spec files had an empty model field | Three rounds of fixes — recognise more filename patterns, match alternate names for the same model, and have AI read the file's cover image | A file that is in the system but cannot be found may as well not have been imported |
Built in 7 Days Against a 14-Day Plan
| Stage | What happened |
|---|---|
| Days 1-3 | Bot framework set up, LINE OA connected and made production-ready, with 5 data-exposure gaps found and closed during setup |
| Days 4-5 | Catalog expanded to 2,925 items across 32 brands; AI photo recognition, automatic payment-slip reading and real human handoff turned on; training begun against 1,827 real historical chats |
| Days 6-7 | Automatic PDF quotation generation switched on (tested 11/11), then automatic spec-file delivery from a library of 1,457 files across 71 brands, then one more full regression pass (31/31) before handover |
What Made It Sound Like the Owner, Not a Generic Script
Training on real chat history — 1,827 real conversations analysed in detail, down to noticing the owner used one particular sentence-ending particle over another by a ratio of roughly 19 to 1, which was the opposite of what the bot had been using.
Real past replies were then pulled into 15 of the most common question categories — pricing, quotations, stock availability, shipping cost, payment — as the bot's standard answers, along with a clean line for brands not carried and for invoice name changes.
There was also unglamorous data work nobody sees: re-categorising over 320 valve rows and rescuing another 398 rows stranded in an "other" bucket into their correct categories. A product in the wrong category is a product that cannot be found.
What Was Delivered
- •The LINE OA bot, searching the owner's own live price data
- •PDF quotation and invoice generation with document numbering and tax-ID validation
- •AI reading of product photos and payment slips
- •Spec-file delivery from a 71-brand library
- •Human handoff with automatic bot silencing
- •A daily pending-quotation reminder and an automatic old-file cleanup
- •A separate test channel from the live one, so changes can be tried without touching customers
- •Three Thai-language manuals — a 21-step testing guide, a guide to entering product data without breaking the bot, and a post-handover system-care guide
The Results
| Before | After |
|---|---|
| The owner answered every chat, ~50 a day | The bot handles 90% of routine questions |
| Opening a price file by hand every time | Live search in chat across 3,260 items, 52 brands |
| A photo arrives and he identifies it himself | The bot reads it and returns brand, model and price |
| Every quotation written by hand | A PDF issued in chat with a unique document number |
| Spec files found and sent manually | The customer gets a link they can open directly |
| Payment slips could slip past unnoticed | The slip is read and the owner notified immediately |
| Nobody answers when the owner is busy | The bot continues, and escalates when it must |
1. The bot handles 90% of routine questions
Around 50 chats a day used to land on one person who was also running everything else. The bot now takes 90% of that question volume; what remains are cases needing real judgment, which are handed over automatically.
What that actually means is not "time saved" — it is that the business no longer stops at one person's typing speed.
2. The catalog grew from 1,355 to 3,260 items and stayed live-searchable
The system started at 1,355 items across 14 brands and expanded in stages to 3,260 items across 52 brands.
Every price and spec the bot states is pulled from a live two-way sync with the owner's existing files — never guessed — so an answer is right even when the owner isn't watching the screen.
3. 1,389 spec files openable from a chat link with no login
The spec library holds 1,457 files across 71 brands. On the first import, 38% (549 files) saved successfully but with an empty model field, because the first-pass filename parser only recognised one naming pattern.
Three rounds of fixes brought the unmatched count down to 409 — mostly files that genuinely carry no model information, like cover pages and wiring diagrams. The result: 1,389 files a customer can open straight from chat. They get the real document, not a description of it.
Where the 90% Figure Actually Comes From
It was not measured by an automated tracking system after go-live — the project closed as a self-hosted handover before there was accumulated usage data. It comes from two sources:
One — analysis of real historical conversations. 1,827 conversations totalling 49,311 customer messages found that 12 of the 15 most common question categories, about 90% of message volume, already had answers the bot covered before handover. The remaining 3 (shipping status, spec requests, invoice name changes) were closed with ready-made answers before go-live.
Two — the test results. A prepared technical test suite passed 31 of 31, and the owner's own hands-on test on his phone passed 21 of 21 — covering direct model-name lookups, remembering repeat customers without re-asking, and keeping the discount ceiling confidential.
This is written out because a number with no stated origin does not deserve to be believed.
The Four Most Expensive Lessons
One — telling an AI to "check first" is not the same as removing the shortcut. The system originally let the AI decide for itself when a product "looked unfamiliar" and skip the real catalog lookup. Even with an explicit rule against it, it still slipped through occasionally. What worked was removing that shortcut completely. A rule in the instructions isn't enough — the system has to be built so the AI can't make that mistake, not just told not to.
Two — a bot's memory repeated a wrong answer that had already been fixed. During testing, the owner caught the bot repeating an answer that had been tested and corrected. Its memory had cached a "no data found" reply from an earlier round and repeated it without a fresh lookup. Fixed by banning memory for product answers and cutting the retained message count from 10 to 4. The wider lesson: mid-testing fixes need a fresh conversation each time, or you're debugging against the ghost of an old exchange.
Three — only a test on the real channel can be trusted. Testing through a simulator — sending messages straight into the system from a computer rather than a real phone — corrupted Thai characters into unreadable garbage, making the bot look broken when it was answering correctly on an actual phone. Whenever Thai text is involved, verify on the real channel.
Four — files imported doesn't mean files findable. "1,457 files imported successfully" was both true and useless, because 38% of them could not be found. Always check what percentage is actually findable, not just how many files were processed.
The Scope That Was Over-Delivered, and Then Sold
By closing time there was visibly more running than had been quoted — a handful of quoted modules had become 15 working features.
There were three options: cut the extra features, give them all away, or have the conversation directly.
The third was chosen — a written comparison showing exactly what sat inside the original price and what went beyond it, with three paths offered for the client to choose from.
The client chose to buy the whole bundle on monthly installments, and all 15 additional features stayed on. Nothing was cut.
Talking about scope plainly earned more work rather than costing a client.
Being Honest About What's Still Open
- •No long-term usage data. The owner chose to install and run the system himself rather than continue a monthly support contract, so there's no real monthly chat volume or measured cost saving after go-live. The 90% figure comes from the delivery-testing report, not 30-day-plus post-launch tracking.
- •Document numbering is not yet synced. The bot's quotation numbers and the numbers the owner had been issuing by hand have not been reconciled; that was deferred to launch day, and the client was told.
- •The unanswered-question log is not reconnected. After one architectural change, the component that records questions the bot could not answer was removed and has not been wired back — which means those questions are not currently being collected for review.
Project Information
More Like This
AI ChatbotAI Concierge Across a Hotel Group — 3 Properties, 3 Channels, 4 Languages, 91.7% Handled by the Bot, Improved From Real Chats Every Day
96% MatchAn AI concierge live at three properties of a Thai hotel group, on Facebook Messenger, LINE and the website, in four languages. 370 leads from the first property, 91.7% of conversations handled without the bot passing them to staff, the second property built in half the time of the first, and a daily loop that reads yesterday's real chats and fixes what went wrong.
AI ChatbotA Beauty Clinic AI Assistant Got an Answer Wrong — Stopped in 4 Minutes, Then Traced to Why Using 345 Real Staff Replies
96% MatchAn AI sales assistant on Facebook Messenger for a single-branch beauty and weight-loss clinic, with medical-safety gates before and after the AI, PDPA consent, staff alerts on LINE and a kill switch. Three weeks after launch it told a real customer something that broke clinic policy. The owner stopped it within 4 minutes. What followed: closing a hole in the kill switch, a refund gate, and using 345 real staff replies to find that the bot's data — not its prompt — was the problem.
AI ChatbotFive Months After Handover — 96.5% Handled Without a Human, Worth 2.4 Times Its Upkeep, and Leads Recovered from 6 to 23
96% MatchA LINE AI assistant for an occupational safety training institute, built in 7 days and then measured for five months. It handles 96.5% of its conversations without a human and returns 2.4 times what its upkeep costs — and the maintenance habit behind those numbers found 15 of 16 leads quietly going missing, staff alerts dying halfway through every month, and a customer who sent 15 messages without a reply. None of it ever raised an error.