@openinsure/claims package manages the complete claims lifecycle from First Notice of Loss (FNOL) through final closure. The module integrates with the billing system for reserve accounting, the document system for attachment management, and the compliance engine for state-specific handling requirements.
Claims Lifecycle
FNOL — First Notice of Loss
Claims can be filed via the API, the policyholder portal, the producer portal, or by an adjuster directly.File a Claim
Assignment Rules
Claims are auto-assigned based on:- Line of business — GL claims go to GL-licensed adjusters.
- Geography — Prefer adjusters licensed in the loss state.
- Workload — Round-robin among available adjusters below the workload threshold (configurable, default 35 open claims).
- Severity — Claims above $100,000 are assigned to senior adjusters.
- Manual override — Supervisors can reassign at any time.
Reserve Management
Case Reserves
Every open claim has a case reserve — the adjuster’s best estimate of the ultimate loss and expense to settle the claim.claim_reserve_history — no in-place updates. The audit trail shows every reserve movement with adjuster, date, amount, and rationale.
Reserve Adequacy Flags
The system automatically flags reserves that appear inadequate:| Flag | Trigger |
|---|---|
ROUND_NUMBER | Reserve is an exact round number (suggests placeholder) |
RAPID_INCREASE | Reserve increased >50% in 30 days |
EXCEEDED_ESTIMATE | Paid-to-date + reserve exceeds original estimate by >25% |
APPROACHING_POLICY_LIMIT | Reserve exceeds 80% of applicable policy limit |
IBNR_OUTLIER | Claim’s development pattern is 2+ standard deviations from cohort |
IBNR Reserves
Incurred But Not Reported (IBNR) reserves are calculated at the organization level by the actuarial module. OpenInsure provides:- Chain Ladder method for standard lines
- Bornhuetter-Ferguson method for immature lines with limited data
- Manual IBNR entry for actuary override
Subrogation Workflow
When a third party is responsible for the loss, the claims module tracks subrogation recovery.| Status | Description |
|---|---|
IDENTIFIED | Third party identified, evaluating recovery potential |
DEMAND_SENT | Demand letter sent to third party or their insurer |
NEGOTIATING | Counter-offer received, negotiating |
RECOVERED | Full or partial recovery received |
CLOSED_NO_RECOVERY | Recovery not pursued or pursuit exhausted |
Litigation Tracking
When a claimant files suit, the claim transitions tolitigated status and triggers defense counsel assignment.
- Defense billing management — Counsel submits invoices via the portal, adjuster approves against litigation budget.
- Diary management — Automated reminders for deposition deadlines, discovery cutoffs, mediation dates.
- Coverage position letters — Template-driven reservation of rights and coverage denial letters.
- Verdict/settlement tracking — Record outcome, final payment amounts, and close litigation file.
Settlement Negotiation
| Adjuster Level | Authority Limit |
|---|---|
| Associate | $10,000 |
| Adjuster II | $25,000 |
| Senior Adjuster | $75,000 |
| Supervisor | $250,000 |
| Manager | Unlimited (carrier authority applies) |
Payment Disbursement
Once a settlement is approved, payment is disbursed via the billing module:| Type | Description |
|---|---|
SETTLEMENT | Final settlement payment to claimant |
MEDICAL | Medical expense payment (direct to provider) |
DEFENSE_EXPENSE | Defense counsel invoice payment |
EXPERT_EXPENSE | Expert witness, IME, or appraiser fees |
SUBROGATION_RECOVERY | Recovery received from third party (negative — income) |
Claim Closure
- Sets all reserves to zero (closed with final payments known).
- Posts the final paid amounts to the loss run.
- Updates the organization’s loss ratio statistics.
- Triggers a bordereaux update for claims reporting.
Document Management
See the Claims Attachments API for file upload and retrieval. Supported types: PDF, JPEG, PNG, TIFF, DOCX. Max 10 MB per file.Salvage Recovery
When a total loss or significant property claim results in recoverable assets, the salvage module tracks the asset from identification through disposition and recovery. The API is at/v1/claims/:id/salvage, implemented in apps/api/src/routes/claims/salvage.ts.
Creating a Salvage Record
Disposition Statuses
| Status | Description |
|---|---|
pending | Salvage identified, not yet disposed |
retained_by_insured | Insured retains the asset (salvage deduction applied to settlement) |
sold_at_auction | Asset sold through salvage auction |
scrapped | Asset scrapped with no meaningful recovery |
donated | Asset donated (tax benefit may apply) |
transferred | Asset transferred to another party |
Updating Salvage (Recording Recovery)
When salvage is disposed, update the record with actual recovery details:| Field | Description |
|---|---|
actualRecovery | Dollar amount recovered from disposition |
disposition | New disposition status |
buyerName | Name of buyer (auction or private sale) |
saleDate | Date of sale or transfer |
titleTransferred | Whether vehicle/asset title has been transferred |
storageLocation | Updated storage location |
dailyStorageCost | Updated daily storage rate |
Deleting Salvage Records
Only records inpending disposition can be deleted. Non-pending records return HTTP 409:
Audit Trail
All salvage operations generate entries in theclaim_events table:
| Event Type | Trigger |
|---|---|
salvage_created | New salvage record created |
salvage_updated | Salvage record modified (disposition change, recovery recorded) |
salvage_removed | Pending salvage record deleted |
Storage Cost Tracking
For assets in physical storage (tow yards, warehouses), the system tracks:storageLocation— Facility name and addressstorageStartDate— Date storage begandailyStorageCost— Per-day rate
Total Loss Workflow
When a vehicle or asset is damaged beyond economical repair, the total loss module manages the determination, settlement calculation, and title disposition. The API is at/v1/claims/:id/total-loss, implemented in apps/api/src/routes/claims/total-loss.ts.
Total Loss Determination
Total Loss Reasons
| Reason | Description |
|---|---|
damage_exceeds_value | Repair cost exceeds the vehicle’s actual cash value (most common) |
constructive_total_loss | Repair cost exceeds the state’s total loss threshold (typically 75-80% of ACV) |
theft_unrecovered | Vehicle stolen and not recovered within the statutory period |
regulatory | State regulation mandates total loss determination |
Settlement Calculation
The system automatically calculates the settlement amount:- ACV (Actual Cash Value) — Fair market value of the vehicle immediately before the loss.
- Deductible — Policy deductible amount.
- Prior Damage — Deduction for pre-existing unrepaired damage.
- Salvage Deduction — Applied only when
ownerRetainsSalvageistrue. Represents the salvage value deducted from the settlement so the insured can keep the vehicle.
Title Status
The system determines the title status based on the total loss details:| Title Status | Condition |
|---|---|
clear | No lienholder and owner does not retain salvage |
lienholder_payoff_pending | Lienholder payoff amount specified |
retained_by_owner | Owner retains salvage (title branded as salvage/rebuilt) |
title_transferred | Title has been transferred to the carrier or salvage buyer |
Updating Total Loss Records
After the initial determination, the title status and settlement can be updated as the process progresses:titleStatus, settledAt, lienholderName, lienholderPayoff.
Audit Trail
Total loss operations generate events in theclaim_events table:
| Event Type | Trigger |
|---|---|
total_loss_determined | Initial total loss determination created (includes reason, ACV, settlement amount, title status) |
total_loss_updated | Total loss record modified (title transfer, settlement date, lienholder changes) |
Authorization
All salvage and total loss endpoints require one of:adjuster, underwriter, org_admin, or superadmin role. Write operations (create, update, delete) exclude superadmin from the write path — only adjuster, underwriter, and org_admin can modify records.