Skip to content

Insurance / Compliance master - COI + rule engine + renewals

StageBuilding
StatusPartial
Design statusIn progress
Estimate4w (L+)
ConfidenceLow
LinearPIN-96 ↗ PIN-91 ↗ PIN-104 ↗
Linear statusBacklog
DesignDesign ↗
Linear epicFinancial Management & Reporting
ModuleBilling ↗

Priority: High · Route: /insurance

Scope

Central Insurance/Compliance system: a COI management page listing every project organization's certificates with revision history and compliance status, a rule-based compliance-check engine that flags policy violations, and a daily renewal-tracking job that escalates expiring coverage. (Source: PIN-96, PIN-91, PIN-104.)

Acceptance criteria

  • COI table per project: one row per organization, with latest revision #, compliance-status icon (compliant / non-compliant / expiring soon / no COI), GL & WC limits, expiry date
  • "Add COI" flow: select organization, set initial policy requirements
  • Revision history timeline per COI, with an "Add Revision" action
  • Document upload per COI triggers the compliance-check workflow
  • Rule engine compares each document's manually-entered limits/dates/endorsements against policy requirements (no AI/OCR yet) and flags: limit below minimum, missing endorsement, wording mismatch, expired, missing policy
  • Compliance status recalculates automatically whenever documents change
  • Daily renewal job sends escalating reminders at 30/10/3 days before expiry and marks documents Expired on the date
  • Dashboard "Expiring Soon" count

Conor's comments

This ties directly into Project Detail - Insurance (project COI tab). Should not be separate. COI/policy models

Notes

Schema only; no API or UI wired; subsumes insurance-era Incidents/Claims/Indemnity/COI

Open question for Conor

Confirm timing (Sep or later)

Reference

  • Linear: PIN-96 (COI management frontend page); PIN-91 (Compliance check service / rule engine); PIN-104 (Renewal tracking + expiration monitoring) — children of Insurance Compliance System epic PIN-7. Conor's note that the Project Insurance tab (PIN-59) "should not be separate" ties that ticket into this same master.