Templates/InsurTech/Insurance claims triage

Insurance claims triage

Closed-enum settlement / investigate / decline verdict per claim with rationale. Always-human reviewer-gate on declines + high-value claims for IDD Art. 25 + GDPR Art. 22.

Category: classifier·Reviewer-gate: always-human·For InsurTech·Use-case page →

What this template is

Pattern: classifier producing tri-state claim-routing verdict + rationale. Always-human reviewer-gate on decline routes the high-stakes negative outcome to a human. Closed-enum verdict + bounded rationale prevent free-text drift; specHash + modelIdentity per L12 entry feed IDD Art. 25 POG annual reviews. Reject-on-failure (not fallback default) — better to surface an error than to silently auto-settle.

The template

TypeScript · BSL-1.1 · License

import { RuntimeAISpec } from '@promethean/runtime-ai';

export const claimsTriageSpec: RuntimeAISpec = {
  specId: 'claims-triage-v1',
  displayName: 'Insurance claims triage',
  description:
    'Tri-state routing verdict per claim with rationale.',
  category: 'classifier',
  schemaVersion: 'promethean-runtime-ai-spec-1.0',
  canonicalForm: 'v1',

  inputSchema: {
    fields: [
      { name: 'claimId', type: 'string', required: true,
        redaction: 'hash-only' },
      { name: 'policyLine', type: 'enum', required: true,
        enumValues: ['motor', 'home', 'travel', 'life', 'health'] },
      { name: 'amountClaimedMinor', type: 'number', required: true,
        min: 0, max: 1_000_000_00 },
      // Free-text claim narrative: hash-only.
      { name: 'narrative', type: 'string', required: true,
        maxLength: 10_000, redaction: 'hash-only' },
      { name: 'policyholderTenureDays', type: 'number', required: true,
        min: 0, max: 50_000 },
    ],
  },

  outputSchema: {
    fields: [
      { name: 'verdict', type: 'enum', required: true,
        enumValues: ['auto-settle', 'investigate', 'decline'] },
      { name: 'rationale', type: 'string', required: true,
        maxLength: 280 },
      { name: 'flagsRaised', type: 'string-list', required: false,
        maxItems: 6, maxLength: 64 },
      { name: 'confidence', type: 'number', required: true,
        min: 0, max: 1 },
    ],
  },

  promptTemplate: {
    system:
      'You triage insurance claims into auto-settle / investigate / decline. ' +
      'A human handler will review every decline + every high-value settlement. ' +
      'Be specific in rationale — cite the policy term + the claim fact. ' +
      'Do not infer characteristics outside the claim narrative.',
    user:
      'Claim {{claimId}} ({{policyLine}}): {{amountClaimedMinor}} minor units. ' +
      'Policyholder tenure: {{policyholderTenureDays}} days. ' +
      'Narrative: {{narrative}}.',
  },

  modelIdentity: {
    provider: 'anthropic',
    model: 'claude-sonnet-4-5',
    version: '20250929',
  },

  reviewerGate: 'always-human',
  maxLatencyMs: 6000,
  fallbackBehavior: 'reject',
};

Regulations addressed

This template's configuration choices map to specific regulatory obligations. The substrate doesn't certify compliance — but the spec hash + reviewer-verdict + modelIdentity per L12 entry give you the evidence layer for these citations:

  • ·EU AI Act Annex III §5(c) — life + health insurance
  • ·IDD Art. 25 — product oversight + governance
  • ·EIOPA AI governance principles (2021)
  • ·GDPR Art. 22 — automated claim decisions

See citations index for official source URLs →

Installation + usage

  1. Create a free Dev-tier workspace — API key + Ed25519 signing key issued instantly.
  2. Install the SDK: npm install https://promethean.software/runtime-ai/latest.tgz.
  3. Paste the template above into your codebase. Adjust modelIdentity + prompt for your context.
  4. Call runConstrainedAI(spec, input, { client, receiptLogPath, productId, signingKey }) from your service code. For local testing pass createMockRuntimeAIClient(spec); for production, an Anthropic / OpenAI / Azure adapter.
  5. Verify the chain with the Apache-2.0 verifier.