Skip to content

Claims triage ​

First-notice triage of a claim: the policyholder answers a claim form with evidence, four rules check the policy, the amount and how often they claim, and anything unusual goes to an adjuster. Pack: examples/policies/claims-triage/.

A pattern for expressing a insurance policy, not compliance guidance: the thresholds, lists and fields are placeholders chosen to make the example run; a real policy comes from the business's own rules. It calls no app, so it runs in an empty workspace as it is.

The decision it automates ​

Whether to fast-track the claim, refer it to an adjuster, or decline it, when the claim form is submitted.

Data expected ​

  • The policyholder as a subject with policyStatus and policyAgeDays, which your claims system keeps current before it starts the run.
  • The claim form's answers under submission: claimType, incidentDate, amount, description, a policeReference for thefts, and optional photos and invoice.
  • A claim.filed event for every claim, posted through POST /events, so the frequency rule sees the history.

Steps and rules ​

StepTypeWhy
collectwait_for_collectionThe claim-form flow; thefts add a police-reference step.
rulesevaluate_rulesThe claims-triage rule set under max_severity.
routebranchrules.outcome == manual_review opens a case.
reviewcreate_caseclaims_adjuster, 72-hour SLA.
decideemit_decisionFrom the rules, or the reviewer's decision.

The rule set claims-triage (useCase: custom) uses max_severity: a failed block rule rejects, a failed warn rule sends the run to review, and the weights add up to the score.

RuleTypeSeverity, weightFails when
claim_policy_activecomparisonblock, 100subject.policyStatus is not active
claim_earlycomparisonwarn, 30subject.policyAgeDays is under 60
claim_amountscore thresholdwarn, 30amount is above 5 000
claim_frequencyvelocitywarn, 40more than two claim.filed events in 90 days

What a reviewer sees ​

A claims_adjuster case with the form, the photos and invoice when attached, and the rule results. case.sla.breached reaches your systems if the SLA slips.

How to adapt it ​

Add a call_app step for your policy administration system (an app you build) to confirm cover instead of trusting the subject's fields, a document check on the invoice, and payee screening with mock-sanctions while you wire up a real vendor (Seller and payout screening shows the pattern).

Run it ​

bash
pnpm policy:import examples/policies/claims-triage --publish

The fixture files a 1 800 damage claim 21 days into the policy: the early-claim rule fails, a claims_adjuster case opens, the check approves it and the run completes with a manual approve.

Released under the Apache-2.0 License.