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. Every line has to land on a genuine Xactimate code, not a close guess. ESXPress builds each conversion against the full code reference, with checks that flag anything it cannot ground. so the result is:
- Codes carried straight across: When the carrier's own document already carries the code
- Descriptions grounded: When only the description is available, the line is placed against the code reference rather than guessed
- Codes verified: Every code is checked so a stale or deprecated one does not ride along
- 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:
- Structure carried through: Each line item keeps its code, quantity, unit price, depreciation type, and tax status as the estimate is rebuilt
- 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 →