// Underwriting workflow automation
The SOV total and the ACORD TIV disagree.
A submission is a set of documents that contradict each other: ACORD 125, 126 and 140, the SOV, the loss runs, and the material fact that exists only in the third paragraph of a broker's email. Read each one alone and you get a clean record that is confidently wrong.
Dearborn Labs is an AI-native software development firm built specifically for insurance. There is no Dearborn Labs product in this — you hire the engineers, and your underwriting operation owns the intake system after we go.
// The situation
Underwriters complain about the tools they already have.
96% of underwriters say pricing technology needs improvement — and the complaint isn’t about the model. It’s about what arrives at the desk before the model runs.
hyperexponential · State of Pricing · vendor research.
So week one on an intake build is counting rather than building: touches per submission by stage, days from receipt to first underwriter decision, rework rate, and how many inbound submissions are the same risk arriving twice. Those four numbers decide the scope — and one possible finding is that the queue is faster than somebody told you, and the money belongs elsewhere.
The category is crowded, and crowded at the wrong layer. Two dozen or so underwriting workbench vendors are in a feature-parity race, and the shelf is full of products marketing near-zero time to value — the absence of implementation. The workbench isn’t the hard part. The hard part is what the workbench is handed.
// The stack you actually run
The artifacts, and the mailbox they arrive in.
Two things that separate people who have run an intake queue from people who have demoed one.
First, the documents contradict each other routinely. The SOV total and the ACORD 140 total insured value disagree. The driver count on the 127 doesn’t match the driver schedule. Garaging addresses conflict between the schedule and the application. A pipeline that reads each document on its own hands the underwriter one confident number with no indication a second existed. When the disagreement is material, the output has to name the conflict, show both values, and cite the document and page each came from. That single design decision determines whether an underwriter still trusts the output in month three.
Second, the same risk arrives more than once. One retail agent, three wholesalers, six markets each, and the insured name spelled a little differently every time. That’s not only wasted underwriting time — every duplicate counts as an additional quote in the denominator, so hit ratio is understated by an amount nobody has quantified. Deduplication improves the metric and the accuracy of the metric at once.
// The build
Four builds, and what each one is measured on.
Cross-document reconciliation
One submission record assembled from every document in the set, each value carrying the document and page it came from. Where two sources disagree by a material amount, both values are retained and the conflict is raised as a field rather than resolved quietly.
Surface: the submission mailbox and ACORD AL3 into the submission record in your underwriting workstation.
SOV normalization to a canonical model
Arbitrary broker schemas — where BLDG_VAL, BldgValue and RCV Building all mean the same thing — mapped to one model. Geocode resolution recorded as a field rather than assumed, and COPE gaps flagged with provenance on every filled value. Secondary modifiers like roof shape, deck attachment and covering material usually aren't SOV columns at all; they live in narrative appraisals and engineering surveys, and are extracted from there or reported as absent.
Surface: the broker's spreadsheet into your exposure schema, with a per-location provenance record.
Appetite and authority screening at intake
Class, limit, geography, attachment and premium-size boundaries checked before the file reaches a desk, with a citation to the governing guideline or binding-authority clause. Out-of-appetite risks are stopped with a reason. Borderline risks arrive with the reason attached rather than a rule code and a queue position.
Surface: the guideline and contract corpus turned into an executable check, versioned alongside your underwriting manual.
Duplicate and clearance detection
Fuzzy matching on insured name, FEIN, address, effective date and exposure fingerprint, so the same risk arriving from three wholesalers resolves to one clearance record with three submission channels attached. Broker relationships stay visible; the risk stops being counted three times.
Surface: the clearance record, with the duplicate group written back as a linked set rather than a deletion.
What we measure
Touch count per submission, counted by observation rather than estimate. Time from receipt to first underwriter decision, on the same cohort definition on both sides of the build. Rework rate, meaning how often a file goes back to the broker for something that was already in the set. Duplicate rate, reported as a correction to hit ratio rather than a time saving. Share of fields extracted, inferred and defaulted, reported per submission instead of in aggregate. Conflict rate by document pair. Definitions and baselines are set in the first week, before anything is built.
// We ran one of these
The intake queue is a production system with a clock on it, which is why the read starts from your process documentation and a sample of real files rather than from a process diagram.
The operating record →// What's hard about this
Two limits, and what we do about each.
A large part of real appetite is not written down anywhere.
Class, limit, geography and premium size are checkable against the manual. The class you write only for an incumbent broker, the geography you’re quietly walking away from this quarter, the account you’d take at a price nobody put in the guideline — none of that is written down. A screening layer built on the written guideline alone will confidently stop risks you actually want.
So the check routes rather than decides wherever the guideline runs out. Everything expressible becomes an executable rule citing the clause it came from. Everything else becomes a referral with the reason attached and a named authority on it, and the rules stay editable by your own underwriting team rather than living inside a model. The layer also reports its own coverage: what share of inbound it could decide, and what share it handed over.
Triage is where adverse selection enters.
When an underwriter can only work a fraction of inbound, the files that get worked are the ones easiest to read — not the ones most likely to be profitable. A tidy submission from a broker who formats cleanly beats a better risk that arrived as a scanned fax. That selection effect is invisible in every metric an underwriting operation keeps, and it worsens as volume rises.
The answer is to separate the two things triage conflates. Readability is scored as completeness and remediated automatically, by chasing missing fields and normalizing format. Appetite fit is scored independently, on the risk. The queue is ordered on the second, and the gap between the two orderings is reported as a number, so you can see what the old ordering was costing.
// What ships with it
The governance file, scoped to intake decisions.
A model inventory entry for the extraction models and, separately, for anything that scores appetite, since those carry different risk tiers. Data lineage from source document and page to submission field. Pre-deployment testing results, drift thresholds with remediation triggers, and a named human decision-maker specification for every path that can stop a submission. Roughly half the states have adopted the NAIC AI Model Bulletin, the variations are material, and a declination at intake is an adverse action in several of them.
NAIC and state bulletins · current at September 2026.
What the governance file contains →Bring us one week of inbound.
We will tell you what the submission path costs today, and which part of it is worth automating first.
