Workers’ compensation looks deceptively simple to intake — one line of business, one statutory coverage — but the rating base is anything but flat. A single mid-market account can employ people across a dozen NCCI class codes in five states, each code with its own rate, each state with its own rules. The premium is built bottom-up from payroll × rate × class, then modified by the experience mod. That means the numbers that decide the price aren’t in a summary box on the application — they live in a payroll workbook broken out line by line, and in a loss run that shows how prior claims developed. Miss the class-code split and you have mispriced the account before you started.
Most intake tools read one document at a time and hand back a flat list of fields. That is not how a comp account is underwritten. InsightXtract runs an agentic, multi-document pipeline that classifies each file, extracts to a per-document schema, consolidates everything into one unified account record, links it into an entity graph, and validates it against your rules and reference data — so the underwriter opens a single, coded, cited record instead of a stack of files.
ACORD app
payroll workbook
loss run] --> B[Classify
each document] B --> C[Extract to the
right schema] C --> D[Consolidate
by source priority] D --> E[Link into an
entity graph] E --> F[Validate
rules + reference data] F --> G[One coded,
cited account record]
One submission, four document types, one connected record — classify, extract, consolidate, link, validate.
The idea that governs everything: payroll by class code is the price
Before the categories, the single most important concept. In workers’ comp, the rating base is not one payroll number — it is payroll split by NCCI class code, per state. A $6M-payroll contractor with most of that in clerical codes is a completely different risk from one with the same $6M concentrated in roofing or excavation, even though the application header shows the same total. The premium is assembled from each class-code line, then adjusted by the experience mod — the account’s own loss history relative to its peers. So the workbook and the loss run aren’t supporting documents; they carry the price.
InsightXtract captures the flat account facts once, and reads the exposure and loss detail as tables — one row per class code, per state, and one row per claim. In the tables below, the Captured column flags this explicitly:
- Current — captured once for this term.
- Point-in-time — a single static fact about the account.
- Per-row — a table: one class code, state, or claim per row.
- Prior term — the expiring/prior-carrier value used as the rate-change baseline.
A · Insured identity & legal entity
Who the account is — the contract party, its tax identity, legal structure, and operations classification. Sources: ACORD application, broker email.
| Parameter | Captured | Why it matters |
|---|---|---|
| Named insured · DBA / trade name | Point-in-time | The contract party and unique account key — drives clearance, conflicts, and de-dupe. |
| FEIN (Federal Employer ID) | Point-in-time | The definitive account identifier for comp — ties the policy to the entity that reports payroll and files claims. |
| Mailing / physical address | Point-in-time | Governing jurisdiction and correspondence — and a cross-check on the state mix. |
| Entity type (legal form) | Point-in-time | Drives officer inclusion/exclusion rules and who counts as a covered employee. |
| NAICS code · SIC code | Point-in-time | Industry classification for appetite and benchmarking — validated against reference data. |
| Business description · years in business | Point-in-time | Nature of operations behind the codes, and a stability signal. |
B · Broker & submission
Who’s placing the account and the exact ask — product, term, and the coverage being requested. Sources: broker email, ACORD application.
| Parameter | Captured | Why it matters |
|---|---|---|
| Broker name · broker email | Point-in-time | Distribution routing, binding authority, and correspondence. |
| Product | Current | Confirms the line and coverage form being requested. |
| Effective date | Current | Term start, workflow timing, and binding deadline. |
| Requested limit | Current | The capacity being asked for — the shape of the ask. |
C · Experience mod & rating context
The single most-scrutinized modifier in comp. The experience mod is the account’s own loss experience relative to its class peers — a multiplier on manual premium. Source: ACORD application.
| Parameter | Captured | Why it matters |
|---|---|---|
| NCCI experience mod (EMR) | Point-in-time | Directly multiplies manual premium — a mod above 1.0 is a debit, below is a credit, and it’s the clearest proxy for safety performance. |
| Employers’ liability limit (each / disease / policy) | Current | The EL side of the coverage — the limit protecting against suits outside the statutory benefit. |
| Estimated annual revenue / sales | Point-in-time | Scale context and a sanity-check against payroll and headcount. |
| Premium (indicated / quoted) | Current | The number the whole build-up produces — validated against payroll × rate × mod. |
D · States operated & primary state
Comp is a state-by-state coverage — rates, rules, and benefits differ by jurisdiction, and monopolistic states are a knockout. InsightXtract captures the state footprint and standardizes every state to its two-letter code against reference data. Source: ACORD application.
| Parameter | Captured | Why it matters |
|---|---|---|
| Primary state · risk state | Point-in-time | The governing jurisdiction that anchors rating rules and the mod calculation — standardized to a canonical state code. |
| States operated · states covered (WC) | Per-row | The full jurisdictional spread — each state carries its own rates, rules, and potential monopolistic-state exclusion. |
| Total employees · employee count | Point-in-time | Workforce size cross-checked against the class-code employee counts below. |
| Total payroll (account-level) | Point-in-time | The header total that must reconcile to the sum of the class-code payroll table — a built-in integrity check. |
E · Officer inclusion / exclusion
Whether owners and officers are covered materially changes both the covered payroll and the exposure — and the rules turn on entity type. Source: ACORD application.
| Parameter | Captured | Why it matters |
|---|---|---|
| Officer count | Point-in-time | How many owners/officers exist — the population the inclusion decision applies to. |
| Officers included (in coverage) | Point-in-time | Included officers add capped payroll to the base; excluded ones remove exposure — a direct premium and coverage swing. |
F · The class-code payroll table — one row per class code, per state
This is the rating base. InsightXtract reads the payroll workbook as a table — one row per NCCI class code, per state — because the premium is built line by line, not from the header total. Source: payroll-by-class workbook (Excel).
| Parameter | Captured | Why it matters |
|---|---|---|
| State | Per-row | Each class code is rated under a specific jurisdiction — standardized to a canonical state code. |
| NCCI class code | Per-row | The governing classification — the hazard grade that sets the manual rate. |
| Class description | Per-row | The operations behind the code — confirms the classification is right for the work performed. |
| Payroll for class | Per-row | The exposure base for that code — the multiplicand in payroll × rate. |
| Employees in class | Per-row | Headcount per code — validates average wage and reconciles to total employees. |
| Rate (per $100 of payroll) | Per-row | The manual rate applied to each class-code line — the multiplier that turns payroll into premium. |
Why the class-code table is the heart of it
Every dollar of workers’ comp premium starts here: payroll for a class, times its rate per $100, summed across every code and state, then modified by the experience mod. Extract this table wrong — miss a high-hazard code, or lump it into a clerical line — and the price is wrong at the source. InsightXtract captures state, class code, description, payroll, employees, and rate as discrete columns so the build-up reconciles.
G · Safety program & risk quality
The context that separates two accounts with identical class-code mixes — whether the employer actively manages injury frequency. Source: ACORD application.
| Parameter | Captured | Why it matters |
|---|---|---|
| Safety program (in place / description) | Point-in-time | A formal safety program is a leading indicator of lower future frequency — and supports schedule-rating credits. |
| Experience mod (as safety proxy) | Point-in-time | Read alongside the safety program, the mod confirms whether the culture is actually reducing losses. |
H · Prior carrier & renewal baseline
Continuity and the rate-change baseline — what the account paid before, and to whom. Source: ACORD application.
| Parameter | Captured | Why it matters |
|---|---|---|
| Prior carrier | Prior term | Coverage continuity and a source to reconcile the loss run against — gaps and churn are flags. |
| Prior premium | Prior term | The price-to-beat and the rate-change baseline for a renewal. |
I · The loss run — one row per claim
The other half of the price. InsightXtract reads each claim as a row across the loss run — the raw material behind the experience mod and the clearest read on frequency and severity. Source: loss run (Excel).
| Parameter | Captured | Why it matters |
|---|---|---|
| Claim number · date of loss | Per-row | Each loss’s identity and timing — anchors it to a policy year for the mod window. |
| Claimant · line of coverage · state | Per-row | Who was injured, under what coverage, in which jurisdiction — venue affects severity. |
| Cause of loss | Per-row | The nature of the injury — drives whether it’s a one-off or a systemic hazard signal. |
| Incurred · paid · outstanding reserve | Per-row | Cost, development, and open exposure still on the books — the numbers that feed the mod. |
| Status (open / closed) | Per-row | Open claims can still develop upward — a reserve today may be a larger loss tomorrow. |
From four documents to one connected record
Pulling these parameters out of four files is only half the job. The value is in consolidation: the insured named on the ACORD, the broker on the email, the payroll on the workbook, and the claims on the loss run all describe one account. InsightXtract merges them into a single record by a declared source-of-truth priority (the application wins over the email on insured details), standardizes every state and NAICS code against reference data, formats currency and dates consistently, and validates the result — the named insured is required, the risk and primary states must resolve to real codes. The underwriter opens one coded, cited record instead of four files in three formats.
Why the connected record, not just a form
An underwriter doesn’t think in flat fields — they think in relationships: does the sum of the class-code payroll reconcile to the header total? Does the experience mod line up with the losses in the loss run and the safety program on the application? The connected record makes those checks explicit and clickable, with every value cited back to the page it came from.
Why it matters to the business
Comprehensive, structured extraction isn’t a data-entry nicety — it changes the economics and quality of the book:
- Better-priced risk. Payroll-by-class-code is the rating base — capturing it as a table with state, code, payroll, employees, and rate lets you build the premium bottom-up the way it’s actually rated, not from a misleading header total.
- The mod, read in context. The experience mod is the sharpest safety proxy in comp. Extracting it alongside the safety program and the loss run lets the underwriter see whether the mod is earned or an artifact — and where it’s heading.
- Multi-state complexity, handled. Comp is fifty different coverages. Standardizing every state to a canonical code and splitting payroll and claims by jurisdiction means the multi-state accounts — the ones most likely to be mispriced — are handled correctly by default.
- Loss development, surfaced. Open claims with outstanding reserves are the ones that surprise you. Reading incurred, paid, reserve, and status per claim means a developing loss reaches the underwriter, not the audit.
- Faster quotes, consistent and auditable. An underwriter opening a consolidated, cited record instead of four files triages in minutes — and the same categories, coded the same way with provenance to the source, make the book repeatable rather than dependent on who opened the file.
The Workers’ Compensation agent extracts all of this today — the insured identity and FEIN; the broker and submission; the experience mod, EL limit, and premium; the primary state and full state footprint; officer inclusion; the class-code payroll table with state, code, description, payroll, employees, and rate; the safety program and prior carrier; and the loss run claim by claim — consolidated into one coded record, every value cited to its source document, every state and NAICS code standardized against reference data. And because it’s all configuration — fields and tables in the agent’s output contract, not code — the schema keeps pace with what underwriters ask for.
Related reading →
See how the same pipeline handles other lines: inside an excess casualty submission, and inside a commercial auto submission.