Bot-Ingested Loss Runs: How InsightXtract and RPA Bots Feed Structured Claims Data into the Renewal Workflow
How InsightUW ingests 23 Workers Comp claims spanning 5 policy years for Ironclad Construction — extracted by InsightXtract from carrier loss run PDFs — validates every field, calculates development factors, and presents the underwriter with a clean loss summary showing an experience mod trending from 1.28 down to 1.15.
The Problem
Loss runs are the underwriter's most important document and the most painful to work with. A Workers Compensation renewal for a mid-market contractor might involve loss runs from 2-3 prior carriers, each in a different PDF format, covering 5 years of claims history. The underwriter needs structured data — claim number, date of loss, claimant, status, paid, reserved, incurred, claim type — but what they receive is a 15-page PDF designed for human reading, not system consumption.
The current workflow at most carriers:
- Broker emails loss run PDFs. These arrive as attachments — sometimes scanned, sometimes system-generated, sometimes both in the same email.
- Underwriter opens each PDF. Manually reads through 23 claims, looking for patterns: frequency, severity, open claims, large losses, claim types.
- Underwriter manually keys summary data. Total incurred, total paid, total reserves, claim count by year — typed into a spreadsheet or rating tool. This takes 20-45 minutes for a complex account.
- No validation. The underwriter may misread a reserve figure, transpose digits, or miss a claim entirely. There is no system check.
- No development tracking. Loss runs from the same account received 6 months apart should show claim development (reserves increasing or decreasing). Manual processes do not track this.
The math for a Workers Comp book:
- 3,000 WC renewals per year
- Average 12 claims per loss run
- 25 minutes average to manually extract and key loss data
- 1,250 hours/year of manual loss run data entry — equivalent to 0.6 FTEs doing nothing but transcribing PDFs
And the error rate on manual keying is 4-8%. On a $2M account, a single transposed digit in a reserve field can swing the loss ratio calculation by 15 points.
The InsightUW Bot-to-API Pipeline
InsightUW provides a structured API that accepts loss run data from any extraction source — InsightXtract (Anthropic Claude-powered document extraction), UiPath bots, Automation Anywhere bots, or custom scripts. The pipeline has four stages: ingestion, validation, enrichment, and presentation.
POST /api/uw_loss_runs/ingest
This endpoint accepts a complete loss run payload — metadata about the source document, the policy period, and an array of individual claims with full financial detail.
Note: The full payload contains all 23 claims. Four representative claims are shown above — a medical-only, a lost-time, a severe/litigated, and a current-year open claim.
Quality Check Engine
The quality check engine runs 8 automated validations on every ingested loss run. These checks catch extraction errors before they reach the underwriter.
Quality Check Thresholds
| Check | PASS | WARNING | FAIL |
|---|---|---|---|
| Incurred = Paid + Reserve | Exact match (all claims) | Off by < $100 (rounding) | Off by > $100 (extraction error) |
| Date Logic | All dates valid and sequential | Report date = DOL (same-day, unusual but valid) | DOL > Report, or future dates |
| Reserve Reasonableness | Reserve ratio within age-based norms | Reserve ratio 1.5x expected for claim age | Reserve > incurred, or negative reserve |
| Missing Fields | 0 missing required fields | 1-2 missing optional fields | Missing claim_number, DOL, or incurred |
| Cross-Year Premium | Year-over-year change < 25% | Change 25-50% | Change > 50% or missing year |
| Claim Type Distribution | Within 2 std deviations of LOB norms | Unusual but possible | Impossible (e.g., 100% fatal) |
| Large Loss Detection | Detection only (always PASS) | N/A | N/A |
| Extraction Confidence | >= 0.90 | 0.85 - 0.89 | < 0.85 |
The Loss Summary API
After ingestion and quality checks, the enrichment engine calculates summary analytics. The underwriter accesses these through the loss summary API or the renewal UI.
The Scenario
Ironclad Construction LLC is a commercial general contractor specializing in multi-story steel frame construction. They employ 73 workers across 4 active job sites in Pennsylvania and New Jersey. Their Workers Comp policy expires July 1, 2026. The expiring premium is $172,000. Their current experience modification rate is 1.15, trending down from 1.28 three years ago.
The broker emails a 12-page Hartford loss run PDF covering 5 policy years and 23 claims. Here is what happens.
Timeline: Bot Ingestion to UW Review
| Time | Step | Actor | Detail |
|---|---|---|---|
| 9:00 AM | Broker emails loss run PDF | Broker | "Attached: Hartford loss run for Ironclad Construction, 5 years, for July 1 renewal" |
| 9:01 AM | InsightUW monitored mailbox captures email | System | Email parsed, PDF attachment identified, linked to RNW-2026-WC-00394 |
| 9:01 AM | PDF sent to InsightXtract for extraction | System | InsightXtract queues the 12-page PDF for AI extraction |
| 9:01:14 AM | InsightXtract extracts 23 claims | InsightXtract | Extraction confidence: 0.94. All 23 claims extracted with full financial detail |
| 9:01:15 AM | Structured payload POSTed to /api/uw_loss_runs/ingest | InsightXtract | JSON payload with 23 claims, 5 policy periods, source metadata |
| 9:01:16 AM | Schema validation: PASS | System | All required fields present, types valid, ranges valid |
| 9:01:16 AM | Duplicate detection: 0 duplicates | System | First ingestion for this submission |
| 9:01:17 AM | Quality checks: 7 PASS, 1 WARNING | System | Warning: Reserve ratio on HF-2024-WC-63847 (64% reserve ratio at 20 months) |
| 9:01:18 AM | Large loss flag generated | System | HF-2024-WC-63847: $600K incurred, amputation, litigated |
| 9:01:19 AM | Loss development factors applied | System | Ultimate incurred estimate: $1,298,420 |
| 9:01:20 AM | Loss summary generated and attached to renewal | System | 5-year summary, development triangle, insights — all attached to RNW-2026-WC-00394 |
| 9:01:20 AM | Notification sent to UW | System | Bell: "Loss Run Ingested: Ironclad Construction — 23 claims, 1 large loss flag" |
| 9:05 AM | UW opens renewal, reviews loss summary | David Kim (UW) | Sees 5-year development, experience mod trend, frequency improvement, large loss detail |
| 9:15 AM | UW adjusts renewal pricing based on loss data | David Kim | Factors in improving frequency, large loss reserve development, experience mod trend |
Total time from broker email to structured loss data in UW's hands: 1 minute 20 seconds.
What David Kim Sees in the Renewal UI
The loss run data is presented in the renewal submission as a structured panel with four views:
- Summary View: 5-year totals, overall loss ratio, experience mod trend chart, frequency trend chart
- Year-by-Year View: Table with premium, claim count, paid, reserved, incurred, and loss ratio for each policy year
- Claim Detail View: Sortable table of all 23 claims with expandable rows for each claim's full financial detail
- Development View: Loss development triangle showing how each policy year's incurred has developed over time, with projected ultimates
The QC warning on claim HF-2024-WC-63847 appears as a yellow badge: "Reserve ratio 64% at 20 months — higher than typical for WC lost-time claims at this maturity. Review recommended."
Handling Multiple Loss Runs
Real-world renewals often involve loss runs from multiple carriers or multiple valuation dates. InsightUW handles this through versioning and merging:
When a second loss run is ingested for the same submission, the system:
1. Matches claims by claim number
2. Identifies new claims not in the prior run
3. Detects reserve changes (development) for existing claims
4. Flags significant development (reserve increase > 25% or reserve decrease > 50%)
5. Updates the loss summary with the latest valuation
Metrics: Before and After Bot-Ingested Loss Runs
| Metric | Before InsightUW | After InsightUW | Improvement |
|---|---|---|---|
| Time from loss run receipt to structured data | 25-45 minutes (manual keying) | 80 seconds (bot extraction + ingestion) | 95% faster |
| Data entry error rate | 4-8% of fields | < 0.5% (bot + QC checks) | 90% reduction |
| Large losses missed on first review | 12% (UW skims PDF, misses buried claim) | 0% (auto-flagged) | 100% detection |
| Loss development tracking | None (manual, ad hoc) | Automatic (per-claim, per-valuation) | New capability |
| UW hours saved per year (3,000 WC renewals) | 0 | 1,250 hours (data entry eliminated) | Recovered capacity |
| Experience mod trend visibility | Manual calculation | Auto-calculated and displayed | Instant insight |
| Quality check coverage | 0% (no validation) | 100% (8 checks per loss run) | Complete coverage |
| Time from loss run to pricing decision | 1-3 days | Same day (often within 30 minutes) | 80% faster |
Key Takeaways
-
Loss runs are data extraction problems, not underwriting problems. InsightUW moves the extraction to a bot and the validation to a rules engine, so the underwriter's first interaction with loss data is analysis, not transcription.
-
Quality checks catch what humans miss. The incurred-equals-paid-plus-reserve check catches transposition errors. The reserve reasonableness check flags claims where development may be understated. These checks run in milliseconds and catch errors that a fatigued underwriter at 4 PM would miss.
-
Development tracking is automatic. When an updated loss run is ingested, the system shows exactly which claims developed and by how much. The underwriter sees "Claim HF-2024-WC-63847: reserves increased $45K since last valuation" — not a PDF they must compare page-by-page with the prior version.
-
The loss summary is the underwriter's starting point. Frequency trend, severity trend, experience mod trend, large loss identification, and claim type analysis — all calculated and presented before the UW opens the file.
-
80 seconds, not 80 minutes. From broker email to structured, validated, enriched loss data in the UW's renewal package — the entire pipeline executes in under 90 seconds.
InsightUW turns loss run PDFs into structured, validated, enriched data in under 90 seconds — so your underwriters analyze losses instead of transcribing them. See the bot ingestion pipeline in action with your own loss runs.