The problem with template-based OCR
Most invoice OCR systems on the market - including the engines powering Restaurant365, MarginEdge, and legacy AP automation tools - rely on template matching. For each vendor, an engineer (or the tool's "onboarding team") builds a template: "The invoice number is in a box at coordinates (x, y). The vendor name sits above the line-items table. The subtotal lives three rows above the tax line."
This works great until it doesn't. Sysco redesigns their invoice layout? Template breaks. US Foods switches to a new format in April? Template breaks. A regional distributor you've never seen before sends their first PDF? No template exists at all - the invoice sits in a manual review queue for hours.
In our production data across real multi-location clients, about 15% of invoices break template-based systems in a given month - either because the vendor changed format, the scan quality is poor, or it's a vendor the system has never seen.
The NexosIQ approach: three-pass adaptive extraction
NexosIQ doesn't use templates. It uses a three-pass adaptive pipelinethat gets more aggressive as needed. Every invoice, no matter how poorly scanned or how novel the vendor, goes through the same flow:
Standard extraction
NexosIQ's vision model with our domain-tuned prompt. We send the invoice image + a structured JSON schema and ask for the fields we need. Most invoices are resolved here and never need a second pass.
High-contrast retry
When confidence drops below threshold, we run the image through a preprocessing pass - binary high-contrast, then extreme enhancement - to deal with faded thermal receipts, poor lighting, or low-resolution scans. Same model, same prompt, different image. Another 5% resolves here.
Extended reasoning mode
For the final holdouts, NexosIQ escalates to an extended reasoning mode with 8,000 reasoning tokens. The pass takes longer, but it reasons through ambiguous fields (is that smudge a 6 or an 8? is this a line item or a subtotal?) and returns a more considered answer. This catches nearly every remaining case.
The pipeline is cost-aware. Pass 1 is the cheapest; Pass 3 uses 3-5× the tokens. We only escalate when needed, so 92% of invoices cost the same as a single first-pass call, and only the hard 3% pay the extended reasoning premium.
How we talk about accuracy
"99% accuracy" is the number every vendor in this category quotes, and it is close to meaningless without the method behind it. It can mean field-level (the vendor name matched) or invoice-level (every field on the document was right), measured against a labelled set or against nothing at all.
We are not going to quote one. Here is what the system actually does instead, all of which you can observe in your own account:
- Every field carries a confidence score. The extraction returns per-field confidence, not one number for the document, so you can see which value the model was unsure about rather than being told the page was 99% correct.
- Low-confidence documents escalate automatically. Pass 2 re-reads with high-contrast preprocessing, pass 3 with extended reasoning. The escalation is driven by the score, not by a human noticing.
- Nothing posts without a person. Extracted values land in a review state. An invoice reaches your books because someone accepted it.
On published accuracy figures. A number is only worth printing if there is a labelled ground-truth set behind it that gets re-scored on every pipeline change. We are building that. Until it exists and has been run, this page describes the mechanism and leaves the percentage off, which is the honest version of a claim every competitor makes without one.
Per-tenant learning (NexosIQ Learn)
Beyond the three-pass extraction pipeline, NexosIQ Learn sits on top. Every invoice from a given vendor gets embedded into a high-dimension vector space and indexed per-tenant. When a new invoice from that vendor arrives, NexosIQ retrieves the most similar past invoices and injects them into the extraction prompt as few-shot context.
The practical effect: your 10th invoice from a vendor extracts more accurately than your 1st, because the model has seen your specific vendor's quirks. And because each tenant has an isolated vector store, a Korean restaurant's NexosIQ gets sharp at Korean food distributors; a construction company's gets sharp at lumber suppliers. No cross-contamination.
When NexosIQ is not the right tool
Honest section. NexosIQ is not the best choice if:
- You only need offline, on-premise processing. NexosIQ is a cloud SaaS - documents are uploaded to our cloud infrastructure for extraction. If regulatory constraints require invoice data to never leave your network, we're not the right fit (yet).
- You process fewer than 10 invoices a month. Our pricing starts at $399/location/month. For a single freelancer, a consumer receipt app is cheaper.
- Your invoices are extremely adversarial (handwritten, multi-language, degraded to near-unreadable). We handle these better than template OCR does, but "handle" still means occasional human review. Nobody's perfect at those.
The trade-offs we're open about
Every engineering decision has a cost. Here's where ours sit:
- Latency: Pass 3 (extended reasoning) takes 15-30 seconds for a single invoice. Most of our throughput is under 60s end-to-end, but the tail can hit 2 minutes for the 1% of documents that need the deepest reasoning pass.
- Compute cost: We spend more per invoice than a template-based system because we're running a full vision-language model instead of matching coordinates. We offset this with a Batch API path for enterprise bulk historical imports (50% discount, 24h turnaround).
- Vendor-library assumption: NexosIQ Learn works best when a tenant scans a vendor multiple times. For truly one-off invoices with no prior context, we're essentially relying on the 3-pass pipeline alone - which still beats templates, but without the per-vendor lift.
For engineers: the architecture
NexosIQ runs on a proprietary vision pipeline with adaptive model escalation across three passes. Embeddings use a dedicated vector API backing a per-tenant vector index. Orchestration runs on autoscaling container compute. The full Partner API spec is published at nexospos.com/openapi.yaml (OpenAPI 3.1) if you want to integrate.
Corrections welcome
This is a technical paper. If the numbers in the comparison table don't match your own benchmarks, we want to know. Email mike@nexospos.com with your data and we'll update the paper with attribution.