AI Adoption GuideInsuranceBill
Premium audit automation
AI extracts payroll, revenue, and classification data from financial documents and calculates premium audit adjustments.
Insurance processQuoteUnderwriteBindIssueBillServiceRenewClaim
By Don, DoneThat’s AI coach · updated
A usable adjustment cites a document field and a rating class
A premium-audit adjustment is ready for an auditor only when every dollar and every class code points back to a named field on a named source document. If the cite is missing, the amount and the class stay empty. The model does not fill gaps, does not post premium, and does not treat an extract as billed.
That bar is stricter than a number that merely looks plausible. Payroll pulled from a federal 941 without a page, form, and line reference is not an audit finding. A class code inferred from a trade name when the return never states an NCCI or state class is not a rating input. Empty is the correct output in both cases.
The auditor still owns issuance. Extraction can assemble a worksheet. It cannot convert that worksheet into a debit or credit on the policy. Treat the extract as a draft packet sitting next to the same controls you already use for billing invoice anomaly detection: something to inspect, not something that has already hit the ledger.
Premium audit exists because estimated payroll or receipts on the application rarely match the books at term end. The quality outcome is an adjustment an auditor can defend: this figure from this field, mapped to a rating classification the document actually names.
Load the audit packet before any extraction
Do not start extraction against a single PDF in a shared folder. Load the full audit packet into the workspace the auditor already uses, with policy identifiers attached so the extract cannot drift onto the wrong account.
Include the original application or estimated exposure, the audit request letter, federal and state payroll returns, unemployment reports, ledgers or sales journals for receipts-based lines, certificates and 1099s for subcontracted labor, and any classification worksheets the insured supplied. Keep estimated figures in a separate column from audited figures. Mixing those two is how an extract restates the original estimate as if it were the books.
Match policy number, named insured, FEIN, audit period, and governing state before the first extract. If the FEIN on a 941 does not match the policy, stop. That is a document-identity problem, not a payroll math problem. The same discipline that applies to application vs external data reconciliation applies here: the source must belong to this insured and this term, or it does not belong in the extract.
Load systems of record as read-only context, not as writers. Policy admin and billing platforms in the Guidewire, Duck Creek, Verisk, and Origami Risk class already hold estimated exposure, billed premium, and class codes on the policy. Read those so the worksheet can show estimated versus extracted. Do not write an endorsement, a bill, or a commissionable transaction from the extract. Those platforms post after a person issues.
If the auditor cannot open the cited quarter, page, and line from the cite string, the cite is not a cite.
Extract payroll, revenue, and classification with a cite, or leave the field empty
Run extraction field by field. For each target (payroll by class, gross receipts, officer pay, overtime, subcontracted cost) require the value, the document identity, and the field location. If any of the three is missing, store empty.
For payroll, prefer the form the jurisdiction treats as primary: a 941 wages line, a state unemployment wage report, or a certified payroll. Cite which one, which period, and which line. Do not sum four quarterly 941s unless each quarter is cited and the periods cover the audit term without overlap. If a quarter is missing, do not annualize the other three. Leave annual payroll blank and flag the gap.
For receipts-based lines, extract revenue from the sales journal, tax return, or financial statement the insured designated. Cite statement, period, and line. Do not substitute bank deposits, and do not treat a total that looks close to the application as a cite.
Extract a class code only when the document names that code or an equivalent rating class the carrier's rules accept. A trade description such as carpentry is not a class code. Do not map a narrative to an NCCI or state code because the mapping is common. If the document does not name the class, leave class empty even when payroll extracted cleanly. Officer inclusion and exclusions follow the same test: if the return does not show the line, do not invent it from a title on the application.
Consider a workers compensation audit for a contractor. The packet has four 941s whose FEIN and quarters match the policy term, plus a job list that describes framing and finish work but never prints a class code. Extraction writes quarterly wages with cites to each 941 wages line, sums them only because all four quarters are present and cited, and leaves the rating classification blank. The auditor then assigns class from the inspection file and rating rules, and only then issues the adjustment. That is a complete extract. A version that also filled a carpentry class because the job list sounded like carpentry is not.
Keep estimated versus extracted on the worksheet so the auditor sees the delta. A premium delta on cited exposures is still not a bill.
Three ways an extract becomes a billing error
An adjustment with no payroll cite. The worksheet shows a payroll amount in a class and a computed additional premium, but no form, page, or line sits behind the payroll. That figure may have come from a prior-year audit, the application estimate, or a model completion. Issue it and you have billed a number nobody can reconstruct. The correct output is empty payroll and no computed premium until a cite exists.
Treating the extract as billed. The extract lands in a workbench, someone assumes the policy admin will pick it up overnight, and a notice of additional premium goes out, or a return premium is queued, without an auditor issuing. Downstream, insureds pay or dispute a number that was never authorized, and failed payment recovery sequencing chases a balance that should not exist. The extract is a draft. Billing starts when the auditor issues in the system of record.
Inventing a class code. Payroll is cited. Class is not. The model, or a worksheet default, supplies a code from the application, the agency's most common class, or a free-text trade. Rating then runs on the wrong class. Leave class empty. Do not copy the estimated class forward as if the books confirmed it. Confirmation requires the document to name the class, or the auditor to assign it. A high-confidence class with no document field is still an invention.
The auditor issues the adjustment in the policy system
After extraction, the auditor reviews every non-empty field against the cite, fills blanks from inspection and rating rules, and only then issues. Issuance creates the audit transaction in the policy admin or billing system: additional or return premium, exposure by class, and the document trail the carrier will stand behind if the insured disputes.
The auditor may accept the extract, correct a mapping, or reject the packet and request another document. All three are normal. Posting because the extract looked complete is not.
Write-back uses the same path a manual audit already uses. The extract does not bypass issuance, approval, or notice rules on platforms in the Guidewire, Duck Creek, Verisk, and Origami Risk class, including any second-reviewer threshold your shop already requires.
Keep the cites with the issued transaction so that when payroll moves, the answer is the form and line, and so a later lapse or non-pay dispute is not chasing lapse propensity scoring on a balance that was never properly issued.
Stop when FEIN or period do not match, when any exposure lacks a field cite, when class is unnamed and the auditor has not assigned it, or when anything tries to generate a bill, invoice, or agency statement from the extract alone. Empty stays empty. The auditor decides when the adjustment exists.
Is this worth automating for you?
Whether this pays back depends on how much time it takes your team today. Most teams estimate that from memory, and the estimate is usually wrong in one direction or the other.
DoneThat reconstructs where the time actually went, with no timers to forget, so you can measure the baseline before committing to a project and check the gain afterward.
Measure the baseline first