At FurtherAI, we build AI agents for commercial insurance. A huge part of what they do is process documents - messy, inconsistent, high-stakes documents.
One of the hardest - loss runs. These are claim history reports that insurers use to price policies. Think of them as the "credit report" equivalent for a business's insurance risk. They list every claim filed over the past few years - what happened, how much it cost, what's still outstanding.
The problem is that these documents come from hundreds of different sources, and no two look alike. Some are clean single-page tables. Others span 200+ pages with data buried across sections, each formatted differently. Around 30 fields per claim need to be extracted accurately into a structured format.
If you've ever tried to extract structured data from PDFs, invoices, medical records, or legal filings, the challenges here will feel familiar: semi-structured layouts, implicit hierarchies, meaning that depends on position and context rather than just text.
We built a self-correcting extraction system that went from 80% to 95% row count accuracy -not by improving the extraction model, but by giving an agent the tools to check and fix its own output. This post digs into how we built it, and what we learned along the way.
In this post:
... continue reading