Composite study

This is a product-class write-up, not a named-client story and not a results press release. Counts below describe the pack we actually write (approach points, tools, layers) — not invented bug totals or conversion lifts.

4
Approach points
4
Tools in the pack
4
Layers covered
3
Challenges documented

Overview

Demo used one in-force auto policy. Staging had endorsements, state variations, and lapsed binders. The model answered from general knowledge when retrieval missed.

It also predicted “this claim will be paid” — a commitment adjusters cannot make in chat.

Industry pattern this is grounded in

The Air Canada bereavement-fare case is the public template: an assistant invented a policy, a customer relied on it, and the company was held responsible. Insurance coverage language is the same class of risk.

Highlights

Typical launch bar: Block until pass rules hold on the money, identity, or safety path.

Challenges

01

PDFs were scanned; retrieval returned marketing brochures with broader language than the bound form.

02

Agents wanted the bot to “set expectations.” Expectations that are not in the form are a complaint.

03

Licensed-state availability was not encoded; the bot quoted products not sold in the user’s state.

How we tested

01

Answers must cite the customer’s bound documents. No retrieval, no coverage statement.

02

Quote vs bind vs in-force are different objects; stale quotes must expire.

03

Forbidden: claim outcomes, “you’re covered for X” without a clause citation.

04

FNOL submit, duplicate FNOL, and who can see the claim.

Starting point vs what we required

Starting point versus the controls we required
Starting pointWhat we required
PDFs were scanned; retrieval returned marketing brochures with broader language than the bound form.Answers must cite the customer’s bound documents. No retrieval, no coverage statement.
Agents wanted the bot to “set expectations.” Expectations that are not in the form are a complaint.Quote vs bind vs in-force are different objects; stale quotes must expire.
Licensed-state availability was not encoded; the bot quoted products not sold in the user’s state.Forbidden: claim outcomes, “you’re covered for X” without a clause citation.

What we delivered

01

RAG quality

  • Ragas — Faithfulness against bound policy text
02

LLM traces / evals

  • LangSmith — What was retrieved vs brochure junk
03

Journeys / UI

  • Playwright — Quote → bind → docs
04

Adversarial evals

  • Promptfoo — Invented riders and claim outcomes

Outcomes

We added a refuse-when-unretrieved path and a fixture pack of brochure-vs-form conflicts. Brochure-only answers failed.

Playwright: known quote fixture produces the expected premium band; policy PDF fields match the bind confirmation. Claim-outcome language failed Promptfoo.

Stack

Testing stack used on this product class
LayerToolWhat we validated
RAG qualityRagasFaithfulness against bound policy text
LLM traces / evalsLangSmithWhat was retrieved vs brochure junk
Journeys / UIPlaywrightQuote → bind → docs
Adversarial evalsPromptfooInvented riders and claim outcomes

Same method as the rest of our work: severity-ranked findings, pass rules in writing, and a ship / wait / block call. See the evaluation method and tool comparison.