coi-compliance-checker

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.

6 stars

Best use case

coi-compliance-checker is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

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.

Teams using coi-compliance-checker should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/coi-compliance-checker/SKILL.md --create-dirs "https://raw.githubusercontent.com/mariourquia/cre-skills-plugin/main/src/skills/coi-compliance-checker/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/coi-compliance-checker/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How coi-compliance-checker Compares

Feature / Agentcoi-compliance-checkerStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

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.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# COI Compliance Checker

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)

| Field | Type | Notes |
|---|---|---|
| `form_type` | enum | acord_25 (liability), acord_28 (property), non_standard |
| `insured_name` | string | Name of the insured party |
| `insured_type` | enum | tenant, vendor, contractor, subtenant |
| `coverages` | list | See coverage detail below |
| `additional_insured` | list | Names and endorsement numbers |
| `waiver_of_subrogation` | list | Coverage types with WOS confirmed |
| `certificate_holder` | object | Name and address |

#### Coverage Detail (per coverage line)

| Field | Type | Notes |
|---|---|---|
| `coverage_type` | enum | commercial_general_liability, automobile_liability, umbrella_excess, workers_compensation, professional_liability, property, cyber, pollution, builders_risk |
| `carrier` | string | Insurance carrier name |
| `policy_number` | string | Policy number |
| `effective_date` | date | Policy inception |
| `expiration_date` | date | Policy expiration |
| `each_occurrence_limit` | float | Per-occurrence limit |
| `general_aggregate_limit` | float | General aggregate |
| `products_comp_aggregate` | float | Products/completed operations aggregate |
| `personal_adv_injury` | float | Personal and advertising injury |
| `damage_to_rented_premises` | float | Fire damage legal liability |
| `medical_expense` | float | Medical payments |
| `combined_single_limit` | float | Auto CSL |
| `each_occurrence_umbrella` | float | Umbrella per-occurrence |
| `aggregate_umbrella` | float | Umbrella aggregate |
| `per_statute_wc` | boolean | Workers comp statutory compliance |
| `each_accident_wc` | float | WC employer's liability per accident |

### Requirements (from lease or vendor contract)

| Field | Type | Notes |
|---|---|---|
| `source_document` | string | "Lease Section 12.3" or "Vendor Contract Exhibit B" |
| `entity_to_name_as_additional_insured` | string | Full legal name(s) required as AI |
| `required_coverages` | list | See requirement detail below |
| `days_advance_for_cancellation` | int | Required cancellation notice period |

#### Requirement Detail (per coverage type)

| Field | Type | Notes |
|---|---|---|
| `coverage_type` | enum | Must match coverage_type above |
| `minimum_each_occurrence` | float | Minimum per-occurrence limit |
| `minimum_aggregate` | float | Minimum aggregate limit |
| `minimum_combined_single` | float | Minimum CSL (auto) |
| `additional_insured_required` | boolean | Whether AI endorsement is required |
| `waiver_of_subrogation_required` | boolean | Whether WOS is required |
| `primary_noncontributory_required` | boolean | Whether P&NC endorsement required |
| `specific_endorsements` | list | Exact 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:

| Status | Meaning |
|---|---|
| `COMPLIANT` | All limits met, endorsements present, dates valid |
| `DEFICIENT` | One or more requirements not met (specify which) |
| `EXPIRED` | Policy expired |
| `EXPIRING SOON` | Compliant today, expires within 30 days |
| `UNABLE TO VERIFY` | COI 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 Type | Required Limit | COI Limit | Status | Deficiency 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

| Direction | Skill | Relationship |
|---|---|---|
| Upstream | lease-abstract-extractor | Provides insurance requirements from lease |
| Peer | work-order-triage | Vendor COI must be compliant before dispatching vendor for work |
| Downstream | debt-covenant-monitor | Insurance compliance is often a loan covenant requirement |
| Downstream | lender-compliance-certificate | Insurance status reported in lender certificates |

Related Skills

sec-reg-d-compliance

6
from mariourquia/cre-skills-plugin

SEC Regulation D compliance for CRE syndications: 506(b) vs 506(c) offering selection, accredited investor verification, Form D filing, state blue sky compliance, general solicitation rules, and substantive pre-existing relationship documentation.

lender-compliance-certificate

6
from mariourquia/cre-skills-plugin

Prepares quarterly lender compliance certificates using loan-specific financial metric definitions. Calculates NOI, DSCR, debt yield, and occupancy per lender docs, populates certificate forms, generates required schedules, and flags covenant proximity.

lease-compliance-auditor

6
from mariourquia/cre-skills-plugin

Unified lease administration compliance audit covering CAM reconciliation, percentage rent verification, insurance tracking, escalation audits, and environmental compliance. Quantifies revenue recovery opportunities with probability-weighted waterfall analysis. Triggers on 'audit lease compliance', 'CAM reconciliation', 'percentage rent audit', 'insurance certificates', or property disposition/refinancing prep.

fund-operations-compliance-dashboard

6
from mariourquia/cre-skills-plugin

Institutional fund management operations: regulatory compliance monitoring, fee calculations, capital account statements, subscription processing, AML/KYC, Form D filings, LPAC governance, and fund expense ratios. Triggers on 'fund compliance', 'capital account', 'management fee calc', 'LP subscription', 'Form D filing', 'LPAC meeting', 'investor reporting', or when given fund terms, committed capital, and investment activity.

compliance-regulatory-response-kit

6
from mariourquia/cre-skills-plugin

Building code violations, OSHA responses, ADA compliance, fire safety, environmental compliance during construction, entitlement tracking, community stakeholder communication. Triggers: code violation, OSHA, ADA, fire drill, environmental compliance, entitlement, community relations, inspection, certificate of occupancy, permit.

carbon-audit-compliance

6
from mariourquia/cre-skills-plugin

Conducts building-level carbon audit, benchmarks against local Building Performance Standards (NYC LL97, DC BEPS, Boston BERDO 2.0, Denver, Colorado, Maryland, St. Louis), calculates penalty exposure, evaluates compliance pathways, and produces compliance-vs-penalty NPV comparison. Includes green certification ROI analysis and GRESB improvement roadmap.

workout-playbook

6
from mariourquia/cre-skills-plugin

Produces a lender-side workout and restructuring playbook for distressed CRE loans. Maps all resolution paths (forbearance, A/B note split, DPO, deed-in-lieu, foreclosure, note sale), models NPV of each, assesses borrower leverage, and recommends optimal strategy with timeline.

Work Order Triage

6
from mariourquia/cre-skills-plugin

Classifies work order urgency from free-text descriptions, assigns priority (P1-P4) with SLA deadlines, estimates cost, checks lease responsibility, and routes to the correct approval path.

warehouse-to-exhibit-mapper

6
from mariourquia/cre-skills-plugin

Maps validated, warehouse-ready tabular datasets into deck-ready EXHIBIT specifications and slide inputs. Selects table vs. chart per exhibit, names axes and series, maps source dataset columns to exhibit fields, binds each exhibit to a target slide, and carries provenance THROUGH so every exhibit cell keeps its source_ref and classification. Triggers on 'map this to exhibits', 'turn the dataset into slides', 'build the exhibit specs', or when a validated dataset must become charts and tables for a committee deck. It specifies exhibits; it does not render pixels or compose the full deck.

vendor-invoice-validator

6
from mariourquia/cre-skills-plugin

Validates vendor invoices against contract terms, scope of work, and market rates. Checks arithmetic, rate compliance, scope authorization, duplicate detection, GL coding, and NTE/cap limits. Assigns APPROVED, APPROVED WITH FLAGS, or HOLD FOR REVIEW verdict.

variance-narrative-generator

6
from mariourquia/cre-skills-plugin

Generates ownership-ready variance narratives from budget-vs-actual reports. Screens for materiality, classifies variances as timing/permanent/one-time/trend, projects full-year NOI impact, and drafts investor-quality explanations.

transfer-document-preparer

6
from mariourquia/cre-skills-plugin

Prepare entity transfer documents, closing document packages, and assignment agreements for CRE acquisitions. Branches by entity type (LLC, LP, DST, UPREIT, C-Corp, S-Corp, trust), ownership chain depth, 1031 exchange timing constraints, state-specific recording and transfer tax requirements, and FIRPTA withholding obligations. Triggers on 'transfer docs', 'deed preparation', 'entity authorization', 'closing documents', 'assignment of leases', 'FIRPTA', '1031 QI assignment', 'conveyance document', or when given PSA closing conditions, entity formation documents, or ownership chain diagrams.