Large Loss Workflow

The ClaimsEventsConsumer creates a policy.agent_tasks row when isLargeLoss = true. This page explains what that task means, how underwriters action it, and what downstream effects it can trigger.

← Event Flow  |  Operations →


What Is a Large Loss?

A large loss is a claim settlement where the total settlement amount meets or exceeds the LARGE_LOSS_THRESHOLD (configured in ClaimsOne, default $100,000). These settlements warrant underwriting review because they:

  • Signal elevated risk on the policy (and potentially on the account or territory)
  • May affect renewal pricing, surcharges, or non-renewal decisions
  • Can trigger reinsurance notifications
  • May indicate fraud patterns that need SIU escalation

The Agent Task

When a large-loss event arrives, PolicyOne inserts exactly one policy.agent_tasks row per event:

{
  taskKind: 'large_loss_review',
  entityType: 'policy',
  entityId: policy.id,              // the PolicyOne policy UUID
  agentKind: 'deterministic',       // not AI-driven; requires human review
  status: 'pending',
  triggerEvent: 'claim.settled',
  triggerSource: 'claims_one',
  humanReviewRequired: true,
  humanReviewNote: `Large loss settlement: ${claimNumber}, amount: $${formatCents(settlementAmountCents)}`,
  inputs: {
    claimId,
    claimNumber,
    policyNumber,
    settlementAmountCents,
    deductibleCents,
    isLargeLoss: true,
    settlementDate
  }
}
FieldValueWhy
taskKindlarge_loss_reviewIdentifies the task type for UW queue routing
agentKinddeterministicNo AI automation — a human underwriter must review
humanReviewRequiredtrueBlocks automated close; UW must take action
statuspendingInitial state; transitions to in_review → completed or escalated
triggerSourceclaims_oneAudit trail — this task originated from a ClaimsOne event

Underwriter Workflow

Rendering diagram…

Task Status Transitions

StatusMeaningWho sets it
pendingTask created, awaiting UW pick-upClaimsEventsConsumer (on creation)
in_reviewUnderwriter has opened the taskPolicyOne UI (when UW clicks "Start Review")
completedUW took action and closed the taskPolicyOne UI
escalatedReferred to senior UW or committeePolicyOne UI
cancelledTask voided (e.g. duplicate, error)PolicyOne admin

Data Available to the Underwriter

The inputs JSONB column stores the full claim context. When the UW opens the task in PolicyOne, the UI can display:

Data pointSource
Claim number & link to ClaimsOneinputs.claimNumber, inputs.claimId
Settlement amountinputs.settlementAmountCents (formatted from cents)
Deductible appliedinputs.deductibleCents
Settlement dateinputs.settlementDate
Policy numberinputs.policyNumber (join to policy.policies)
Policy inception, expiry, coverageJoin policy.policies via entityId
Prior claims on this policyQuery policy.agent_tasks WHERE entity_id = entityId

SQL: Query Pending Large Loss Tasks

-- All pending large-loss review tasks, newest first
SELECT
  at.id,
  at.human_review_note,
  at.created_at,
  p.policy_number,
  p.insured_name,
  at.inputs->>'settlementAmountCents' AS settlement_cents,
  at.inputs->>'claimNumber' AS claim_number
FROM policy.agent_tasks at
JOIN policy.policies p ON p.id = at.entity_id
WHERE at.task_kind = 'large_loss_review'
  AND at.status = 'pending'
  AND at.tenant_id = $1
ORDER BY at.created_at DESC;
-- Large loss task volume by week (last 90 days)
SELECT
  date_trunc('week', created_at) AS week,
  COUNT(*) AS task_count,
  AVG((inputs->>'settlementAmountCents')::numeric) AS avg_settlement_cents
FROM policy.agent_tasks
WHERE task_kind = 'large_loss_review'
  AND created_at > now() - interval '90 days'
  AND tenant_id = $1
GROUP BY 1
ORDER BY 1;

Relationship to ClaimsOne SIU Referrals

A single claim settlement may trigger reactions in both PolicyOne and ClaimsOne simultaneously:

Rendering diagram…

These are independent reactions. PolicyOne's agent task is about the policy (renewal decision). ClaimsOne's SIU referral is about the claim (fraud investigation). They do not block or depend on each other.


← Previous: Event Flow  |  Next → Operations