Insurance

Extract proof of insurance to structured JSON

An auto insurance ID card is the document a driver hands over at a traffic stop, a claims desk, or a lender's compliance check. It packs insurer, policy number, named insured, coverage dates, and vehicle details onto a pocket-sized card, and the layout changes with every carrier and every state. Most arrive as a phone photo or a back-office scan. Sensible converts proof of insurance into structured JSON for policy verification, claims intake, and lienholder tracking.

policy verification | claims intake | lienholder tracking

Validated JSON

Schema-enforced output; every field matches your contract

Source coordinates

Every value links back to page + bounding box for audit

Per-document pricing

Predictable cost. No token-volatility surprises

Trusted by teams turning documents into production data

What makes proof of insurance hard to extract

Every carrier prints its ID card differently, and every state mandates a different set of fields. The card is small, the inputs are often phone photos, and the values that matter most (VIN, policy number) are the ones OCR misreads first. Layout-based rules pin the fields that hold position on a given carrier's card; LLM parsing absorbs the layout you have never seen before.

01

Carrier and State Layout Variation

Progressive, GEICO, State Farm, and a regional mutual each arrange the card their own way, and each state mandates its own field set. There is no single grid to anchor to. LLM parsing reads whatever card it is handed; SenseML rules map the result to one consistent schema across every carrier.

02

Phone Photos and Scan Quality

Proof of insurance rarely arrives as a clean PDF. It comes in as a glare-streaked phone photo, a screenshot of a wallet app, a crooked desktop scan, or a fax. Hybrid extraction reads the degraded inputs and flags low-confidence fields for review rather than returning a plausible-looking guess.

03

VIN and Policy-Number OCR

A 17-character VIN and an alphanumeric policy number are the fields OCR gets wrong most, because a misread 0/O or 5/S looks fine until verification fails downstream. Sensible applies format checks to these fields and returns null on the ones it can't read confidently, so a wrong VIN never passes silently into your records.

Managed services

Don't want to build it? We'll write your configs from your samples.

Solutions engineers handle plan, build, deploy, and adjust on your behalf. You see clean JSON in your API response. Same engine as self-serve, just with the configuration work outsourced.

What's included

01Plan.Engineers review your samples and pick the right method

02Build.SenseML configs written from your samples

03Deploy.Same engine as self-serve, ready for production

04Adjust.We update configs when formats shift or new edge cases appear

05Integrate.Help with custom integration into your downstream systems

Fields we extract

Every verification workflow maps the card to its own schema, so we build the config around your fields rather than a fixed list. These are the fields verification and claims teams pull most often; we map whatever else your intake workflow needs.

01

Policy & insurer

Insurer name, NAIC company code, policy number, policy effective date, policy expiration date, agent or issuing office, state of issue

02

Named insured

Named insured name, mailing address, additional insured or co-insured, lienholder or loss payee where listed on the card

03

Vehicle & term

Vehicle year, make, model, VIN, coverage effective and expiration dates, and one row per vehicle when the card covers more than one

config.json

SenseML

{ /* SenseML: proof of insurance extraction */
"fields": [
{
"method": {
"id": "queryGroup",
"queries": [
{ "id": "insurer", "description": "insurer name, insurance company, carrier" },
{ "id": "policy_number", "description": "policy number, policy no, policy #" },
{ "id": "named_insured", "description": "named insured, insured name, policyholder" },
{ "id": "vin", "description": "VIN, vehicle identification number, 17-character" }
// + vehicle and term fields, mapped to your schema
]
}
}
]
}

Supported card formats

Sensible processes proof of insurance across carriers, states, and capture methods. The extraction logic is explicit in SenseML, not buried in prompt tuning, so a new carrier layout can be configured in hours rather than waiting on a model to learn it.

By carrier and state

National carriers, regional mutuals, and state-mandated ID card layouts, including multi-vehicle cards and electronic proof-of-insurance formats

By capture method

PDF cards, phone photos, wallet-app screenshots, desktop scans, and faxed copies, front and back of the card

Common Questions

Answers about carrier and state layout support, reading phone photos and scans, and VIN and policy-number accuracy.

How does Sensible keep VIN and policy-number reads accurate?

A 17-character VIN and an alphanumeric policy number are the fields OCR gets wrong most, because a misread 0/O or 5/S looks fine until verification fails downstream. Sensible applies format checks to these fields and returns null on the ones it cannot read confidently, so a wrong VIN never passes silently into your records.

Can Sensible read phone photos and screenshots of insurance cards?

Yes. Proof of insurance rarely arrives as a clean PDF. It comes in as a glare-streaked phone photo, a wallet-app screenshot, a crooked scan, or a fax. Hybrid extraction reads the degraded inputs and flags low-confidence fields for review rather than returning a plausible-looking guess.

What fields does Sensible extract from proof of insurance?

Insurer, NAIC code, policy number, effective and expiration dates, named insured, lienholder or loss payee, and vehicle year, make, model, and VIN are all extracted, with one row per vehicle when the card covers more than one. Custom fields can be added in SenseML to match your verification schema.

Which proof of insurance carriers and formats does Sensible support?

Sensible processes auto insurance ID cards from national carriers, regional mutuals, and state-mandated layouts, including multi-vehicle cards and electronic proof-of-insurance formats. The extraction logic is explicit in SenseML, so a new carrier layout can be configured in hours rather than waiting on a model to learn it.

Start free

Turn your next proof of insurance into JSON.

Free 14-day trial. No credit card required. Start extracting in minutes.