Skip to content

MGA Overview

OpenInsure is purpose-built for Managing General Agents. An MGA operates under delegated authority from one or more insurance carriers, meaning it can underwrite, bind, and service policies on the carrier’s behalf — within the limits of the Delegated Authority (DA) agreement.

This document describes how OpenInsure models the full MGA operational structure.

┌─────────────────────────────────────────┐
│ Carrier │
│ (issues paper, provides capacity) │
└──────────────────┬──────────────────────┘
│ DA Agreement
│ (limits, states, classes, aggregate)
┌──────────────────▼──────────────────────┐
│ MGA │
│ (OpenInsure org — manages programs) │
│ │
│ ┌──────────┐ ┌────────────────────┐ │
│ │ Programs │ │ UW Workbench │ │
│ │ (GL, Cyber│ │ (referral queue) │ │
│ │ E&O, WC) │ │ │ │
│ └──────────┘ └────────────────────┘ │
└──────────────────┬──────────────────────┘
│ Appointment
┌──────────────┼──────────────┐
▼ ▼ ▼
┌────────────┐ ┌──────────┐ ┌──────────────┐
│ Agency A │ │ Agency B │ │ Agency C │
│ (Producer) │ │ │ │ │
└────────────┘ └──────────┘ └──────────────┘

A Program is the core organizational unit. It defines the product being offered:

  • Line of business (GL, Cyber, E&O, WC, etc.)
  • Carrier and DA agreement
  • Eligible states
  • Rate table versions
  • Auto-bind thresholds (below which no human review is required)
  • Minimum and maximum policy terms
  • Permitted endorsement forms
Terminal window
POST /v1/programs
Authorization: Bearer <admin_token>
Content-Type: application/json
{
"name": "Commercial GL — Contractors",
"carrierId": "car_01J8...",
"daAgreementId": "da_01J8...",
"lineOfBusiness": "GL",
"eligibleStates": ["VT", "NH", "ME", "MA", "CT", "RI"],
"autoBindThreshold": 25000,
"rateTableId": "rt_gl_ne_v4",
"policyTermMonths": 12
}
Step 1 — Submission Created

A producer submits via the Producer Portal (web form), API (JSON), or by uploading an ACORD 125 PDF.

For PDF submissions, Workers AI (Llama 3) extracts structured data from the form. The extraction returns a confidence score between 0 and 1. Submissions with confidence below 0.85 are flagged for producer verification before rating.

Terminal window
POST /v1/submissions
Content-Type: multipart/form-data
file=@acord125.pdf
programId=prog_gl_contractors
Step 2 — Automated Triage

Immediately after intake, the triage engine runs:

  1. Coverage eligibility — Is the NAICS code permitted in this program?
  2. State eligibility — Is the risk state in the DA agreement?
  3. Prohibited class check — Is the insured in a globally excluded class (e.g., firearms, cannabis)?
  4. Sanctions screening — OFAC/SDN list check on the insured name and address.
  5. Duplicate detection — Is there an open submission or active policy for the same insured?

Triage results are returned in the submission record:

{
"triage": {
"eligible": true,
"flags": [
{
"code": "PRIOR_SUBMISSION",
"severity": "INFO",
"message": "Open submission from 45 days ago"
}
]
}
}
Step 3 — Rating

If triage passes, the submission is rated automatically. The premium, factor breakdown, and quote expiration are returned. If the premium is below the auto-bind threshold, the producer can bind immediately without underwriter review.

Step 4 — Underwriter Review (if required)

Submissions above the auto-bind threshold, in referral states, or with loss history flags are placed in the Underwriting Workbench queue. An underwriter reviews the risk, may apply schedule rating adjustments, and either approves for binding or declines.

Step 5 — Bind

The producer (or underwriter) binds the submission. The system enforces DA limits in real time. On success:

  • Policy record created
  • Declarations page PDF generated
  • Billing schedule created
  • Producer confirmation email sent
  • Carrier notification queued

An MGA can have multiple carrier relationships, each with its own DA agreement. The carrier is selected at the program level — a GL program might run on Carrier A’s paper, while a Cyber program runs on Carrier B’s.

Terminal window
POST /v1/carriers
Authorization: Bearer <admin_token>
Content-Type: application/json
{
"name": "Summit Specialty Insurance",
"naicCode": "10234",
"amBestRating": "A-",
"contact": {
"technicalUW": "jennifer.wu@summitspec.com",
"claims": "claims@summitspec.com",
"compliance": "compliance@summitspec.com"
},
"remittanceDayOfMonth": 15,
"bordereauFrequency": "MONTHLY"
}

MGAs have contractual reporting obligations to their carriers. OpenInsure automates:

ReportFrequencyDelivery
Premium bordereauxMonthlyEmail attachment (CSV/Excel) + API
Claims bordereauxMonthlyEmail attachment + API
Aggregate DA utilizationMonthlyAPI / carrier portal
Loss runsQuarterlyPDF per carrier
Annual production summaryAnnualPDF

All reports are generated by the bordereaux module and can be previewed in the Admin Dashboard before delivery. See Bordereaux Automation for details.

Before a producer can submit business, they must be appointed:

  1. Create the agency record (POST /v1/producers).
  2. Upload license verification (the compliance engine checks license status via NIPR).
  3. Configure commission rates (by program).
  4. Issue API credentials (if the agency is integrating directly).
  5. Send portal invitation.
Terminal window
POST /v1/producers
Authorization: Bearer <admin_token>
Content-Type: application/json
{
"agencyName": "Mountain State Insurance Group",
"taxId": "12-3456789",
"licenseNumber": "VT-PC-0012345",
"licenseState": "VT",
"commissions": [
{ "programId": "prog_gl_contractors", "commissionRate": 0.10 }
]
}

The Admin Dashboard (/admin/analytics) provides real-time MGA KPIs:

Bound Premium (MTD/YTD)

Gross written premium broken down by program, producer, and state.

DA Utilization

Current aggregate GWP vs. DA limit, with burn rate projection.

Loss Ratio

Incurred losses / earned premium by program and cohort year.

Submission Conversion

Quote-to-bind ratio by producer, program, and submission channel.