• contact@verticalserve.com
Home / Engineering / Post 4
Engineering Blog · Post #4

Bot Integration API: Status Transition Webhooks, DMS Linking, and Quality Check Workflows for RPA-Extracted Data

How InsightUW ingests Marine Hull & Machinery submissions from RPA bots, tracks document management URLs, and runs a CBP quality check before any extracted data reaches an underwriter.


The Problem

Carriers investing in RPA (Robotic Process Automation) face a paradox: bots extract data faster than humans, but nobody trusts the output. A bot pulls vessel specifications from a Marine Hull & Machinery application — tonnage, hull material, class society, flag state — and pushes it into the underwriting system. But who verifies it?

In most shops, the answer is "nobody until something blows up." The bot pushes data directly into the policy admin system. Three months later, a claims adjuster discovers the hull material was misread as "steel" when the application clearly stated "aluminum composite." The reserve is wrong. The reinsurance ceding is wrong. Everything downstream is wrong.

The root causes:

  1. No status machine — bots push data once; there's no intermediate "pending review" state
  2. No DMS linkage — the bot extracted from a document, but there's no link back to the source page
  3. No quality check queue — extracted data goes straight to the underwriter's screen with no CBP verification layer
  4. No reject/correction flow — when a human spots an error, there's no structured way to send it back for re-extraction
  5. No audit trail — which bot, which version, which document, which field — none of it is tracked

The cost: A single misextracted limit field on a Marine Hull policy can swing exposure by $10M+.

The InsightUW Bot Integration Architecture

InsightUW treats bot-extracted data as untrusted input that must pass through a structured quality gate before it enters the underwriting workflow.

graph TD subgraph Bot["RPA Bot Layer"] A["🤖 Ui Path / Automation Anywhere<br/>Extracts from DMS documents"] B["Bot pushes payload via API<br/>Post /api/uw bot intake/extract"] end subgraph Status["Status Machine"] C["new"] D["extraction pending"] E["extraction complete"] F["quality check"] G["qc approved"] H["in review"] end subgraph QC["Quality Check Queue"] I["Underwriting Assistant reviews<br/>extracted fields vs. source doc"] J["✅ Approve — fields correct"] K["❌ Reject — send back to bot<br/>with error annotations"] end subgraph UW["Underwriting"] L["Submission enters UW work queue<br/>with verified extracted data"] end A --> B B --> C C --> D D --> E E --> F F --> I I --> J I --> K K --> D J --> G G --> H H --> L

The Status Machine: 6 States, Zero Ambiguity

Every bot-sourced submission moves through a strict state machine. No state can be skipped. Every transition fires a webhook and logs an audit event.

stateDiagram-v2 [*] --> new : Bot creates submission new --> extraction pending : Bot begins extraction extraction pending --> extraction complete : Bot finishes extraction extraction complete --> quality check : System queues for QC quality check --> qc approved : CBP approves quality check --> extraction pending : CBP rejects (re-extract) qc approved --> in review : Assigned to UW
State Who Owns It What Happens Duration
new System Submission created, documents linked < 1 second
extraction pending Bot Bot is actively extracting fields from documents 10-60 seconds
extraction complete System All fields extracted, confidence scores attached < 1 second
quality check Underwriting Assistant Human reviews extracted data against source documents 5-15 minutes
qc approved System QC passed, data is trusted < 1 second
in review Underwriter Submission in UW work queue with verified data Hours-days

The Scenario

A broker submits a Marine Hull & Machinery application for a Panamax bulk carrier. The submission arrives in the company's document management system (DMS), and a UiPath bot picks it up for extraction.

The Vessel:
- Name: MV Pacific Meridian
- Type: Panamax Bulk Carrier
- Year Built: 2019
- Flag State: Marshall Islands
- Class Society: Lloyd's Register
- Gross Tonnage: 82,400 GT
- Hull Value: $38,000,000
- Machinery Value: $12,000,000
- Total Insured Value: $50,000,000
- Trade Area: Worldwide excluding war zones

Step 1: Bot Creates the Submission

The UiPath bot calls the InsightUW API to register a new submission:

Step 2: System Queues for Quality Check

The system detects that trade area has confidence 0.87 (below the 0.90 threshold). InsightUW automatically:

  1. Sets status to quality check
  2. Assigns to next Underwriting Assistant in the QC rotation (Maria Santos)
  3. Flags the low-confidence field with a yellow highlight
  4. Links the DMS document URL so Maria can view the source
sequenceDiagram participant Bot as Ui Path Bot participant API as InsightUW API participant Fifo as QC Fifo Engine participant CBP as Maria Santos (UA) participant DMS as Document Mgmt System participant UW as UW Work Queue Bot->>API: Post /extract (10 fields, 1 flagged) API->>API: Create SUB-2026-MH-0042<br/>Status: extraction complete API->>API: Detect low-confidence field<br/>(trade area: 0.87) API->>Fifo: Queue for quality check Fifo->>CBP: 🔔 QC Required: MV Pacific Meridian<br/>1 flagged field API->>API: Status → quality check CBP->>DMS: Open DMS link, view source document CBP->>CBP: Verify: trade area = "Worldwide<br/>excluding war zones and<br/>high-risk areas per JWC list" CBP->>API: Patch — correct trade area,<br/>approve QC API->>API: Status → qc approved API->>UW: Submission enters UW queue<br/>with verified data

Step 3: CBP Reviews in the QC Queue

Maria opens her QC work queue:

Submission Insured LOB Flagged Fields DMS Link Wait Time
SUB-2026-MH-0042 Pacific Meridian Shipping Marine H&M 1 (trade_area) View Source 2 min
SUB-2026-MH-0039 Nordic Tankers AS Marine H&M 3 (hull_value, tonnage, class) View Source 8 min

She clicks into SUB-2026-MH-0042 and sees the extraction results side-by-side with the DMS document:

Field Extracted Value Confidence Source Page Status
vessel_name MV Pacific Meridian 98% Page 1 ✅ Auto-approved
vessel_type Panamax Bulk Carrier 95% Page 1 ✅ Auto-approved
year_built 2019 99% Page 1 ✅ Auto-approved
flag_state Marshall Islands 97% Page 2 ✅ Auto-approved
class_society Lloyd's Register 96% Page 2 ✅ Auto-approved
gross_tonnage 82,400 GT 94% Page 2 ✅ Auto-approved
hull_value $38,000,000 91% Page 3 ✅ Auto-approved
machinery_value $12,000,000 89% Page 3 ⚠️ Review
total_insured_value $50,000,000 93% Page 3 ✅ Auto-approved
trade_area Worldwide excl. war zones 87% Page 4 🔴 Flagged

Maria clicks the DMS link, navigates to page 4, and reads: "Trading area: Worldwide excluding war zones and high-risk areas as defined by the Joint War Committee (JWC) listed areas."

The bot truncated the value. Maria corrects it:

Step 4: CBP Approves (or Rejects)

Approve flow:

Reject flow (if the extraction was fundamentally wrong):

On rejection, the status reverts to extraction pending, the bot receives a webhook notification, and a new extraction cycle begins.

DMS URL Tracking

Every bot submission carries a dms document url that links back to the source document in the carrier's document management system (NetDocuments, iManage, SharePoint, or custom DMS). This creates a permanent chain of custody:

graph LR subgraph Chain["Document Chain of Custody"] A["DMS: MH-2026-0891<br/>Original PDF in Net Documents"] B["Bot Extraction<br/>10 fields, confidence scores"] C["QC Review<br/>Maria verified vs. DMS page 4"] D["UW Work Queue<br/>James sees verified data<br/>+ DMS link for reference"] end A -->|"dms document url"| B B -->|"extracted fields[]"| C C -->|"qc approved"| D D -->|"Click to view source"| A

At every stage — QC review, underwriter analysis, quote generation, audit — any user can click the DMS link and see the exact source document the bot extracted from.

Webhook Notifications

Every status transition fires a webhook to registered listeners (bot orchestrators, DMS systems, downstream policy systems):

Webhook events fired for MV Pacific Meridian:

# Event Status Transition Fired At Listener
1 submission.created new 9:00:00 DMS, Bot Orchestrator
2 submission.extraction_started new → extraction pending 9:00:01 Bot Orchestrator
3 submission.extraction_complete extraction pending → extraction complete 9:00:45 QC Engine
4 submission.qc_queued extraction complete → quality check 9:00:46 CBP FIFO Engine
5 submission.qc_approved quality check → qc approved 9:07:46 UW Assignment Engine
6 submission.assigned qc approved → in review 9:07:47 UW Notification, DMS

Auto-Notification to CBP via FIFO

When a bot submission enters the quality check state, InsightUW's FIFO engine assigns it to the next available Underwriting Assistant on the QC rotation — separate from the general submission intake rotation. This ensures QC work doesn't compete with new submission triage.

QC Rotation Analyst Last QC Assigned QC Count Today Status
1 Rachel Torres 9:05 AM 6 Active
2 Kevin Patel 8:58 AM 5 Active
3 Maria Santos 8:42 AM 4 NEXT
4 David Kim 8:50 AM 5 Active

Maria has the oldest last qc assigned at timestamp — she gets the MV Pacific Meridian QC review. A push notification appears in her app header bell within 1 second.

Confidence Thresholds Configuration

Administrators configure per-LOB confidence thresholds. Fields below the threshold require manual QC review; fields above are auto-approved:

LOB Auto-Approve Threshold Flag for QC Threshold Reject Threshold
Marine Hull & Machinery >= 0.95 0.85 - 0.94 < 0.85
Cyber Liability >= 0.92 0.80 - 0.91 < 0.80
General Liability >= 0.90 0.75 - 0.89 < 0.75
Workers Compensation >= 0.90 0.80 - 0.89 < 0.80

Marine H&M has the highest threshold because vessel specifications are safety-critical — a misread gross tonnage can invalidate classification society requirements.

The Full Timeline: MV Pacific Meridian

Time Event Status Actor
9:00:00 AM Bot creates submission from DMS doc MH-2026-0891 new UiPath Bot v3.2
9:00:01 AM Bot begins field extraction extraction pending UiPath Bot v3.2
9:00:45 AM Bot completes extraction — 10 fields, 1 flagged extraction complete UiPath Bot v3.2
9:00:46 AM System queues for QC, assigns to Maria Santos quality check FIFO QC Engine
9:00:47 AM Push notification sent to Maria quality check Notification Service
9:01:30 AM Maria opens QC queue, clicks into submission quality check Maria Santos (UA)
9:03:00 AM Maria opens DMS link, views source document quality check Maria Santos (UA)
9:05:00 AM Maria corrects trade_area, confirms other fields quality check Maria Santos (UA)
9:07:46 AM Maria clicks Approve — QC passed qc approved Maria Santos (UA)
9:07:47 AM System assigns to James Mitchell (Marine UW) in review FIFO UW Engine
9:07:48 AM Push notification sent to James in review Notification Service
9:10:00 AM James opens submission — verified data + DMS link in review James Mitchell (UW)

Total time from bot extraction to UW review: 10 minutes. Of that, 7 minutes was human QC review.

Key Metrics

Metric Without QC Workflow With InsightUW QC Workflow
Bot extraction errors reaching UW 12-18% of fields 0.3% (caught at QC gate)
Time to discover extraction error 3-14 days (at quote or bind) 5-15 minutes (at QC step)
Cost of late-caught error $5K-$50K (re-work, re-quote) $0 (caught before UW sees it)
DMS traceability None — bot output disconnected 100% — every field linked to source page
QC review time per submission N/A (no QC existed) 7 minutes avg (Underwriting Assistant)
Audit trail for bot data Bot log files (separate system) Unified audit — bot, QC, UW in one trail
Rejection rate (re-extraction) N/A 8% of submissions sent back to bot
Fields auto-approved (high confidence) N/A 82% of fields pass threshold

InsightUW's Bot Integration API turns RPA from a black box into a trusted, auditable pipeline — with human quality checks where they matter most. Request a demo to see the QC workflow in action.

See InsightUW run on your data

A 45-minute working session with a real broker email and your LOBs.

Request a demo