insurance-claims-orchestrator

SkillAI & models

Orchestrate a two-call consent-first insurance claims intake sequence with CALL-E. Call 1 collects a structured loss report from the policyholder. Call 2 verifies coverage using Call 1 results. Ambiguous outcomes route to human review. Introduces the first state-passing multi-call pattern in the repo.

Available today. Use it from your connected AI after setup.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Then ask your AI: use the insurance-claims-orchestrator skill

What this skill tells your AI

The instructions your AI receives, as published by calle-ai/awesome-phone-call-agents in skills/insurance-claims-orchestrator/SKILL.md and read by ahel’s review.

Use this skill when an agent needs to initiate an insurance claim intake on behalf of a policyholder using two sequential CALL-E calls, where the structured result of Call 1 directly gates and informs Call 2.

This skill does not approve or deny claims, quote settlement amounts, or make commitments on behalf of the insurer. It gathers structured evidence and routes to a human adjuster.

When To Use

  • Initiate an insurance claim on behalf of a policyholder who has consented to automated contact
  • Run a structured two-call sequence where results of Call 1 gate Call 2
  • Return machine-readable claim intake data to a downstream adjuster or CRM system
  • Demonstrate the state-passing multi-call pattern for other builders to copy

When Not To Use

  • Do not use to approve or deny claims
  • Do not use to collect payment, SSN, or banking information
  • Do not use when the policyholder has not explicitly consented to automated contact
  • Do not use outside 8:00 AM to 9:00 PM recipient local time
  • Do not use for collections, marketing, or unsolicited outreach

Required Inputs

  • phone: E.164 phone number of the policyholder, explicitly authorized
  • insurer_name: display name disclosed on the call
  • consent: must be true

Optional (live mode only):

  • CALLE_API_KEY: environment variable, required only for --live execution

Calls

Call 1 — Loss Report

Contacts the policyholder to collect:

  • Incident description (claimant's own words)
  • Incident date (ISO 8601)
  • Estimated damage in dollars (or null if declined)
  • Policy number confirmation

Exit gates — Call 2 is blocked if:

  • outcome is anything other than "completed"
  • policy_number_confirmed is null
  • Both incident_description AND incident_date are null

Any blocked gate routes to human review, not Call 2.

Call 2 — Coverage Verification

Uses Call 1 results to confirm:

  • Policy number (read back by claimant)
  • Policy active status
  • Coverage type applicability
  • Prior claims in the last 12 months
  • Adjuster follow-up timeline

How to Run

Dry-run (no calls, no API key needed):

cd apps/typescript/insurance-claims-orchestrator
npm install
npm run dry-run

Validate result fixtures against schema:

npm run validate-schema

Live (requires CALLE_API_KEY):

export CALLE_API_KEY=your_key_here
npx tsx src/index.ts --phone +1XXXXXXXXXX --live

Result Schemas

Both calls return structured JSON validated against references/schema.json.

Call 1 — LossReportResult:

FieldTypeNotes
outcomeenumcompleted / voicemail / no_answer / refused / unclear
incident_descriptionstring or nullClaimant's own words
incident_datestring or nullISO 8601 or null
estimated_damagenumber or nullDollar value or null
policy_number_confirmedstring or nullAs spoken by claimant

Call 2 — CoverageVerifyResult:

FieldTypeNotes
outcomeenumcompleted / voicemail / no_answer / refused / unclear
policy_activeboolean or nullNull if not established
coverage_verifiedenumyes / no / unknown — never guessed
prior_claims_12moboolean or nullNull if declined
adjuster_notifiedbooleanWhether adjuster follow-up was communicated
claimant_questionsstring or nullVerbatim unanswered questions

Safety Contract

See references/safety.md. Key rules:

  • AI disclosure is mandatory at the start of both calls
  • SSN, credit card, bank account, and password fields are never requested
  • Coverage decisions are never made or implied on the call
  • Ambiguous outcomes route to human review — never auto-retry unclear results
  • Phone numbers masked in all logs: first 4 chars + asterisks
  • Dry-run is the default — --live flag required for real calls

Idempotency

Each call execution is keyed by sha256(phone + step_id + incident_date). Re-running with the same inputs within 24 hours is a no-op, not a second call.

Files

skills/insurance-claims-orchestrator/
├── SKILL.md                    <- This file
├── references/
│   ├── safety.md               <- Safety contract and fail-closed dispositions
│   ├── schema.json             <- JSON Schema for both result shapes
│   └── two-call-pattern.md    <- Pattern guide for other builders
├── scripts/
│   ├── dry-run.ts              <- Fixture-based demo (no calls placed)
│   ├── validate-schema.ts      <- Validates result JSON against schema
│   └── fixtures/
│       ├── loss-report-result.json
│       └── coverage-verify-result.json
└── assets/
    └── sequence-diagram.md     <- Mermaid call flow diagram

Signals

GitHub stars
104
Forks
527
Last commit
Sep 2026

ahel review

  • K1binfo
    installs-packages
  • K6info
    bundled executables the agent is told to run

Automated review, not a security audit. Ruleset v1+k2.

Advanced
Item type
skill
Key
insurance-claims-orchestrator
Source
github.com/calle-ai/awesome-phone-call-agents