The Chatbot Promised a Price We Do Not Charge
Why this matters
A garage door shop found out its website chat assistant had been quoting prices when a customer stood in her driveway holding up her phone. The tech had just replaced a broken torsion spring and handed her the invoice at the shop's normal price. Her screen showed the shop's own chat window, three days earlier, quoting a flat spring-replacement price roughly 40 percent below that, "with a lifetime warranty on parts and labor". The shop has never offered a lifetime warranty on springs.
Nobody at the shop had written either claim. This is how they worked backwards from the screenshot to what the tool had actually been doing, what the record could and could not tell them, how they handled the customer and the others it had talked to, and what they changed. The general signals for pulling an AI feature are covered elsewhere; this is the case. See related: When to Turn an AI Feature Off.
At the driveway
The tech did the one thing that kept this recoverable: he did not argue and he did not say "that's just the chatbot". He photographed her screen with her permission, told her he could not change pricing himself but that the office would call her within the hour, and left the invoice open rather than taking payment at a price she disputed. Then he called the dispatcher from the truck.
"That's just the chatbot" is the line to avoid at the door, for a reason beyond courtesy. To the customer the chat window is the shop. It carried the shop's name and logo, sat on the shop's website, and booked her appointment into the shop's calendar. Disowning it in front of her tells her the shop does not stand behind what it says.
The first record: the customer's screenshot
The office started from what the customer had, because it was the only record anyone was sure of. The screenshot showed a date and time, the chat widget with the shop's branding, and this exchange:
CUSTOMER: How much to replace a broken spring on
a 2 car garage door?
ASSISTANT: Great question! Our spring replacement
special is a flat rate that includes
both springs, parts and labor, and comes
with a lifetime warranty on parts and
labor. Would you like to book?
CUSTOMER: Lifetime? Really?
ASSISTANT: Yes! We stand behind our work for life.
I can book you for Thursday morning.
CUSTOMER: ok book it
ASSISTANT: You're booked for Thursday 8-10.
The flat rate in the full screenshot was a specific figure, the one roughly 40 percent below the shop's current price for a two-spring replacement. Two questions followed from it: where did that number come from, and where did "lifetime" come from?
The second record: the vendor's chat logs
The chat vendor kept full transcripts for 30 days, and the conversation was 3 days old, so it was there. Had the customer waited five weeks to complain, the shop would have had her screenshot and nothing else. That retention window became one of the findings: a tool that can make commitments in the shop's name should keep its record at least as long as the shop's dispute window, and 30 days does not cover a warranty claim.
The transcript matched the screenshot word for word, which settled one thing quickly: the customer had not edited anything.
The third record: what the assistant was allowed to read
The chat assistant's settings page showed two knowledge sources:
- "Crawl website", set to the shop's entire domain. That included a promotions page from a spring sale four seasons earlier, still live on the site but unlinked from any menu, which nobody in the office remembered existed. It listed the old flat rate.
- "Use general knowledge when the website doesn't have the answer", switched on.
The price was now explained: the assistant had found the old promotion page and presented it as current, because nothing on the page said it had ended and nothing told the assistant to prefer the price list.
The warranty was harder, because no page on the site said "lifetime". The shop's actual warranty page says one year on parts and 90 days on labor for spring replacements. The best reconstruction is that, with general knowledge switched on, the assistant wrote into its first answer the kind of sentence garage door marketing often contains, and then, when the customer asked "Lifetime? Really?", confirmed its own claim rather than checking it. That is the mechanism of a language model under pressure to be helpful: it generates the likely next sentence, and an agreeable yes is very likely. See related: What a Language Model Is Actually Doing When It Answers.
The gaps in the record, which are findings too
Three things the shop could not establish, and each one is now a rule:
- Who switched on general knowledge, and when. The vendor's settings page showed current settings only, with no change history. The office manager believed it had been the default at setup a year earlier. Nobody could prove it either way. The shop now records every setting change to an AI tool in its change log. See related: The Automation Change Control SOP.
- Which source each answer came from. The vendor did not store citations alongside answers, so "came from the old promo page" was an inference from matching the number, not a record. For the warranty claim there was no source to find at all.
- What the assistant said before the 30-day window. The tool had been live for about a year. Whatever it said in the other eleven months is gone.
How far it had spread
The office searched the 30 days of transcripts for the words price, cost, how much, warranty and guarantee. Of 212 chats in that window, 37 involved a price or warranty question. Within those 37:
- 9 quoted the old promotion price.
- 4 described a lifetime warranty.
- 2 did both, so 11 distinct customers had been told at least one thing the shop does not offer.
- 4 of those 11 had booked an appointment, including the customer in the driveway. All four had been quoted the old price, and two of them, her among them, had also been told about the lifetime warranty.
The other 26 price-or-warranty chats either declined to give a figure or gave the current published price, which suggests the old page surfaced only for spring questions, the topic it covered.
The decision about the customers
Whether a business is legally bound by what its chatbot told a customer depends on the facts and on state law: contract formation, whether the assistant had apparent authority to speak for the shop, the state's consumer-protection statute and any state rules on advertised prices, with the FTC Act's federal ban on deceptive practices behind them. Courts in the United States have not settled much of it. Outside the US, a Canadian tribunal held an airline responsible in 2024 for inaccurate fare information its website chatbot gave a customer (Moffatt v. Air Canada, 2024 BCCRT 149), rejecting the argument that the chatbot was responsible for its own statements. That decision does not bind any US court, but it tells you how an adjudicator is likely to see "the bot said it, not us". This is not legal advice, and the warranty piece in particular went to the shop's attorney before anything was offered in writing.
The owner made two separate calls, because the price and the warranty are different kinds of promise:
- The price: honored for all four booked customers. A one-time cost on four jobs, roughly 40 percent off the normal ticket on each, against the alternative of four disputes and four public reviews describing the shop's own website as misleading. For the 5 who were quoted the old price but had not booked, the office called each one, explained the page had been out of date, and offered the current price with the trip fee waived if they booked that month.
- The warranty: not honored as written, replaced with something defined. "Lifetime on parts and labor" is open-ended in a way a price is not. On the attorney's advice, the office called the two booked customers who had been told it, apologized plainly, and offered a written five-year warranty on the springs installed, five times the shop's standard one-year parts term, signed by the owner. Both accepted. The two who had been told about a lifetime warranty but had not booked were offered the same written five-year term if they went ahead.
The call to the customer in the driveway took four minutes. The office manager said the shop's website had shown her an old promotion and a warranty the shop does not offer, that she would pay the price she was quoted, and that she would get a written five-year warranty on her springs instead of the lifetime one. She paid that afternoon. She did not post the review she had threatened.
The fix, and how they knew it held
The chat assistant was switched off the same afternoon, on every page, because it was making commitments in the shop's name. Then:
- The old promotion page was deleted, and the site was searched for any other unlinked page with a price on it. Two more were found and removed.
- The knowledge sources were cut to an approved list: the services page, the current price list, the warranty page, the service-area page and hours. Whole-domain crawling was switched off.
- General knowledge was switched off. When the approved pages do not answer a question, the assistant says so and offers a callback.
- Boundary instructions were added: state prices only as they appear on the price list page; describe warranty terms only by quoting the warranty page; never agree to a term, discount or guarantee the customer proposes; offer a person whenever a customer questions a price or warranty.
- A pre-launch test of 40 questions written to break it: leading questions ("you guys do lifetime warranties right?"), price haggling, questions about services the shop does not offer. It passed 40 of 40 before going back on.
- A weekly review: someone in the office reads every chat that contains a price or warranty word. See related: The Weekly AI Call Review SOP.
- Retention extended to the longest the vendor allows, and the shop now exports transcripts monthly into its own records.
What the shop chose not to do: rely on a disclaimer such as "chat answers are not binding". A line like that may help at the margins, but it does not make a false price true, and it was exactly the kind of argument the Air Canada tribunal did not accept.
The confirmation. In the 30 days after relaunch the assistant handled 190 chats. The weekly reviews read every one with a price or warranty word in it. None quoted a price that was not on the price list, and none described a warranty beyond quoting the page. Eleven customers asked for a person, which the shop counts as the tool working rather than failing.
References
- Moffatt v. Air Canada, 2024 BCCRT 149 (British Columbia Civil Resolution Tribunal)
- FTC Act Section 5, 15 U.S.C. 45, deceptive practices; state consumer-protection and advertised-price statutes as enacted
- See related: When to Turn an AI Feature Off
- See related: The Automation Change Control SOP
- See related: What a Language Model Is Actually Doing When It Answers