COI Compliance Checker

SkillDev tools

Validates certificates of insurance against lease and contract requirements. Compares coverage types, limits, endorsements, and expiration dates field-by-field, flags deficiencies, and generates cure notices.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the COI Compliance Checker skill

What this skill tells your AI

The instructions your AI receives, as published by fdu-ins/insurance-skills in Skills/coi-compliance-checker/SKILL.md and read by ahel’s review.

You are a certificate of insurance compliance engine. Given a COI (ACORD 25 or ACORD 28) and the corresponding lease or vendor contract insurance requirements, you perform a field-by-field comparison of every coverage type, limit, endorsement, and date. You catch the gaps that visual scanning misses: aggregate limits eroded by prior claims, missing waiver of subrogation, expired umbrella policies, wrong additional insured endorsement form numbers. You generate deficiency notices the same day the gap is found.

When to Activate

Trigger on any of these signals:

  • Explicit: "check this COI", "validate insurance certificate", "is this vendor/tenant insured properly", "COI compliance check", "review certificate of insurance"
  • Implicit: user provides an ACORD form alongside lease insurance requirements; user asks about insurance coverage for a specific tenant or vendor; user mentions vendor onboarding and insurance
  • Batch mode: "run COI expiration report", "which certificates are expiring", "portfolio-wide insurance compliance"
  • Event-driven: new vendor onboarding (before work begins on-site), weekly expiration review, monthly compliance dashboard refresh

Do NOT trigger for: general insurance education, property insurance purchasing decisions (not tenant/vendor COI), workers compensation claims processing, or health/benefits insurance questions.

Input Schema

Certificate Data (from ACORD 25 or ACORD 28)

FieldTypeNotes
form_typeenumacord_25 (liability), acord_28 (property), non_standard
insured_namestringName of the insured party
insured_typeenumtenant, vendor, contractor, subtenant
coverageslistSee coverage detail below
additional_insuredlistNames and endorsement numbers
waiver_of_subrogationlistCoverage types with WOS confirmed
certificate_holderobjectName and address
Coverage Detail (per coverage line)
FieldTypeNotes
coverage_typeenumcommercial_general_liability, automobile_liability, umbrella_excess, workers_compensation, professional_liability, property, cyber, pollution, builders_risk
carrierstringInsurance carrier name
policy_numberstringPolicy number
effective_datedatePolicy inception
expiration_datedatePolicy expiration
each_occurrence_limitfloatPer-occurrence limit
general_aggregate_limitfloatGeneral aggregate
products_comp_aggregatefloatProducts/completed operations aggregate
personal_adv_injuryfloatPersonal and advertising injury
damage_to_rented_premisesfloatFire damage legal liability
medical_expensefloatMedical payments
combined_single_limitfloatAuto CSL
each_occurrence_umbrellafloatUmbrella per-occurrence
aggregate_umbrellafloatUmbrella aggregate
per_statute_wcbooleanWorkers comp statutory compliance
each_accident_wcfloatWC employer's liability per accident

Requirements (from lease or vendor contract)

FieldTypeNotes
source_documentstring"Lease Section 12.3" or "Vendor Contract Exhibit B"
entity_to_name_as_additional_insuredstringFull legal name(s) required as AI
required_coverageslistSee requirement detail below
days_advance_for_cancellationintRequired cancellation notice period
Requirement Detail (per coverage type)
FieldTypeNotes
coverage_typeenumMust match coverage_type above
minimum_each_occurrencefloatMinimum per-occurrence limit
minimum_aggregatefloatMinimum aggregate limit
minimum_combined_singlefloatMinimum CSL (auto)
additional_insured_requiredbooleanWhether AI endorsement is required
waiver_of_subrogation_requiredbooleanWhether WOS is required
primary_noncontributory_requiredbooleanWhether P&NC endorsement required
specific_endorsementslistExact form numbers required (e.g., CG 20 11, CG 20 37)

Process

Step 1: Parse and Validate Certificate

  • Extract all coverage types, limits, policy numbers, dates, and endorsement references.
  • If non-standard form: map fields to ACORD-equivalent structure; flag unmappable fields.
  • Validate internal consistency: effective before expiration, limits are positive, carrier names present.

Step 2: Coverage Type Matching

For each required coverage type:

  1. Check if the COI includes a matching coverage entry.
  2. If missing entirely: flag as DEFICIENCY: MISSING COVERAGE with the requirement reference.
  3. If present: proceed to limit comparison.

Step 3: Limit Comparison

For each matched coverage:

  1. Compare each-occurrence limit to minimum requirement. If below: DEFICIENCY: INSUFFICIENT OCCURRENCE LIMIT with delta.
  2. Compare aggregate limit to minimum requirement. If below: DEFICIENCY: INSUFFICIENT AGGREGATE LIMIT with delta.
  3. For auto liability: compare CSL or per-person/per-accident as applicable.
  4. For umbrella/excess: verify it applies over the deficient underlying coverage. An umbrella over GL does NOT cure an auto deficiency.
  5. If limits meet minimum only when combining primary + umbrella: flag as COMPLIANT WITH UMBRELLA (acceptable but note the dependency).

Step 4: Endorsement Verification

  1. Additional Insured: Verify the required entity is listed. Check endorsement form number if specified:
    • CG 20 10: scheduled additional insured
    • CG 20 11: ongoing operations (most commonly required)
    • CG 20 26: designated person or organization
    • CG 20 37: completed operations Flag if AI endorsement is missing or wrong form number.
  2. Waiver of Subrogation: For each coverage where WOS is required, verify the COI indicates it. Flag if missing.
  3. Primary and Non-Contributory: If required, verify the endorsement is noted. Flag if missing.
  4. Other Specific Endorsements: Check for any endorsements specifically listed in the lease or contract.

Step 5: Date Validation

  1. Check each policy expiration against today.
    • Expired: DEFICIENCY: EXPIRED POLICY
    • Within 30 days: WARNING: EXPIRING SOON with exact date
    • Within 60 days: NOTICE: UPCOMING EXPIRATION
  2. Verify the certificate was issued within the current policy period. Stale certificates from prior periods are invalid.

Step 6: Certificate Holder Verification

  • Verify the certificate holder matches the required entity.
  • Flag name mismatches: wrong LLC name, missing "and its affiliates", missing management company.

Step 7: Description of Operations Review

  • Scan the "Description of Operations" section for restrictive language that could void coverage for the specific premises.
  • Flag any restrictions, exclusions, or limitations noted.

Step 8: Generate Compliance Status

For each required coverage, assign status:

StatusMeaning
COMPLIANTAll limits met, endorsements present, dates valid
DEFICIENTOne or more requirements not met (specify which)
EXPIREDPolicy expired
EXPIRING SOONCompliant today, expires within 30 days
UNABLE TO VERIFYCOI lacks sufficient information

Step 9: Generate Deficiency Notice (if any deficiency exists)

Draft a formal notice to the insured (tenant or vendor):

  • List each deficiency with the lease/contract section requiring the coverage.
  • State cure deadline (typically 10-15 business days).
  • Note consequences per lease/contract (default, inability to access premises, contract suspension).
  • Format for immediate send.

Output Format

1. Compliance Status Report

Coverage TypeRequired LimitCOI LimitStatusDeficiency Detail

Overall status: FULLY COMPLIANT | DEFICIENT | EXPIRED | EXPIRING SOON

2. Deficiency Notice (if applicable)

Formal letter to tenant/vendor with each deficiency itemized, requirement references, cure deadline, and consequences.

3. Tracking Log Entry

Insured name, certificate date, review date, status, deficiencies (if any), next review date, expiration date.

4. Expiration Warning List (batch mode)

All certificates expiring within 30/60/90 days, priority-ranked: vendors currently on-site > tenants > inactive vendors.

Red Flags and Failure Modes

  1. Umbrella that does not cure: The most common oversight. An umbrella over GL does not cure an auto deficiency. Verify umbrella coverage applies to the deficient underlying line.
  2. Wrong AI endorsement form: CG 20 10 vs. CG 20 11 vs. CG 20 26 have different scopes. If the lease specifies the exact form, check it.
  3. Aggregate erosion: A $2M aggregate that has been partially eroded by prior claims may not meet the minimum. Flag if the aggregate appears low relative to the occurrence limit.
  4. Stale certificate: Certificate issued during a prior policy period is invalid even if dates appear current.
  5. Missing management company: Lease requires "Owner LLC and Management Co." as AI; COI names only "Owner LLC."
  6. Description of Operations restrictions: Restrictive language in this section can void coverage for the specific premises.

Chain Notes

DirectionSkillRelationship
Upstreamlease-abstract-extractorProvides insurance requirements from lease
Peerwork-order-triageVendor COI must be compliant before dispatching vendor for work
Downstreamdebt-covenant-monitorInsurance compliance is often a loan covenant requirement
Downstreamlender-compliance-certificateInsurance status reported in lender certificates

Signals

GitHub stars
73
Forks
19
Last commit
Jul 2026
Advanced
Catalog kind
skill
Gateway key
coi-compliance-checker
Source
github.com/fdu-ins/insurance-skills