Insurance
Insurance Scenario¶
Model: Security-first · Entry: AuthAgent · Handoffs: Mixed (B2C announced, B2B discrete)
Architecture¶
flowchart TB
AA[AuthAgent<br/>Security Gate] --> PA[PolicyAdvisor<br/>B2C]
AA --> FNOL[FNOLAgent<br/>B2C]
AA --> SA[SubroAgent<br/>B2B]
PA --> FNOL
FNOL --> PA
PA --> H[Human Agent]
FNOL --> H
SA --> H
Two caller types:
| Type | Auth Method | Flow |
|---|---|---|
| B2C (Policyholder) | Policy + Name + SSN4 | → PolicyAdvisor / FNOLAgent |
| B2B (Claimant Carrier) | Company Code + Claim # | → SubroAgent |
Agents¶
| Agent | Purpose | Key Tools | Reference |
|---|---|---|---|
| AuthAgent | Entry, identity verification | verify_client_identity, verify_cc_caller |
→ Details |
| PolicyAdvisor | Policy inquiries | get_policy_details, get_coverage_details |
→ Details |
| FNOLAgent | File new claims | file_new_claim |
→ Details |
| SubroAgent | B2B subrogation | get_coverage_status, evaluate_rush_criteria |
→ Details |
Related: ClaimsSpecialist handles ongoing claims processing
Test Scripts¶
Script 1: B2B Subrogation (Golden Path)¶
Claimant carrier rep calling about claim recovery — tests all 6 inquiry steps
Full Conversation
| # | Caller (Lisa) | Agent | Tool |
|---|---|---|---|
| Auth | |||
| 1 | "Lisa Chen, Contoso Insurance" | "Company code?" | — |
| 2 | "CI-1234" | "Claim number?" | — |
| 3 | "CLM-2024-1234" | — | verify_cc_caller |
| 4 | — | (SubroAgent) "Got it. What do you need?" | → discrete |
| 1️⃣ Coverage | |||
| 5 | "Confirm coverage?" | "Coverage confirmed. Active policy." | get_coverage_status |
| 2️⃣ Liability | |||
| 6 | "Liability?" | "Accepted at 80%." | get_liability_decision |
| 3️⃣ Limits | |||
| 7 | "PD limits?" | "$50k. Your demand is within limits." | get_pd_policy_limits |
| 4️⃣ Payments | |||
| 8 | "Payments made?" | "$14,832 on Nov 15. Check #84521." | get_subro_payments |
| 5️⃣ Demand | |||
| 9 | "Demand status?" | "$43,847.52 under review. Sarah Johnson handling." | get_subro_demand_status |
| 6️⃣ Rush | |||
| 10 | "We need this expedited" | "Third call detected. Other criteria?" | evaluate_rush_criteria |
| 11 | "Deadline in 30 days" | "Two criteria met. Flagged for rush." | — |
Validated
- [x] B2B auth via company code
- [x] Discrete handoff (no greeting)
- [x] All 6 inquiry steps pass
- [x] Rush auto-detects call history
- [x] Rush requires 2+ criteria
Script 2: Policyholder Claim Status¶
Customer checking on existing claim
Full Conversation
| # | Caller (John) | Agent | Tool |
|---|---|---|---|
| 1 | "Check on my claim" | "Policy number?" | — |
| 2 | "POL-AUTO-789012" | "Name and SSN4?" | — |
| 3 | "John Smith, 1234" | "Verified. Your Oct 15 claim?" | verify_client_identity |
| 4 | "What's the status?" | "Under investigation. Mike Johnson handling." | get_claim_status |
| 5 | "When do I get paid?" | "3 business days after completion. $500 deductible applies." | get_payment_status |
Validated
- [x] Policy + name + SSN4 auth
- [x] Claim status retrieval
- [x] Payment timeline explained
Script 3: First Notice of Loss (FNOL)¶
Filing a new claim after accident
Full Conversation
| # | Caller (Maria) | Agent | Tool |
|---|---|---|---|
| 1 | "I was in an accident" | "Are you okay? Let me help file a claim." | — |
| 2 | [Provides policy + verification] | — | verify_client_identity |
| 3 | — | (FNOLAgent) "Tell me what happened" | → announced |
| 4 | "Rear-ended at stoplight" | "When?" | — |
| 5 | "An hour ago" | "Where?" | — |
| 6 | "Main & 5th" | "Injuries?" | — |
| 7 | "No, just vehicle damage" | "Creating claim..." | file_new_claim |
| 8 | — | "Claim CLM-2024-NEW123. Adjuster calls within 24h." | — |
Validated
- [x] Empathetic response
- [x] Announced handoff to FNOLAgent
- [x] Loss details collected
- [x] Immediate claim number
B2B Subrogation: 6-Step Flow¶
| Step | Question | Tool | Returns |
|---|---|---|---|
| 1️⃣ | "Coverage confirmed?" | get_coverage_status |
Confirmed / Denied / CVQ |
| 2️⃣ | "Liability decision?" | get_liability_decision |
% + basis |
| 3️⃣ | "PD limits?" | get_pd_policy_limits |
Limits + demand comparison |
| 4️⃣ | "Payments made?" | get_subro_payments |
List with dates/amounts |
| 5️⃣ | "Demand status?" | get_subro_demand_status |
Status + handler |
| 6️⃣ | "Rush eligible?" | evaluate_rush_criteria |
Requires 2+ criteria |
Rush Criteria (need 2+)¶
| Criterion | Check |
|---|---|
| Third+ call | ⚡ Auto-detected |
| Deadline < 60 days | Caller provides |
| Litigation pending | Caller provides |
| Prior demands ignored | Caller provides |
Test Scenarios¶
test_scenario |
Claim | What It Tests |
|---|---|---|
golden_path |
CLM-2024-1234 | Full B2B workflow |
demand_paid |
CLM-2024-005678 | Already paid |
coverage_denied |
CLM-2024-003456 | Policy lapsed |
liability_denied |
CLM-2024-002468 | Fault rejected |
demand_exceeds_limits |
CLM-2024-024680 | $85k vs $25k limit |
Configuration¶
registries/scenariostore/insurance/orchestration.yaml
name: insurance
start_agent: AuthAgent
agents:
- AuthAgent
- PolicyAdvisor
- FNOLAgent
- SubroAgent
handoffs:
# B2C: Announced (new specialist greets)
- from: AuthAgent
to: PolicyAdvisor
tool: handoff_policy_advisor
type: announced
- from: AuthAgent
to: FNOLAgent
tool: handoff_fnol_agent
type: announced
# B2B: Discrete (seamless for professionals)
- from: AuthAgent
to: SubroAgent
tool: handoff_subro_agent
type: discrete
# Cross-specialist
- from: PolicyAdvisor
to: FNOLAgent
tool: handoff_fnol_agent
type: announced
- from: FNOLAgent
to: PolicyAdvisor
tool: handoff_policy_advisor
type: announced