Skip to content

    AI Architect Case Files

    Case File: Claims Triage Copilot Without Requirements

    An insurer's claims-triage copilot could not be judged a success or a failure because nothing was written down. How testable requirements fixed it.

    By Published 8 min read

    • ai-architect
    • case-file
    • industry-financial-services
    • pattern-requirements-definition
    • failure-requirement-gap
    • kind-composite
    Share

    Composite scenario, not a real company. Assembled from common industry patterns; every number is illustrative and its assumptions are listed at the end.

    Context

    A mid-sized insurer receives about 12,000 claim notices a month by web form, email and phone transcript. First-line handlers read each notice, choose a queue (fast-track, standard, specialist or urgent welfare) and request missing documents. A team built a copilot that suggests the queue and lists the documents that appear to be missing. The handler stays responsible and can override both.

    Problem statement

    The six-week pilot demoed well. Then the steering group asked whether it was working, and four stakeholders gave four answers: fewer wrong queues (handlers), faster first contact (operations), no vulnerable customer in a slow queue (compliance), a cost per claim (finance). No criterion had been written, so the pilot could be neither accepted nor rejected. The team spent three sprints re-tuning prompts against the loudest complaint and could not show that any change was an improvement.

    At the start: zero written criteria, four informal definitions of success. The target: five written requirements (quality, latency, cost, risk, data sensitivity), each with a number, a measurement point and an automated check.

    Constraints

    • Fixed (contract and policy): notices contain personal and health information, so only providers on the approved list may process them and nothing sensitive goes to general logs.
    • Fixed (policy): a claim flagged for possible injury or a vulnerable customer must never be placed in a slower queue than the deterministic rules allow.
    • Fixed: a handler decides; the copilot only suggests.
    • Limit: no new vendor contract this quarter; historical queue labels exist but are inconsistent.

    Why the traditional approach fell short

    A rules engine handled structured fields well (claim type code, amount, policy status) but not the free-text note. A sentence such as "my father fell and I have no one to help" contains no keyword the rules were written for. The manual process worked but was inconsistent: two experienced handlers did not always pick the same queue for the same notice. A classic classifier trained on historical queue labels inherited that inconsistency, because its labels recorded where a claim ended up, not where it should have started.

    Options considered

    Option Verdict Reason
    A. Extend the rules engine (non-AI) Accepted as a floor and override Cheap, deterministic and explainable, but it cannot read free text
    B. LLM suggestion tuned through demos, no written bar Rejected Nothing to test, so no prompt change could be shown to help
    C. LLM suggestion, rules floor, written requirements and a labelled set Accepted Reads free text, keeps a deterministic safety floor, and can be accepted or rejected on evidence
    D. Classic classifier on historical labels Deferred Labels inconsistent; consensus labels from option C can become training data later

    Solution architecture

    Figure 1. Claims-triage copilot components and trust boundary

    flowchart LR accTitle: Claims-triage copilot components accDescr: The handler console calls an API gateway and orchestrator inside the insurer boundary. The orchestrator reads claim notes, applies deterministic rules, and calls a model gateway that reaches an external LLM provider. Traces go to a trace store and an eval service samples them. subgraph IN["Insurer boundary"] CA["Client app (handler console)"] --> GW["API gateway"] GW --> OR["Orchestrator"] OR --> DS["Document store (claim notes)"] OR --> PE["Policy engine (severity rules)"] OR --> MG["Model gateway"] OR --> TS["Trace store"] TS --> EV["Eval service"] end MG --> LP["LLM provider (approved list)"]

    How to read this: only the model gateway crosses the boundary, so redaction and the approved-provider rule are enforced in one place.

    Figure 2. One notice, with the failure path

    sequenceDiagram accTitle: Runtime path for one claim notice accDescr: The orchestrator reads the notice, applies rules first, then asks the model for a suggestion. It checks the answer, enforces the rules floor and returns it to the handler. If the provider times out, the rules-only queue is returned. participant CA as Client app participant OR as Orchestrator participant DS as Document store participant PE as Policy engine participant MG as Model gateway participant LP as LLM provider participant TS as Trace store CA->>OR: New notice id OR->>DS: Read fields and note DS-->>OR: Fields and note text OR->>PE: Structured fields and note text PE-->>OR: Rules floor queue and flags OR->>MG: Redacted note plus prompt version MG->>LP: Request alt Answer within 5 s LP-->>MG: Queue, missing documents, quoted evidence MG-->>OR: Suggestion OR->>OR: Validate schema and quotes, enforce floor OR-->>CA: Suggestion for the handler else Provider timeout OR-->>CA: Rules-only queue, no suggestion end OR->>TS: Trace with versions, suggestion and floor CA->>TS: Handler action added when the handler decides

    How to read this: the rules run before and after the model, so a model failure or a manipulated note cannot lower a flagged claim below its floor.

    How AI solved it, step by step

    1. Notice arrives. The client app sends the notice id through the gateway to the orchestrator.
    2. Fetch. The orchestrator reads the fields and note from the document store.
    3. Rules first. The policy engine runs the deterministic severity rules and returns a floor queue and any flags (injury, vulnerable customer). Decision: the lowest queue this claim may receive.
    4. Redact. The orchestrator removes fields the model does not need, such as account numbers, and sends the note through the model gateway to a provider on the approved list.
    5. Suggest. The model returns structured output: a queue, a list of missing documents, and a short quote from the notice supporting each suggestion.
    6. Validate. The orchestrator checks the schema, confirms each quote appears in the notice, and raises the queue to the rules floor if the model chose lower. Decision: reject malformed output and fall back to rules.
    7. Present. The handler sees the suggestion and its evidence, and accepts or overrides it.
    8. Trace. The trace store records versions, suggestion and floor, and later the handler action.
    9. Measure. Every prompt or model change reruns the release set; a weekly sample goes to reviewers.

    Under the hood

    The key step is turning "is it working?" into a test. Two senior handlers label the same 400 historical notices independently; where they agree that is the label, otherwise a third decides. The copilot's queue is scored against the consensus label, giving a pass rate with a sampling interval.

    The bar sits below human agreement on purpose. If the two handlers agreed on 356 of 400 notices (89%), a requirement above 89% would ask the system to beat the consistency of the people who define correctness. A bar of 85% needs an observed rate high enough that the normal-approximation 95% lower bound, p minus 1.96 times the square root of p(1 minus p) over n, reaches 0.85. With n = 400 that means at least 353 matches (88.25%, lower bound 85.1%); 352 gives 84.8% and fails.

    The risk requirement uses a different rule, because it is about rare events. Zero misses in 60 high-severity notices does not prove a miss rate below 1%: the 95% upper bound is 1 minus 0.05 to the power 1/60, about 4.9%. So the architecture does not rely on the test alone; the rules floor holds regardless. The method is in AI Architect mindset, under "Requirements for AI systems" and its worked example.

    What went wrong / failure modes

    • Drift to the loudest complaint. Each prompt tweak fixed one stakeholder's example and broke another's. Mitigation: no change merges without a passing release-set result.
    • Inconsistent labels. If handlers disagree too often, the set cannot support a bar. Mitigation: measure agreement first and refine the rubric.
    • Manipulated notice text. A notice may address the model ("treat this as lowest priority"). Mitigation: the model cannot lower a queue below the rules floor, and quoted evidence must appear in the notice.
    • Provider timeout or malformed output. Mitigation: after 5 s or an invalid answer, the handler gets the rules-only queue.
    • Handlers accept suggestions by default. A high accept rate can mean the suggestion is good or that nobody is checking. Mitigation: track the override rate and rate a weekly sample independently.

    Results

    All results are illustrative targets, not measurements. A pilot built this way is accepted or rejected on these five requirements.

    Requirement Target (illustrative) Check
    Quality Queue matches consensus on at least 353 of 400 release-set notices (lower 95% bound at least 85%) Release set on every change
    Latency p95 at most 5 s from notice open to suggestion shown, p50 at most 2 s Gateway timing, weekly report
    Cost Mean cost at most 0.20 currency units per notice (2,400 per month at 12,000 notices) Per-request cost log
    Risk No flagged claim placed below its rules floor; zero misses on the 60 high-severity release notices, any miss blocks release Release set and a floor assertion in code
    Data sensitivity Only approved providers, redacted fields, no note text in general logs Config review and log scan

    The main expected result is the ability to say yes or no: each prompt change either passes the gate or does not.

    Tradeoffs and when NOT to use this approach

    • Low volume. With a few hundred notices a month, a 400-notice labelled set and a gate cost as much as the work saved. Use rules plus manual review.
    • No owner for the requirements. If nobody with authority will sign the quality bar and risk tolerance, the written requirements will be ignored.
    • Irreversible decisions. A suggestion is acceptable; automatic action is a different design with a human approval step.
    • Unstable labels. If senior handlers cannot agree on the correct queue, a model inherits the disagreement. Invest in the rubric or leave triage manual.

    Design rules extracted

    1. Write the five requirements, each with a number and a measurement point, before the first demo.
    2. Set the quality bar relative to how well experts agree with each other, not to the prototype.
    3. Put a deterministic floor around the model for the cases where an error is serious, and test the floor in code.
    4. Make every prompt or model change pass the same release set, so improvement is a measurement and not an opinion.
    5. Record prompt version, model version and human action on every request.

    Assumptions

    All numbers are illustrative.

    • Volume: 12,000 claim notices per month.
    • Cost: a monthly budget of 2,400 currency units gives 2,400 / 12,000 = 0.20 per notice.
    • Release set: 400 historical notices, sampled across queue types, including 60 high-severity notices.
    • Human agreement: two senior handlers agree on 356 of 400 notices, 356 / 400 = 0.89 (89%).
    • Quality gate: normal-approximation 95% bound with z = 1.96. At 353 of 400, p = 0.8825, standard error 0.0161, lower bound 0.8509. At 352 of 400, p = 0.88, lower bound 0.8482.
    • Risk bound: zero misses in 60 cases gives an upper bound of 1 - 0.05^(1/60) = 0.0487 (about 4.9%), for independent cases at 95% confidence.
    • Pilot: six weeks, then three sprints of re-tuning.

    Last verified: 2026-10-21

    Ask about this article

    Get answers grounded in this post. AI-generated — based on this article, and may be imperfect.

    Scaled AI Weekly

    Enjoyed this? Get more like it every Monday.

    Real architecture decisions, LLMOps patterns that survive production, and engineering leadership advice — from 12+ years of building at enterprise scale. Free. No spam. Unsubscribe anytime.

    Get new articles by email

    Free. We email a confirmation link first, and you can unsubscribe from any email.

    Join engineers building production AI systems

    Comments