Skip to main content

Extract data from certificates of insurance

A Certificate of Insurance is the document a vendor sends a counterparty to prove that the vendor carries insurance coverage. The form most US companies use is ACORD 25 (the standardized layout maintained by ACORD, the insurance-industry standards body), though variations exist for marine, aviation, and international coverage. The certificate names the insured (the vendor), the certificate holder (the counterparty receiving the proof), the producer (the insurance broker), and the insurers (often three or four separate carriers, each covering a different policy line such as General Liability, Auto Liability, Workers Compensation, and Umbrella Excess). Each policy line carries its own policy number, effective date, expiration date, coverage limits, and an indicator for whether the certificate holder is named as an Additional Insured. Procurement, risk management, and vendor compliance teams collect, review, and renew these certificates on a continuous cycle to keep the vendor base compliant under master service agreements and contractor agreements. The hard parts are the policy table. ACORD 25 packs four to seven policy lines into a small table on a single page, each row with abbreviated coverage type (GL, AL, WC, UMB), policy number, effective/expiration dates, and a limits column that mixes per-occurrence and aggregate values stacked vertically. NAIC codes appear as small integers next to each insurer's name. Description of Operations is a free-text block that often contains the specific contract reference, the named additional insureds, and any waiver of subrogation language. Schedule of forms and endorsements (the small print on the back) modifies what each policy actually covers and which entities are protected. Certificate holders track all of this for every active vendor, and the renewal cycle drives the workload because expiration dates are rolling. Talonic extracts the full certificate structure: every policy line as a row, every limit as a typed numeric value, every insurer with its NAIC code, the producer and insured, the certificate holder, the description of operations block, and any waiver indicators. Effective and expiration dates surface as ISO 8601 dates so a renewal calendar can be built directly from the data. Every cell carries a confidence score and a pixel-region pointer so the compliance officer can verify a limit or an additional-insured flag against the source ACORD 25 before approving the vendor.

What gets extracted from certificates of insurance

ProducerMarsh & McLennan Agency LLC
InsuredGoodwin Retail Co.The vendor with the policies
Certificate Holder1200 Market Holdings LLC
Insurer (per policy)Chubb / NAIC 22667
Coverage TypeGeneral LiabilityGL, AL, WC, UMB, etc.
Policy NumberGL-2026-44892-NA
Effective Date2026-01-01
Expiration Date2027-01-01
Limit Amount$2,000,000Per occurrence or aggregate
Description of OperationsCertificate holder is named Additional Insured per CG 20 10

How extraction works for certificates of insurance

ACORD 25 is the most common Certificate of Insurance form, but each carrier and broker renders it slightly differently. Talonic classifies the certificate (ACORD 25, marine COI, aviation COI) and runs it through the CoI schema in the Field Registry, which encodes the producer, insured, certificate holder, insurer table, policy line table, and description of operations. Coverage types are normalized to a canonical set (GL, AL, WC, EXCESS, PROFESSIONAL, CYBER). NAIC codes are validated against the NAIC publicly available carrier list. Limit values are typed numerically and labeled (per occurrence, aggregate, products/completed operations). Effective and expiration dates are returned as ISO 8601 so a renewal alerting workflow can fire automatically as expirations approach. Per-cell confidence and pixel-region provenance follow DIN SPEC 91491 conformity, so a compliance officer can audit any policy line against the source ACORD 25 before approving the vendor for active engagement.

Sample extraction

A standard ACORD 25 with General Liability, Auto Liability, and Workers Comp coverage

{
  "producer_name": "Marsh & McLennan Agency LLC",
  "insured_name": "Goodwin Retail Co.",
  "insured_address": "88 Commerce Way, Portland, ME 04101",
  "certificate_holder_name": "1200 Market Holdings LLC",
  "certificate_holder_address": "1200 Market Street, San Francisco, CA 94102",
  "issue_date": "2026-01-08",
  "insurers": [
    {
      "letter": "A",
      "name": "Chubb Insurance Co. of NJ",
      "naic_code": "22667"
    },
    {
      "letter": "B",
      "name": "Liberty Mutual Insurance",
      "naic_code": "23043"
    }
  ],
  "policies": [
    {
      "insurer_letter": "A",
      "coverage_type": "General Liability",
      "policy_number": "GL-2026-44892-NA",
      "effective_date": "2026-01-01",
      "expiration_date": "2027-01-01",
      "limits": [
        {
          "limit_type": "Per Occurrence",
          "limit_amount": 2000000
        },
        {
          "limit_type": "General Aggregate",
          "limit_amount": 4000000
        }
      ]
    },
    {
      "insurer_letter": "A",
      "coverage_type": "Auto Liability",
      "policy_number": "AL-2026-11203-NA",
      "effective_date": "2026-01-01",
      "expiration_date": "2027-01-01",
      "limits": [
        {
          "limit_type": "Combined Single Limit",
          "limit_amount": 1000000
        }
      ]
    },
    {
      "insurer_letter": "B",
      "coverage_type": "Workers Compensation",
      "policy_number": "WC-2026-77891-ME",
      "effective_date": "2026-01-01",
      "expiration_date": "2027-01-01",
      "limits": [
        {
          "limit_type": "Each Accident",
          "limit_amount": 1000000
        }
      ]
    }
  ],
  "description_of_operations": "1200 Market Holdings LLC is named Additional Insured per attached CG 20 10."
}

Frequently asked

Does it handle ACORD 25, ACORD 27 (property), and ACORD 28 (commercial property)?

Yes. ACORD 25 (commercial liability) is the most common and most templated; ACORD 27 and 28 use related layouts with property-specific fields. The schema accommodates all three, with property-specific fields populated when present and left null when not applicable.

How are Additional Insured endorsements captured?

Additional Insured language sits in the Description of Operations block, often citing a specific endorsement form (e.g., CG 20 10, CG 20 37). Talonic preserves the text verbatim and also flags the certificate holder as an Additional Insured when the language is clearly present. Verification against the actual endorsement document remains a manual step.

What about Waiver of Subrogation?

A Waiver of Subrogation is typically called out in the Description of Operations or via an endorsement reference. The text is preserved and a waiver_indicator boolean is set per policy line when the language is unambiguous. Edge cases (conditional waivers, jurisdiction-specific exceptions) require manual review.

Are NAIC codes validated?

Yes. NAIC codes are 5-digit identifiers maintained by the National Association of Insurance Commissioners. Talonic validates each extracted NAIC code against the NAIC published carrier list; codes that do not match a current carrier are flagged in the confidence output for review.

Can it pull expiration dates into a renewal alerting workflow?

Yes. Each policy expiration is returned as an ISO 8601 date, suitable for direct ingestion into a renewal calendar or alert system. Compliance teams typically alert at 30, 60, and 90 days before expiration; the extraction provides the date inputs for that workflow.

Ready to extract from your own certificates of insurance?

Author note

Reviewed by Talonic engineering, insurance schema review · last reviewed 2026-05-11