HR Outsourcing 8 min read HALO IQ

Document Parsing Is the Real Bottleneck in PEO Sales Cycles

Why days vanish re-keying loss runs and census files, why deterministic parsers beat pure AI for known carrier formats, and what thirty minutes really needs.

Cover image for Document Parsing Is the Real Bottleneck in PEO Sales Cycles

Ask a PEO sales leader why a deal took three weeks from submission to proposal and the answer will involve people: the underwriter was backed up, the broker was slow with the loss runs, the prospect took a week to send the census. All true, and all beside the point. Strip out the waiting and look at the hours of actual work, and most of them went to one task. Somebody sat with a stack of PDFs and typed numbers into a spreadsheet.

Loss runs from three carriers in three formats. A census as an Excel export from whatever payroll system the prospect uses. An ACORD 130 that was filled in by hand and scanned. An experience rating worksheet. A dec page. Each one had to be read, understood, and transcribed into the format the PEO's pricing model expects before anyone could do underwriting. That transcription is the bottleneck, and it is the one nobody talks about because it is nobody's job title.

Where the days go

Consider a hypothetical mid-sized prospect: 180 employees, four years of loss history across two carriers, operations in two states. The submission arrives by email from a broker as seven attachments.

The loss runs are the worst of it. Carrier A's run is a landscape PDF with one claim per row and a summary by policy year at the end. Carrier B's run is a portrait PDF with each claim on its own block of lines and no summary at all. The valuation dates differ. One run shows incurred, paid, and reserves as separate columns; the other shows incurred and paid and leaves the reader to subtract. The policy years in the two runs overlap, because the prospect switched carriers mid-year once. Somebody has to build one table, by policy year, with consistent columns, from two documents that disagree about what a column is.

The census is easier but not easy. It has 180 rows, a column for job title that does not map to class codes, a column for state, and pay data in a format that may be annual, hourly, or per-pay-period depending on the row. It needs to become payroll by class code by state.

The ACORD 130 has the prospect's own version of its class codes and payroll, which will not match the census, and prior coverage information, which will not match the loss runs. The X-Mod worksheet has the bureau's version of the losses, which will not match the loss runs either, because of valuation date and the bureau's own rules.

A competent underwriting assistant can do all of this in a day if nothing goes wrong. Something always goes wrong. Realistically it is two days of elapsed time, with a day of re-checking when the numbers do not reconcile, and then the underwriter can start. If the broker sends a corrected loss run mid-process, much of it starts over.

Why pure AI is the wrong answer

The obvious fix in 2026 is to hand the PDFs to a language model and ask for a table. We tried that first, and it is the wrong architecture for this job, for a reason that is specific to insurance documents.

A loss run from a given carrier is the same document every time. Same layout, same columns, same header text, same way of denoting an open claim. The carrier's system generated it from a template, and the template changes rarely. For that document, a parser built from pdftotext and regular expressions is exact. It extracts the same claim number, the same incurred amount, and the same valuation date every time, with no probability attached. When it fails, it fails loudly, because the pattern did not match, and a person can look.

A language model reading the same document is reading it fresh every time. It will get the table right nearly always, and occasionally it will transpose a column, merge two claims, or read a reserve as a paid amount, and it will do so without any signal that something went wrong. In underwriting, an error you cannot detect is worse than an error that stops the process. A loss pick built on a transposed reserve column is a loss pick that is wrong by an amount nobody knows.

So the rule we settled on for InboxIQ is deterministic first. For every carrier format we have seen enough times to characterize, there is a specific parser that extracts the fields exactly. The AI is not in that path at all.

Where AI earns its keep

That leaves the documents that do not match a known template, and there are a lot of them. A regional carrier's loss run we have not seen before. A TPA's custom report. A census exported from a payroll system with renamed columns. A scanned ACORD form filled in by hand. A dec page from a carrier that formats them differently per state.

For those, the AI fallback is the only option short of a person, and it is good at the job for the same reason it is risky: it reads the document the way a person would, from context rather than position. It can tell that a column headed "Total Inc." is incurred losses, that a line reading "O" in the status column means open, and that a block of text at the top is the valuation date. The difference from the pure-AI approach is that the output is treated as a draft: the extracted values are shown to a person next to the source document, confidence is flagged where the model was uncertain, and anything that fails a sanity check, such as paid exceeding incurred, is held for review.

The AI also does the work before the parsing: reading the inbound email, classifying each attachment as a loss run, census, ACORD 130, X-Mod worksheet, or dec page, matching the submission to an existing company or creating one, and routing each document to the module that will use it. That classification task is one where a model's judgment is the right tool, because the inputs are unbounded and the cost of a wrong guess is a document in the wrong queue, which a person catches in seconds.

And when a new carrier format shows up often enough, the AI-parsed examples become the specification for a deterministic parser, and that format moves from the fallback path to the exact path. The system gets more deterministic over time, not less.

The reconciliation nobody budgets for

Parsing is extraction. Underwriting needs the extracted data to agree with itself, and this is where the hidden day goes.

Multi-carrier, multi-year loss runs have to be aggregated by policy year, which means deciding which carrier's run governs each year, handling the mid-year switch, aligning valuation dates, and producing one table. The census payroll by class has to be compared to the ACORD 130's class schedule and the discrepancies surfaced, not silently resolved. The X-Mod worksheet's loss figures have to be compared to the loss runs and the differences explained by valuation date and bureau rules, or flagged if they cannot be.

None of this is parsing, and all of it is impossible until parsing is done. In InboxIQ, the aggregation by policy year is automatic once the runs are parsed, and the comparisons between census, ACORD, and worksheet are produced as a reconciliation view rather than left for the underwriter to discover. The underwriter's first look at the deal is a set of flagged disagreements, which is what an underwriter is for.

What "thirty minutes to a proposal" actually requires

We say a PEO can underwrite an account and deliver a polished proposal in about thirty minutes on HALO IQ. People hear that as a claim about the AI writing the proposal. It is mostly a claim about parsing.

Thirty minutes is achievable only if the submission arrives as structured data before a person touches it: loss runs aggregated by policy year, census mapped to class and state, ACORD and worksheet reconciled, and the deal already created in ConnectIQ with the documents attached. From there, ModIQ's mod projection and loss pick run on the aggregated losses, CarrierIQ supplies the manual rates, PricingIQ applies the rules, the wizard assembles the investment analysis, Executive Summary AI drafts the narrative, and CanvasIQ produces the artifact. Each of those steps is minutes. The parsing step, done by hand, is days.

So the thirty minutes is not a story about generation speed. It is a story about never re-keying a document, and about trusting the extracted numbers enough to build on them without a second person checking every cell. That trust comes from the deterministic path, not from the AI.

The bottleneck is also the moat

A last observation from the sales side. The PEO that gets a proposal in front of a prospect in two days, with the prospect's own loss history correctly aggregated and a mod projection the prospect's broker can verify, has an advantage over the PEO that takes three weeks, and the advantage is not the two-day speed itself. It is that the two-day proposal is right. The three-week proposal, built on a re-keyed spreadsheet, has a transposed column in it somewhere, and the broker will find it.

Every PEO already has underwriters who can price a deal. The difference between shops is how long it takes to get the deal into a form they can price, and how many errors are introduced on the way. That is the bottleneck. We built InboxIQ to remove it, one carrier template at a time.

HALO IQ

Underwrite and deliver the proposal in one file.

Submissions, mods, and proposals for PEO operators and brokers, without the spreadsheet handoff.

Start free

Was this article helpful?

Don’t forget to share this post!

HALO IQ

HALO IQ is the operating system for PEO underwriting, proposals, and broker placements.

Insights

The library behind the blog

Open insights