Every roofing contractor knows the pain: a 40-page carrier estimate arrives as a PDF, and someone has to manually type every line item into Xactimate. It's slow, error-prone, and eats into the margin on every claim.
ESXPress solves this with a multi-stage pipeline that converts PDFs to valid Xactimate ESX files in roughly two minutes. Here's exactly how it works — from raw PDF to import-ready ESX.
The 5-Stage Pipeline
Stage 1: PDF Parsing
The first challenge is extracting raw text from PDFs — and carrier estimates are notoriously inconsistent. Some are digitally generated (text-selectable), while others are scanned images requiring OCR. ESXPress handles both:
- Digital PDFs: Direct text extraction using PyMuPDF with layout preservation — critical for maintaining the table structure of line-item rows
- Scanned PDFs: Tesseract OCR with preprocessing (deskew, threshold, noise removal) to handle the low-quality scans that field adjusters often produce
- Hybrid PDFs: Mixed-mode processing — OCR where needed, direct extraction where possible
The output is a structured representation of every line item: description, quantity, unit, unit price, depreciation, and tax status.
Stage 2: AI-Powered Line-Item Extraction
Raw text isn't enough — carrier estimates format line items in wildly different ways. Some use tables, others use indented lists, and some mix the two. ESXPress uses an LLM with a purpose-built extraction prompt that:
- Identifies the estimate boundary (where line items begin and end)
- Parses each line into structured fields: SEL code, description, quantity, unit price, RCV, ACV, depreciation
- Flags ambiguous items for human review
- Extracts claim metadata: claim number, date of loss, policy number, insured name
Why AI matters: Traditional regex/rule-based extraction fails on the variety of carrier formats. AI understands context — it knows that "R&R 30 SQ" means "Remove and Replace 30 squares of roofing" even when the carrier abbreviates differently across documents.
Stage 3: SEL Code Resolution
This is where accuracy makes or breaks the conversion. Each extracted line item must be matched to a valid Xactimate SEL code that exists in the target price list. ESXPress's SEL engine covers 18,054 Xactimate SEL codes backed by a full priced component catalog, with automated verification that flags anything it can't resolve — enabling:
- Exact matching: When the carrier includes the SEL code in the PDF (ideal case)
- Semantic matching: When only the description is available — AI maps natural language descriptions to the closest SEL code using embedding-based similarity
- Price validation: Each matched code is verified against the current price list to catch stale or deprecated codes
- Category inference: Line items without codes are categorized (roofing, gutters, interior, etc.) to narrow the search space
Stage 4: ESX File Construction
With all line items resolved, ESXPress builds a valid ESX file conforming to the Xactimate specification:
- XML construction: Each line item becomes an XML element with all required attributes (itemId, calc type, SEL code, quantity, unit price, depreciation type, tax status)
- Metadata injection: Price list ID, tax jurisdiction, claim information, and estimate-level settings (overhead percentage, profit percentage, tax rate)
- Structure assembly: Required sections assembled in Xactimate's expected order for maximum compatibility with Xactimate desktop
Stage 5: Export & Verification
Before the ESX file reaches you, ESXPress runs a verification pass:
- Structure validation: Verifies the project-file structure (archive integrity, required sections, document rules)
- Schema compliance: Checks that every required field is present on every line item
- Price list consistency: Confirms all SEL codes exist in the selected price list
- Tax calculation: Validates tax jurisdiction and rate application
Only after all checks pass is the file made available for download.
Real-World Performance
The numbers below reflect representative conversion times (Aug 2026) — actual conversion time and accuracy vary with PDF quality, format, and line-item complexity. What doesn't vary: every generated file must pass automated verification and structure checks before it is available for download.
| Estimate Type | Conversion Time | Typical First-Pass Accuracy (Illustrative) |
|---|---|---|
| Digital carrier estimate (State Farm) | Minutes | 97-99% |
| Digital carrier estimate (Allstate) | ~1-2 minutes | 95-98% |
| Scanned estimate (OCR required) | ~2.5 minutes | 90-95% |
| Mixed digital + scanned | Minutes | 92-96% |
Why Automation Matters for Your Bottom Line
Manual ESX entry can cost roofing contractors tens of thousands of dollars per year in labor alone — for illustration, roughly $15,000-$40,000 per year at typical hourly rates depending on claim volume — and that's before accounting for the revenue lost from line items that get missed or mis-entered. Automated conversion isn't just faster; it's more accurate and more profitable.
Try ESXPress free for 14 days — upload your first estimate now →