Delegated authority runs on data that arrives ugly. Every coverholder ships their own spreadsheet, in their own format, on their own schedule, and every file is a cell or a header away from the last. The work today turns skilled analysts into copy-paste operators and pushes useful underwriting insight weeks behind the position it describes.
Case Study, not Delivered Project.
How we'd approach this kind of problem. See delivered projects →
You probably have this problem if…
- The same person spends most of every cycle untangling spreadsheets before any underwriting or claims work can start.
- Different coverholders send files with different column names, different date formats, and different sheet structures.
- The same UMR appears as "BCH001-0047" in one file and "BCH0010047" in another, and VLOOKUP quietly fails.
- Orphan claims and arithmetic errors only surface when something downstream breaks.
- When oversight asks how an exception was spotted, the trail lives in someone's head or in a Slack message.
Any two of those is a strong signal. All of them and you are paying skilled people to do what should be a one-off engineering problem.
How the pattern works
Imagine a careful analyst who has seen every coverholder template you receive. They know that "GWP", "Gross Prem", and "Premium Written" all mean the same field, and they know your house rules for net, gross, and brokerage. When a new bordereaux lands they parse it, line it up against your system of record, mark every row that fails a check, and leave a written note for each decision. That is the system.
Five things have to work for it to be useful.
1. It accepts whatever the coverholder sends
Files arrive as xlsx, CSV, or PDF, often several per period, with merged title rows, premium and claims split across workbooks, and the occasional schedule embedded in a scanned page. Excel and CSV are read directly. PDFs run through a document AI parser. Mistral OCR, Reducto, and Azure Document Intelligence are all defensible choices. The system never asks the coverholder to change their format. Asking is what stalls every previous attempt.
2. It learns each coverholder's schema once, then reuses it
The hard part of bordereaux is not the data, it is the variability. A Lloyd's V5.2 schema exists and DDM now mandates it for new arrangements, but established coverholders rarely match. A language model is handed the header row and a handful of sample values, and maps each column to your standard schema. "MktRef" becomes umr. "From" and "Inception" both become inception_date. The mapping is saved against the coverholder and reused on every future file. If the template drifts the system flags it and remaps. That single choice keeps the running cost low and makes adding a new coverholder a small task.
3. It enforces deterministic rules on every row
Once the columns are mapped the work is arithmetic and rule enforcement. Required fields present. UMRs in the expected pattern. Inception before expiry. Net plus brokerage equal to gross within tolerance. Paid plus reserve equal to incurred. Currency codes valid. Transaction types from the allowed list. Each row gets pass, warning, or exception with a plain-English note. Running this in code rather than through a model means the same input always produces the same output, which is the bar oversight expects.
4. It reconciles against the system of record
Structured rows are matched against the carrier or broker's policy and claims systems. Exact UMR matches first. Where the key is malformed (extra hyphen, missing prefix, leading zero) fuzzy matching surfaces likely pairs for human review rather than silently linking or silently failing. Claims with no matching policy are tagged as orphans. Period-over-period diffs highlight new, removed, and materially changed policies.
5. It writes everything down
Every decision lands in an append-only audit log. Which file arrived when. Which mapping version applied. Every rule that fired, on which row, with which value. Every fuzzy match accepted or rejected, every human override. When a managing agent or Lloyd's oversight asks how an exception was identified, the trail is one query away and reads the same in two years as it does today.
Why this is safe for regulated work
Bordereaux are delegated authority data, and Lloyd's, the FCA, and managing agents all have a defensible interest in how it is handled. Four properties matter.
Can run entirely on your network. For carriers and brokers handling sensitive coverholder data, the whole pipeline deploys on-premise with an open-weight mapping model. Parsing, reconciliation, and storage all sit inside your perimeter. The pattern sits beside the Lloyd's Delegated Data Manager rather than replacing it, consuming what DDM publishes and pulling the long tail that does not yet flow through it.
Deterministic where it matters. The language model touches only the schema-mapping step, and only once per coverholder template. Every rule, every reconciliation check, every total runs in deterministic code, so the same input produces the same output, every time.
Version-aware. Mappings, rule packs, and reference data are versioned. Every record carries the version of the logic that produced it. When a rule changes you can replay history under the old, the new, or both, which matters the next time Lloyd's pushes a V5.2 update and you need to show what would have moved.
Audit trail by default. Every parse, mapping, flagged exception, and human decision is logged with timestamp and actor. The log is append-only and exportable. When oversight asks for evidence, you have it before the meeting starts.
The default stack
Two choices that matter most.
A small model for mapping, not a large one. The schema-mapping step is bounded and structured. Claude Haiku or an open-weight equivalent handle it accurately at a fraction of the cost of a flagship model.
Deterministic code for everything else. Rules, totals, reconciliation, and fuzzy matching are not LLM problems. Putting a model in that loop trades predictability for nothing, and the audit trail is only worth something if the same input produces the same output.
When this isn't the right fit
The pattern is powerful, but it is the wrong tool for some problems.
Your coverholders are already clean. If every arrangement submits to the current Lloyd's V5.2 schema through DDM and your downstream tooling already consumes that feed, the heavy lifting is done. The reconciliation and audit log still earn their place, but the value here is variability.
Volume is genuinely low. Below roughly two or three coverholders and a few hundred policies a month, an experienced analyst with a well-built spreadsheet template is faster and cheaper than a build. The break-even is the moment you start hiring a second person for the job.
The dispute is about interpretation. If what consumes time is judgement (which reading of a policy wording should apply, whether a loss is in or out of scope) the bottleneck is not document AI. The right intervention is a structured workflow for the human decision.
Your system of record cannot be queried. Reconciliation assumes you can read policies and claims out of your underwriting and claims platforms by API or replica. If the data is locked inside a closed system, that needs solving first.
What to expect
If this pattern fits your team
A Pare Audit is the way to find out whether it does, and what a delivery would look like in your situation. We spend a focused few days with you, look at the real bordereaux you receive, your system of record, and your oversight requirements, then come back with a written recommendation, a scoped build, and a costed plan.