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 with layout preservation — critical for maintaining the table structure of line-item rows
- Scanned PDFs: 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 AI-powered extraction 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 Xactimate SEL codes backed by the full code reference, with automated checks that flag 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 — natural language descriptions are matched to the closest SEL code
- Price validation: Each matched code is validated 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 resolve before export
- Tax calculation: Validates tax jurisdiction and rate application
Only after all checks pass is the file made available for download.
Real-World Performance
The times below are representative — actual conversion time and accuracy vary with PDF quality, format, and line-item complexity. What doesn't vary: every generated file passes automated verification and structure checks before it is available for download.
| Estimate Type | Conversion Time |
|---|---|
| Digital carrier estimate (State Farm) | Minutes |
| Digital carrier estimate (Allstate) | ~1-2 minutes |
| Scanned estimate (OCR required) | ~2.5 minutes |
| Mixed digital + scanned | Minutes |
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.
Related: the PDF to ESX walkthrough and the ESX file explainer.
See the PDF to ESX converter, or try ESXPress free for 14 days — upload your first estimate now →