Air Canada's Chatbot Hallucination: How a RAG Support Bot Created Legal Liability in Production

Air Canada's support chatbot invented a bereavement fare policy that didn't exist; a tribunal held the airline liable. The lesson: LLM outputs need guardrails and legal accountability before going to production.

AI & MLOps · beginner · 12 min read · 2145 words · By Sandip Das · Published

Public postmortem: based on what the organisation published. Sources are listed below.

What this covers

  1. Background
  2. What Happened
  3. Root Cause
  4. Detection and Response
  5. Impact
  6. The Fix
  7. Lessons for Your Team
  8. Apply It Yourself

Key numbers

MetricBeforeAfter
Damages awarded to customerFull fare paid, bereavement claim deniedCAD $650.88 ordered by tribunal (damages plus fees)
Legal precedent setNo Canadian tribunal ruling on chatbot operator liabilityBC CRT ruled operator liable; 'separate entity' defence rejected

Key components

  • LLM Chatbot (RAG pipeline) — Generated customer-facing policy answers by combining retrieved FAQ chunks with an LLM; produced a fabricated retroactive refund policy.
  • Knowledge Base / FAQ Store — Vector-indexed policy documents used as retrieval context; the canonical advance-booking requirement was either absent or not retrieved.
  • Output Validation Layer — Was absent; no faithfulness check compared generated claims to retrieved context before serving the response.
  • Escalation / Human Agent Path — Existed in the architecture but was not triggered when the chatbot made a specific financial policy commitment.
  • Conversation Audit Log — Stored the exchange but no automated reconciliation against canonical policy was run, so the error was never detected internally.
  • BC Civil Resolution Tribunal — External adjudicator that reviewed the chatbot transcript and issued the liability ruling that became public record.

Background

In November 2022, Jake Moffatt contacted Air Canada's website support chatbot to ask about bereavement fares after the death of his grandmother. He wanted to know whether he could book a flight immediately and then apply for a reduced bereavement fare retroactively. The chatbot told him he could — that Air Canada allowed customers to apply for a bereavement fare within 90 days of travel. Moffatt booked the flight, paid full price, and later submitted a bereavement fare claim. Air Canada denied it, saying its policy required the fare to be requested *before* travel.

Moffatt took the dispute to the British Columbia Civil Resolution Tribunal. In February 2024, Tribunal Member Kristin Gardner ruled in his favour, ordering Air Canada to pay him CAD $650.88 in damages plus fees. The ruling is notable not because of the dollar amount — it is small — but because of the legal reasoning: Air Canada argued that its chatbot was a "separate legal entity" responsible for its own statements. The tribunal rejected this argument entirely.

The public record does not disclose which LLM vendor, embedding model, or infrastructure provider Air Canada used for the chatbot. What the tribunal decision does document is the conversational exchange itself, the policy that actually existed, and the gap between the two.

The rest of this case study — the trade-offs, the scaling numbers and the build prompt — is available to LearnXops members. Create an account or see membership.

Sources

Topics: llm, chatbot, mlops, ai-safety, production-incident, rag

Related case studies

Browse all case studies