Can AI Read Loss Runs? Carrier PDFs to Remarketing Summaries

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Can AI Read Loss Runs? Carrier PDFs to Remarketing Summaries.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Can AI Read Loss Runs? Carrier PDFs to Remarketing Summaries.

Yes, AI can read most carrier loss runs and turn them into a remarketing summary, but only as a first pass. It usually extracts claim lines well from text-based PDFs; scanned runs, odd layouts and reserves on open claims still need a person to check them before an underwriter sees the summary.

The reason most attempts disappoint is not reading ability. It is that a loss run is a snapshot with a valuation date, built differently by every carrier, and a summary that mixes paid and reserved money without saying so can mislead the market and your client. Treat the AI as a fast data-entry clerk who needs a supervisor.

Follow me on Instagram@sagnikteaches

What is actually printed on a loss run

A loss run is the carrier's list of claims against a policy over a period, valued at a stated date. Before asking any tool to read one, know the fields you want out of it, because the extraction prompt is only as good as that list.

Connect on LinkedInSagnik Bhattacharya
  • Policy block: carrier, policy number, line of cover, policy term (effective and expiry dates).
  • Valuation date: the "valued as of" date, usually in the header or footer. Every paid and reserve figure is true only on that date.
  • Claim lines: claim number, date of loss, date reported, status (open, closed, reopened), cause or description, and for casualty lines a claimant or injury code.
  • Money columns: paid indemnity, paid expense, outstanding reserve for indemnity, outstanding reserve for expense, total incurred (paid plus reserves), and sometimes recoveries or subrogation shown as negatives.
  • Totals row: often per policy term, sometimes per coverage, sometimes only at the very end of a multi-year run.

Names for these columns differ. One carrier says "Total Incurred", another "Gross Incurred", a third shows "Net of Recovery" beside it. A claim-level field called "Status" may be open, closed, or "closed, subject to reopen". Your prompt should tell the model to keep the carrier's column name next to your standard field name so a reviewer can trace each number back.

Subscribe on YouTube@sagnikteaches

Six ways a loss-run extraction goes wrong

Most failures fall into a handful of patterns, and knowing them tells you what the check step has to catch.

  • Scanned or photographed runs. Without a text layer, the tool relies on OCR (optical character recognition, which turns a picture of text into characters). Digits such as 3 and 8, or 1 and 7, are swapped often enough to matter. Treat scanned runs as needing a full line-by-line check.
  • Tables broken across pages. A claim that starts on one page and carries its expense line onto the next can be read as two claims, or a continuation line can be dropped.
  • Subtotals read as claims. A policy-year subtotal row sits in the same columns as a claim line. If the model includes it, your totals double.
  • Reserves treated as losses. An open claim with $35,000 reserved and $0 paid is an estimate, not money spent. Summaries that add the two without labelling are the most damaging error because the account looks worse, or occasionally better, than the carrier's own document.
  • Currency and sign conventions. Recoveries appear as negative paid amounts or in brackets. Models sometimes read "(2,400)" as 2,400.
  • Different valuation dates across carriers. Two runs valued four months apart cannot be added as though they were the same day.
The Complete Excel Course with AI Integration thumbnail

The Complete Excel Course with AI Integration

From formulas and pivot tables to Power Query, DAX, VBA and AI with Copilot, ChatGPT and Claude — hands-on from the first lesson.

By Sagnik Bhattacharya and Virginia Thorn, Primetime Emmy Award winner

Buy now

A five-year run for a craft brewery supplier, worked through

This is an illustration with made-up figures. Say a craft brewery supplier with 14 staff and six delivery vehicles is going to market. You hold loss runs from three carriers covering general liability, commercial auto and property across five policy years. Combined, the extraction produces 25 claim lines. Here is the table you want the assistant to build, after you have checked it against the originals.

Policy yearClaimsPaidOpen reservesTotal incurredLargest claim (incurred)
2021-226$18,400$0$18,400$7,900
2022-234$41,250$0$41,250$29,500
2023-247$22,100$0$22,100$6,300
2024-255$31,800$12,000$43,800$24,000
2025-26 (8 months)3$4,900$35,000$39,900$35,000 (open)
Total25$118,450$47,000$165,450

Now the sums an underwriter will do in their head. Frequency: 25 claims over four years and eight months is about 5.4 claims a year, or 4.5 a year if you annualise the partial year (3 claims in 8 months, 3 divided by 8 times 12). Average severity: $165,450 divided by 25 is $6,618 a claim, which looks alarming on its own. But three claims (the $29,500, the $24,000 and the open $35,000) make up $88,500, which is 53.5% of incurred. The other 22 claims average $3,498. That split is what the remarketing story is about: steady small frequency, plus three large losses with causes you can explain.

This is also why the table has an "open reserves" column. If the $35,000 reserve is later reduced by the carrier, the 2025-26 year improves; if it grows, it worsens. You cannot know which, and neither can the AI.

The extraction prompt that keeps the carrier's words

Upload one run at a time, as a text-based PDF where you can. Do not ask for the summary in the same step. Extract first, check, then summarise from the checked table.

You are extracting claim lines from one carrier loss run.
Return a table with one row per claim and these columns:
carrier, policy_number, line_of_cover, policy_effective, policy_expiry,
valuation_date, claim_number, date_of_loss, status,
paid_indemnity, paid_expense, reserve_indemnity, reserve_expense,
total_incurred, cause_as_printed, source_page.
Rules:
- Copy numbers exactly as printed. Do not round, net or recalculate.
- Do NOT include subtotal or total rows as claims. List them separately
  at the end as "printed totals" with their page numbers.
- A claim with no payment and no reserve is still a claim: keep it with zeros.
- Negative amounts or amounts in brackets are recoveries: keep the sign and
  add the word RECOVERY in a notes column.
- If a value is unreadable or missing, write UNCLEAR. Never guess.
- Ignore claimant names, addresses and injury details entirely.

Notice the two demands that carry most of the value: source_page lets a reviewer open the PDF at the right place in seconds, and the "printed totals" list gives you a built-in test. The sum of your extracted claim lines for each policy year should equal the carrier's printed total for that year.

Check the extraction before it becomes a summary

A check that takes ten minutes is the difference between a tool and a liability. Do these in order.

  1. Reconcile to the printed totals. For each policy term, add paid and reserves in the sheet and compare with the carrier's own totals. A mismatch of even $1 means a missing, duplicated or misread line.
  2. Count the claims. Count the rows on the run yourself (or use the claim count the carrier prints) and compare with the extracted count.
  3. Spot-check five lines. Pick the five largest incurred lines plus one random one. Open each at its source page and confirm date of loss, status and every money column.
  4. Read every open claim. Reserves are the carrier's estimate and they move. Confirm each open reserve, its status and the valuation date, and mark the table "reserves per carrier at valuation date, subject to change".
  5. Look for the quiet errors. Any UNCLEAR cells, recoveries that lost their sign, and the same claim number appearing under two lines of cover.

In a Sheet or Excel, the frequency and severity table needs only two formulas per cell, so do not ask the AI to calculate it for you. With the extraction on a sheet called Claims and a policy-year label inserted as a new column A (which pushes total_incurred from column N to column O), a count by year is =COUNTIFS(Claims!A:A,"2024-25") and incurred by year is =SUMIFS(Claims!O:O,Claims!A:A,"2024-25"). Arithmetic done by formulas can be audited; arithmetic done by a chat model cannot. If you want the wider habits, the ChatGPT and Excel guide covers prompting alongside spreadsheets.

Before and after: one claim line, as printed and as extracted

Here is the sort of line that catches people out, shown as an illustration. The carrier prints a food importer's cargo claim like this:

CL-88142  DOL 03/09/24  CLOSED  Water damage - container
Paid Ind 18,600.00  Paid Exp 1,150.00  Recovery (6,200.00)  Incurred 13,550.00

A careless extraction records paid as $19,750 and incurred as $19,750 because it dropped the bracketed recovery, or records the recovery as +$6,200 so incurred becomes $25,950. A correct extraction records paid indemnity $18,600, expense $1,150, recovery -$6,200 flagged RECOVERY, incurred $13,550. Your reconciliation to the printed policy-year total catches both mistakes immediately. For the remarketing summary, you also say in words that $6,200 came back through subrogation, because an underwriter reads net figures differently from gross ones.

Turning the checked table into the remarketing summary

Once the table is verified, a second prompt writes the narrative. Give it only the checked table plus the facts you know about the account, such as what changed after each large loss. Without that second input the model will invent explanations, so supply them yourself.

Using ONLY the checked claims table below and the account notes, write a one-page
remarketing summary for an underwriter. Include:
1. Period covered, carriers, valuation dates (list each).
2. Frequency by policy year and the annualised current-year rate.
3. Severity: average incurred, then the large losses (over $20,000) listed
   separately with cause and the corrective action from the account notes.
4. Open claims: list each with its reserve, labelled "carrier reserve at
   valuation date, may change".
5. Anything unusual (recoveries, reopened claims, claims closed without payment).
Do not say a trend is improving or worsening unless the numbers show it in
at least three consecutive years. Do not omit any claim. If a fact is not in the
table or the notes, write "not provided".

An illustrative output, which you would still edit, reads: "Five policy years, three carriers (general liability valued 14 September, auto valued 2 October, property valued 14 September). 25 claims, 4.5 a year on the current-year rate. Total incurred $165,450, of which $47,000 is carrier reserves on two open claims. Three claims over $20,000 account for 53.5% of incurred: a forklift damage claim in 2022-23 ($29,500, closed), a vehicle collision in 2024-25 ($24,000, paid; $12,000 reserved on a separate open auto claim) and an open property water-damage claim in 2025-26 ($35,000 reserve). The remaining 22 claims average $3,498."

What you fix: the valuation dates (the model must not merge them into one), the cause of each large loss from your own file, and whether the corrective actions you describe, such as fitting dash cameras after the collision, actually happened and when. Remove any adjective like "excellent" or "satisfactory" that the model adds. The numbers argue the case; a claim you cannot support does more harm than a candid one.

Three smaller accounts, three different problems

A kitchen fitter with workers' compensation. The run lists medical-only claims, indemnity claims and a closed-with-reopen claim. The usual trap is medical-only claims being counted as lost-time claims. Add a "claim type" column to the extraction so frequency can be reported both ways, and keep injury descriptions out of the upload.

A childcare nursery with liability and property. Few claims, small amounts, long runs of "no losses" pages. The risk here is the opposite: the model, given a run that says "No claims reported for this period", may return an empty table without stating the valuation date. Ask for a one-line "nil return" row with the date, so the summary can say "nil claims valued 30 June" rather than leave an unexplained gap.

A specialist food importer on a marine cargo policy. Claims arrive in several currencies and with recoveries. The prompt must say never to convert, and to keep the currency code beside each amount. Convert once, in the sheet, using a rate you choose and state in the summary.

Vendors that extract loss runs at scale

For high volumes, a few vendors build loss-run extraction into underwriting platforms. Checked on their own pages on 4 November 2026: Groundspeed's address now redirects to Insurance Quantified, which describes digitising submission documents into structured data for commercial property and casualty carriers and managing general agents. Inaza lists loss runs among the documents its platform turns into structured data, alongside ACORD forms and statements of values. FurtherAI presents an AI underwriting and claims platform for insurance and lists carriers, MGAs, brokers and reinsurers as its segments. None of these pages showed list prices, and all three are built around enterprise intake volumes, so expect a demo and a quote rather than a card payment.

For a broker handling a few dozen renewals a month, a business-plan assistant plus the checks above usually does the job. ChatGPT Business and Claude Team each list at $20 per user per month billed annually ($25 monthly), with a two-seat minimum, and business content is not used for training by default on either. Compare it with the time you spend: if the manual table takes 45 minutes per account and the checked AI route takes 15, a 40-account renewal season returns 20 hours. Those times are assumptions to replace with your own stopwatch. The cost picture for a whole brokerage is in the year-one cost breakdown.

A realistic mistake: two carriers, one claim

Picture a kitchen fitter who changed carriers mid-year. The outgoing carrier's run shows a van collision as closed at $9,800. The incoming carrier's run, covering the same calendar year, lists the same collision again as "prior carrier, reported for information" with a $0 reserve. The extraction treats both as claims, so the table shows 26 lines where the account really has 25, and frequency looks a claim worse than it is.

It showed up the way these errors do: the count check passed for each carrier separately, but a sort by date of loss put two lines next to each other with identical dates, causes and vehicle descriptions. The fix is one extra step before you merge carriers. Sort the combined table by date of loss and look for pairs within a day of each other with similar descriptions, then keep the line from the carrier that actually paid and note the other as an information entry. Put that note in the summary too, so an underwriter who spots both runs is not left wondering.

Reopened claims and late-reported claims

Two statuses change the story and are easy to flatten. A reopened claim was closed, then came back, often with a fresh reserve. If your extraction shows only "open", you lose the signal that this was a claim the account thought was over. Add a status value "reopened" and a notes column for the reopen date when the run provides one.

Late-reported claims show a gap between date of loss and date reported. Ask the model to calculate the gap in days only through a sheet formula (=F2-E2, with report date in F and loss date in E), then list any claim reported more than, say, 90 days late. An underwriter notices reporting lag as a sign of how well the insured manages incidents, so it is worth having an explanation ready.

Honest remarketing: what the summary must not do

An underwriter will open the carrier's own runs, so your summary cannot be a place to soften them. Keep these rules written on the template.

  • List every claim, including closed-without-payment ones, or give a count that matches the run.
  • Never subtract reserves, never describe a reserve as "expected to close at zero".
  • Keep explanations factual and dated. "Replaced the forklift operator's procedure in January 2023" is a fact you can document; "risk management is now excellent" is a claim you cannot.
  • Duties of disclosure differ by market and policy type. If you are unsure what an application requires you to state, ask your compliance lead or E&O adviser before the summary goes out.

Pair the loss story with the coverage side: comparing policy wordings at renewal is the natural next page of the same file, and the submission intake workflow shows where the remaining data fields go.

A rollout you can finish in two renewals

  1. Renewal one, trial on the side. Take one account you have already done by hand. Run the AI extraction and compare. Note every difference and why.
  2. Write your own check sheet. Turn the five checks above into a half-page checklist with a signature line for the person who verified the open reserves.
  3. Standardise the template. Fix the column names, the two prompts and the one-page summary layout so every account looks alike.
  4. Renewal two, live. Use the AI route for accounts under, say, 40 claims, and keep manual extraction for scanned runs and anything with more than three carriers until you trust the process.
  5. Review after ten accounts. Count how many extractions needed corrections and which carriers caused them. Those carriers go on a "check every line" list.

Related reading on the claims side of the business: handling claims enquiries with AI deals with live claims, while this tutorial deals with the history that drives pricing.

Loss-run questions brokers ask before trying this

Which AI tool should a small broker try first for loss runs?

Start with a business-plan chat assistant such as ChatGPT Business or Claude Team, using text-based PDFs and the extraction prompt in this tutorial. The extraction vendors named above are built mainly for carriers and MGAs, showed no prices on the pages checked and sell through demos, so they make sense only once you handle hundreds of runs a month.

Can I paste claimant names into the assistant?

Avoid it. A summary for remarketing needs claim numbers, dates, causes and amounts, not people's names or injury details. Redact or drop the claimant column before upload, use a business plan whose content is not used for training by default, and follow your agency's data-handling policy.

How old can a loss run be when I send it to a new market?

Each market sets its own window, and the windows vary widely. One commercial auto MGA's help page, for example, asks for runs valued within 30 days of the quote, while other markets accept older runs. Check each market's submission guidelines, and always show the valuation date on your summary so the underwriter knows how stale the open reserves are.

Should the summary include claims that closed without payment?

Yes, count them as claims with zero paid and show them separately from paid claims. Many carriers record incident-only or closed-without-payment entries, and underwriters see them on the original run. Leaving them out of your summary makes the frequency figure disagree with the document attached.

Further reads

Sources: Insurance Quantified (formerly Groundspeed), Inaza and FurtherAI home pages; OpenAI ChatGPT Business pricing page; Claude pricing page; one commercial auto MGA's help page on loss-run validity. Checked 4 November 2026.

Want loss runs turned into a repeatable renewal step?

On a 1:1 call we can look at the carriers you receive runs from, choose the extraction route that fits your volume, and set up the check step your team will actually follow.

Book a 1:1 call with me