Manufacturing excess is products-driven: sales and payroll by class, a handful of plants, and a loss picture split between products-completed-operations claims and plant injuries. Over a $50M lead umbrella, the products tail is the story. We ran a real precision manufacturer, Meridian Precision Products, through InsightXtract.

Insured: Meridian Precision Products Inc.Revenue $268M GL payroll $64.0MWC payroll $80.7M Plants 14Named insureds 22 5-yr claims 27 / $9.2M incurredLead umbrella $50M

Why manufacturing is an excess casualty risk

A manufacturer's excess sits over primary GL with a large products-completed-operations exposure — a component that fails in the field, years after it shipped, is exactly what the umbrella is bought for. Class of product, sales by class, export share and the completed-ops tail drive the rate; the plant WC book rides alongside.

The submission packet

A real manufacturing placement is rarely one clean file. This one is five, in four different shapes — the everyday reality an underwriting team has to re-key by hand today:

  • broker_email.pdf — the renewal narrative: account description, requested limits, exposure snapshot, and the excess-layer options to quote.
  • rfq.pdf — the umbrella/excess application: general information, coverage requested, and the exposure bases.
  • exposure_workbook.xlsx — the heart of the file: GL exposure by products class code, a plant/location schedule, WC payroll by class across the shops, and a named-insured schedule of subsidiaries.
  • loss_run.pdf — five years of currently-valued losses, split between products-liability claims and plant workers-comp.
  • schedule_of_underlying.pdf — the primary casualty and lead umbrella the excess attaches over.

Step 1 — Classification

Every file is routed to a document type first — evidence-bearing, with a confidence, not a black-box label:

Document
Classified as
Conf.
broker_email.pdf
excess_casualty_submission_email
0.98
rfq.pdf
excess_casualty_application
0.97
exposure_workbook.xlsx
excess_casualty_exposure_workbook
0.99
loss_run.pdf
excess_casualty_loss_run
0.98
schedule_of_underlying.pdf
excess_casualty_schedule_of_underlying
0.96

Step 2 — Coverage structure, with citations

The requested tower is read from the email and application, every value grounded to its page:

CoverageRequestedSource
General Liability — each occurrence$1,000,000rfq p.2
General Aggregate$2,000,000rfq p.2
Products / Completed-Ops Aggregate$2,000,000rfq p.2
Commercial Auto — CSL$1,000,000rfq p.3
Employers Liability$1,000,000rfq p.3
Lead Umbrella$50Memail p.1

Step 3 — Exposure schedules, typed & normalized

The workbook is where template OCR falls over — many sheets, hundreds of rows, broker-specific wording. InsightXtract reads every sheet, maps each to a typed schedule, and normalizes the codes against governed glossaries. A slice of the GL exposure schedule:

StateWC CodeDescriptionRevenuePayroll
IN us_state_codes51862 ncciMachined metal products mfg$21,400,000$3,852,000
OH us_state_codes59005 ncciPlastic injection molding$14,900,000$2,682,000
MI us_state_codes51315 ncciMetal stamping$11,200,000$2,016,000
… 46 GL rows · workers_compensation 60 · named_insured_mix 22 · location_list 14

Column bindings: state → us_state_codes, class → ncci_wc_class_codes / iso_gl_class_codes, occupancy → occupancy_types. Out-of-vocabulary values are flagged by validation, not silently kept — and fuzzy column resolution means a rule written for payroll still binds a broker’s “Total Payroll” column.

Step 4 — Derived exposures (deterministic, not guessed)

The account is rated on totals. Rather than ask a model to eyeball-sum hundreds of rows, the document type declares deterministic sum / count / group_by rules that reduce the extracted schedules exactly — the same numbers every run, each traceable to its source table:

$64.0M
GL payroll
∑ general_liability.payroll
$80.7M
WC payroll
∑ workers_compensation.payroll
14
Plants
count(location_list)
22
Named insureds
count(named_insured_mix)

Step 5 — The loss run

A manufacturer's loss run mixes products-completed-operations claims (component failure, defect) with plant WC — machine injuries, chemical exposure, lifting. Every claim is extracted — coverage line, status and cause normalized — and rolled up, with a by-line split for the loss pick:

Claim #CoverageCauseStatusIncurred
MER-4109GL coverage_linesProducts - component failureOpen claim_statuses$412,000
MER-4088GL coverage_linesProducts - defect claimClosed claim_statuses$188,000
MER-4051WC coverage_linesMachine amputationOpen claim_statuses$305,000
… 27 claims across 5 policy years, currently valued
27
Claims (5 yr)
count(claims)
$9.2M
Total incurred
∑ claims.incurred
by line
Incurred split
group_by coverage_line

What the underwriter reads first

The coded record surfaces exactly the drivers that move this class of business:

  • Sales by products class — the rating basis, and where the completed-ops tail concentrates.
  • Export share & product-recall program, captured from the supplemental.
  • Plant WC severity — machine and chemical exposures by location.
  • Products loss development over five valued years, coded by line.

Why it holds up in production

  • Every value is cited — page/region provenance on fields and schedules; a file review can click any number to its source.
  • Codes are normalized against governed glossaries; out-of-vocabulary values are validated, not hidden.
  • Totals are computed, not guessed — deterministic derived fields over the extracted rows, exact and reproducible.
  • Configuration is versioned — document types, glossaries and rules pinned to a published version, so an output made today reproduces tomorrow.
  • Nothing is dropped — the all-sheets extractor surfaces every schedule, even ones the base schema didn’t anticipate.