Human-in-the-loop for insurance products
Someone owns the decline.
The adjuster or underwriter decides from their phone, inside their authority, and the record shows who it was.
How do insurance AI agents keep a human in the loop on claims decisions?
Pushary keeps a human in the loop on claims decisions made by insurance AI agents. It sends what the agent proposes to a named adjuster or underwriter. Put one Pushary call before the decline, the settlement or the pricing exception. The person answers on their phone, within their own authority. Your agent waits for that answer. If time runs out, the proposal does not run. Every answer is saved with the person and the time.
What needs a yes
The calls that should not be automatic
- declineClaim(claimId, reason)
- A decline is what a policyholder disputes, a regulator asks about and a court may one day read. Somebody has to own it by name.
- settle(claimId, amount)
- Settlement authority is already set in bands for each role. An agent has no band unless you give it one, and a settlement above the band is one nobody signed off.
- applyPricingException(quoteId, factor)
- Overriding a rating factor is where an unexplained model output turns into a fairness problem you have to justify later.
- requestIndependentMedicalExam(claimId)
- Sending a claimant to an examination has a real cost to that person. That makes it a decision rather than a workflow step.
The code
One call inside the step you already have
Wrap the action, not the whole agent. Everything the agent does that is safe keeps running without asking anyone.
npm i @pushary/serverimport { createPusharyServer } from "@pushary/server"
const px = createPusharyServer({ apiKey: process.env.PUSHARY_API_KEY! })
async function decideClaim(claim: Claim, assessment: Assessment) {
// Straightforward approvals inside authority settle without a person.
if (assessment.outcome === "approve" && assessment.amount <= claim.autoLimit) {
return settle(claim.id, assessment.amount)
}
const decision = await px.decisions.ask({
externalId: claim.adjusterId,
type: "select",
question: `Claim ${claim.reference}: model proposes ${assessment.outcome} at ${assessment.amount}. ${assessment.topReason}`,
options: ["Accept proposal", "Settle at a different amount", "Refer to senior adjuster"],
})
if (decision.value === "Accept proposal") return applyOutcome(claim, assessment)
return referOrAdjust(claim, decision.value)
}Who answers
The approver is not at a desk
The approver is an adjuster or underwriter who works inside an authority limit. Their day is calls, site visits and files. Nobody in insurance needs convincing: authority bands are how the business works. An agent has no authority, so every case it prepares waits for someone with a band. If that person must be at a desk, the bottleneck moves. Pushary reaches them by the id already on the claim.
How do we explain an AI-assisted decline to a regulator or a claimant?
Show that a person with the right authority made the decision, what they were shown, and when. That is a records question more than a model question, and most teams leave it until someone asks. Pushary saves each answer with the question exactly as the approver saw it, the option they chose, who they are and the time. You can export it. Whether your use counts as high-risk, and what that then requires of you, is a matter for your own counsel. Insurance pricing and risk assessment are where regulators have been most explicit. We would rather point you to the regulation than summarize it for you.
Worth reading: Regulation (EU) 2024/1689, the EU AI Act, on EUR-Lex.
Add it to your product. Your users never make a Pushary account or pay us.
FAQ
Questions, answered
Can we route by authority limit?
Does the claimant ever see Pushary?
What if the adjuster does not answer before an SLA runs out?
Can the approver settle at a different number?
Put a person on the step that needs one.
Connect a user once, ask with one call, and run the action only on a yes. Every answer is saved.
Start free