Skip to main content
DoneThat

AI Adoption GuideInsuranceUnderwrite

Straight-through processing for low-complexity risks

Agentic workflow auto-approves or declines routine risks using machine learning scores plus rules, routing only edge cases to underwriters.

Insurance processQuoteUnderwriteBindIssueBillServiceRenewClaim

By Don, DoneThat’s AI coach · updated

A quote or decline needs three cites, or it stays empty

Straight-through processing for low-complexity risks is a cited quote or a cited decline. It is not a bind, and it is not a silent score. The workflow may emit a quote or a decline only when it can name three things: the appetite rule that applied, the rating table vintage used to price, and the complexity band that placed the risk in the STP lane. If any of those three is missing, the output stays empty and the submission goes to an underwriter.

Empty is a valid result. Empty means the workflow must not pretend it decided. A blank decision with a complete referral packet is safer than a quote that cannot show which table priced it.

The score is an input, not a cite. Do not invent a score when the model or the scoring service returns nothing. Do not treat a missing score as a default in-appetite number. If the score is absent, the decision is empty even when the appetite rule and the table vintage are present.

Load appetite rules and the rating table before the model runs

Load the published appetite rules and the rating table first. Then score. Then cite. Then emit a quote, emit a decline, or leave the decision empty.

Load the current appetite rule set for the product, state, and occupancy before any model call. The rule identifier and effective date must be the ones the underwriting authority grid uses that day, not a cached copy from last quarter. Load the rating table the same way: product, jurisdiction, and vintage. Vintage is the published table version, not the word "latest." If the policy system or rating engine cannot return a vintage, stop. Do not quote.

Run the score only against that loaded context. Policy administration and rating stacks such as Guidewire, Duck Creek, Earnix, and Verisk are the usual systems of record for those rules, tables, and scores. Treat them as a class. The workflow has to read the rule id, the table vintage, and the complexity band, then write those values onto the decision record. Do not assume any of those systems auto-cites.

The complexity band is the one already produced by appetite and complexity triage. Do not invent a second, looser label at quote time. If triage said medium or high, STP does not run. ml-augmented indicative rating can supply the score and a draft rate. STP still has to attach the table vintage that rated it. A model rate without a table vintage is not a quote.

Emit only after all three cites are on the record:

  • Appetite rule: identifier, effective date, and the clause that matched (in or out).
  • Rating table vintage: table name, version or effective date, and jurisdiction.
  • Complexity band: band label and the triage run that produced it.

If the rule says out of appetite, the decline must cite that rule, the table vintage that would have applied, and the band. Do not auto-decline without those three. A decline without the table vintage is as incomplete as a quote without it. Referral is the path when a cite is missing.

The machine may quote. It may not bind.

STP stops at quote or decline. Bind is a different control. A cited quote does not become a policy because the workflow said yes. Bind still requires bind condition completeness validation: subjectivities, inspections, finance arrangements, and any human conditions the quote carried.

Treating STP as bind is the failure mode that appears after a quiet stretch of routine volume. Someone maps "auto-approve" in the workflow tool to "issue." That skip removes the underwriter's last look at exceptions and skips the completeness check. Auto-approve on this page means emit a cited quote or a cited decline. It does not mean issue, invoice, or send a binder.

If the quote is empty, there is nothing to bind. If the quote is cited, bind is a later step with its own gates. Do not wire the two together because the risk looked routine.

A BOP renewal that should have stayed empty

A three-location businessowners renewal lands in the STP queue. Occupancy is in appetite. Overnight triage tagged the complexity band as low. The model returns a score. The workflow drafts a quote.

The rating call comes back with a rate and no table vintage. The policy system shows a table name. It does not show a version or an effective date. The appetite rule is cited. The band is cited. The vintage is not.

The correct emit is empty. The submission goes to the underwriter with the two cites that exist, the missing vintage flagged, and no drafted premium presented as a decision. The underwriter can wait for rating to return a vintage, select the table by hand, or refer.

The wrong emit is a quote that fills vintage with "current," or with yesterday's version from a sidecar cache. That is inventing a cite. The other wrong emit is filling a missing score with a midpoint because this occupancy usually scores as routine. That is inventing a score. Both look like STP. Neither is.

This example is only here to show the empty path. It is not a measured result.

Exceptions stay with the underwriter

An exception is anything the three cites cannot cover: a referral flag from triage, a score the rules do not map, a subject occupancy, a limit above the STP cap, a prior-loss narrative, or a request to override appetite. The workflow does not clear those. It packages them.

The underwriter owns the exception. Ownership means they see the cites that did resolve, the empty fields that did not, and the reason STP stopped. The underwriter decision support briefing is the packet for that handoff: rule, vintage, band, score if one exists, and the gap. Do not pre-fill a decision in that packet. Do not put a recommended quote on an exception file as if STP had already decided.

If the underwriter later quotes or declines, they cite what they used. Their cite can differ from the overnight load. That is expected. STP does not silently restamp their decision as straight-through.

Authority grids stay where they are. STP does not raise anyone's limit. It only removes keystrokes on risks that already sit inside a published low-complexity band and can carry the three cites.

What to refuse even when the score looks clean

Refuse a quote that cannot name the rating table vintage, even when appetite and band are present. That is the quote with no table vintage. Premium without a vintage is not auditable and is not STP.

Refuse auto-decline when the appetite rule cannot be named, or when the band is missing, or when the table vintage is missing. A decline needs the same three cites as a quote.

Refuse any path that invents a score: an imputed midpoint, a copied score from a sister location, or a fallback to last year's score because the model is unavailable. If the score service is down, the decision is empty.

Refuse wiring STP output to issue, binder, or invoice. Quote and bind stay separate.

Refuse a second complexity label at quote time that upgrades a medium risk into the STP lane. Band comes from triage, once.

The ops lead's control is a gate, not a dashboard. Empty stays empty. Every emitted quote or decline carries the three cites. Every exception file names an underwriter. That is the job.

Is this worth automating for you?

Whether this pays back depends on how much time it takes your team today. Most teams estimate that from memory, and the estimate is usually wrong in one direction or the other. This one is rated high effort to implement, so the baseline matters more than usual.

DoneThat reconstructs where the time actually went, with no timers to forget, so you can measure the baseline before committing to a project and check the gain afterward.

Measure the baseline first