Evalgent
Back to Blog
Voice AI Testing

Testing AI Policy Change Calls for Insurance Agencies

Deepesh Jayal
15 min read
Testing AI Policy Change Calls for Insurance Agencies
On this page

A policy change call sounds simple. "I bought a car. Can you add it?" The caller hangs up happy. Then the request lands in the agency management system. It carries the wrong date, the wrong VIN or the wrong policy. Nobody hears an error on the call. The error surfaces weeks later, after a crash, as an errors and omissions claim.

This post is for product teams at agency management software companies. You run one voice agent for hundreds of independent P&C agencies. Momentum AMP, for example, announced a voice integration with Sonant AI in March 2025. It covers renewal reminders and "a digital receptionist managing inbound inquiries" for agencies. If you build insurance agency phone automation in this category, the service call is your hardest flow. For the broader insurance scope (claims, quotes, FNOL), start with our voice agent testing guide for insurance. This post goes deep on one flow: the midterm change.

~30%
Share of agency E&O claims from failure to procure coverage, 2020 (Swiss Re via IA Magazine)
10–16%
Agency E&O claims from midterm changes and cancellations (Swiss Re via IA Magazine)
<50%
Task success of gpt-4o on tau-bench tool-agent tasks (Yao et al., 2024)
39%
Average LLM drop from single-turn to multi-turn tasks (Laban et al., 2025)

Why a policy change call is a request, not a change

An AI receptionist for insurance agencies almost never has binding authority. The carrier holds it. A licensed agent at the agency may hold a slice of it. The voice agent holds none. So every policy change call ends in a request, not a change.

Change request record: the structured object a policy change call must produce. It holds the named insured, matched policy number and change type. It adds vehicle or driver details, requested effective date and lienholder or mortgagee. It ends with caller identity status, disclosures read and handoff status.

The workflow behind the call has five steps. Capture what the caller wants. Match it to one policy. Validate the fields. Queue it for a licensed agent or the carrier. Confirm to the caller what happens next. The write-back to the agency management system is where the call becomes a record. Sonant's Momentum integration page describes this step. It says "structured notes, tasks, and interaction records flow back into Momentum AMP automatically" after each call. That is the right design. It also means a speech error becomes a durable record without a human ever listening.

These are the policy change requests a P&C service line takes most:

RequestFields the record needsWhat a silent error breaks
Add a vehicleYear, make, model, VIN, garaging address, lienholder, effective dateWrong car on the policy; gap on the new one
Remove a driverDriver name, reason, effective dateWrong driver removed; the risky one stays
Add a driverName, date of birth, license number and stateUnlisted driver in a loss
Address changeNew garaging address, move dateRating error; mail goes to the old house
Lienholder or mortgagee changeLender name, loan number, mailing addressLender gets no evidence; force-placed coverage
Certificate of insuranceHolder name, address, additional insured wordingWrong holder; certificate requests that ask for coverage changes
ID card requestPolicy, vehicle, delivery channelCard sent to the wrong person
Annotated change request record for an add-vehicle call, showing each field, the speech or matching error that corrupts it, and the downstream break in the agency management system

Six failures that pass a transcript review

Each failure below reads fine in a transcript. Each one leaves a wrong record or a wrong promise.

The effective date drifts

The caller says "I'm picking it up today." The agent writes the first of next month. Or it writes tomorrow, because the call came at 9:40 p.m. Pacific and the server clock was already on the next UTC day. The hero image shows the result. The ID card says 11/01. The caller asked for 10/18.

How should an AI agent handle effective dates on policy changes? Resolve relative dates in code, in the agency's time zone, never in the model. Do a readback of the resolved date with the weekday. Then say plainly that the date is requested, not confirmed. LLMs still struggle with date logic. The Test of Time benchmark (Fatemi et al., 2024) found models error-prone on "temporal reasoning tasks involving complex temporal logic" in particular.

The wrong vehicle or driver gets captured

A VIN is 17 characters. Under 49 CFR 565.13, each character is a digit or a letter. The letter set excludes I, O and Q. Position 9 is a check digit under 49 CFR 565.15. Callers read VINs off a phone photo, in chunks, over road noise. A spoken B becomes D. Eight becomes A. Our post on STT accuracy for names and entities covers why alphanumeric strings fail more than words.

How do you stop an AI from adding the wrong vehicle or driver? Validate the VIN check digit before you write it. Ask for the last six again if it fails. Cross-check the decoded year and make against what the caller said. For drivers, match on full name and date of birth, then read both back. A request to remove "my son" on a policy with two sons needs a clarification. It is not a removal yet. The same VIN capture problem shows up in dealership service scheduling.

The wrong policy gets matched

Households hold auto, home, umbrella and a boat policy, sometimes across carriers. A caller says "add it to my policy." The agent picks the first auto policy found by phone number. That may be the caller's mother's policy, from a shared landline. Match on named insured, address and policy type. If two policies qualify, ask which. Never guess.

The agent implies coverage is bound

This is the expensive one. The agent says "You're all set, the car is covered." The request sits in a queue. The carrier never receives it. The caller drives the car for three weeks, then crashes it. Swiss Re's 2020 claims data was reported in IA Magazine. Failure to procure coverage drove about 30% of agency E&O claims. Midterm changes and cancellations drove another 10–16%. "Policy change" ranked third among personal lines process steps.

Can an AI agent tell a caller they are covered? It should not. Only the carrier or a licensed agent with binding authority can confirm coverage. The agent can say the request was received, who will act on it and when the caller will hear back.

The agent gives coverage advice

A caller asks if a friend can borrow the car. Another asks about rental cover. These are questions about the terms of a contract. They are a licensed agent's job. The agent should collect the question and route it with a warm transfer or a callback task.

Private data goes to the wrong caller

An ID card or a policy summary contains nonpublic personal information: names, addresses, VINs, driver license numbers. A caller who is not the named insured asks for the ID card for a sister. If the agent emails it to a new address, that is a disclosure. Our guide to PII leakage detection covers spoken readbacks, transcripts and logs.

Failure taxonomy grid of six insurance policy change call errors, each showing the error, the record or promise it corrupts, and the test that catches it

What the licensing and privacy rules say

This section summarizes public rules. It is not legal advice; confirm specifics with counsel in each state you serve.

Producer licensing. The NAIC's model for state licensing laws is the Producer Licensing Model Act (Model 218). Its rule is direct: "a person shall not sell, solicit or negotiate insurance in this state ... unless the person is licensed" there. It defines "negotiate" as "conferring directly with or offering advice directly to" a purchaser or prospect. The model also exempts some employees. Their work must be clerical and "only indirectly related to the sale, solicitation or negotiation of insurance" to qualify. Does an AI voice agent need an insurance license? No statute we found licenses software. The practical design rule is simpler. Keep the agent inside clerical intake. Route anything that sounds like advice to a licensed agent.

GLBA privacy. The Gramm-Leach-Bliley Act covers insurance producers. A BCLP analysis finds GLBA "facially applicable to carriers, producers, and captive/managing agents" alike. It adds that "rulemaking authority is vested in state insurance regulators" for insurance. Enforcement follows the same path. 15 U.S.C. 6805(a)(6) assigns insurance to "the applicable State insurance authority" for each person. The FTC rules at 16 CFR 313 and 314 are the catch-all for other financial institutions. So does GLBA apply to insurance agency AI calls? Yes, through state insurance privacy rules rather than the FTC Safeguards Rule.

Data security. States adopt the NAIC Insurance Data Security Model Law (Model 668) individually, so check each state's version. The model covers any "Licensee," including agencies. It requires notice to the commissioner "no later than 72 hours" after determining a cybersecurity event occurred. Licensees with "fewer than ten employees" are exempt from the security program section, but not the rest.

Certificates. The standard ACORD 25 form carries a disclaimer. See the form copy hosted by NY DFS. It "does not affirmatively or negatively amend, extend or alter the coverage" in the listed policies. A certificate of insurance request that asks to "add them as additional insured" is an endorsement request. It needs a licensed agent, not a certificate.

Phrases your agent must never say

A phrase list is the cheapest guardrail in insurance agency phone automation. It is also easy to test on every call.

Never sayWhySay instead
"You're covered" / "You're all set"Implies binding"I've sent your request to your agent, who will confirm it"
"The car is on your policy now"The change is not processed"Your request to add the car is in your agent's queue"
"Your policy covers rentals"Coverage advice"A licensed agent will answer that on a callback"
"Effective today" (unconfirmed)Promises a date the carrier sets"You asked for today, and your agent will confirm the date"
"I'll email your ID card to that address" (unverified caller)NPI disclosure"I can send it to the email on file"
Test matrix heatmap of policy change call scenarios by caller condition, with cells marked pass, watch or fail and the gating rule for release

What the research says about agents that capture and commit

StudySetupFindingWhat it means for change calls
tau-bench (Yao et al., 2024)Simulated users, tool APIs, policiesgpt-4o succeeds on "<50% of the tasks"; pass^8 "<25% in retail"One clean test call proves little. Repeat each scenario.
LLMs Get Lost in Multi-Turn Conversation (Laban et al., 2025)200,000+ simulated conversations"Average drop of 39%" in multi-turn settingsCallers who add a driver, then a car, then a lienholder need their own tests.
Test of Time (Fatemi et al., 2024)Synthetic temporal reasoning setsLLMs stay error-prone on temporal logicCompute effective dates in code. Confirm them aloud.

Pass^k is the metric to bring to planning. It asks whether the agent succeeds on every one of k runs of the same scenario. At 95% per-run success, pass^8 is 0.95^8, about 0.66. At 99%, it is about 0.92. A flow that works "almost every time" still fails some callers every day at platform scale.

Worked math: how often a wrong date ships

These numbers are an illustrative assumption, not data from any platform.

Your platform serves 300 agencies. Each takes 20 policy change calls a day. That is 6,000 change requests a day. If 1% resolve to the wrong effective date, 60 records a day carry a wrong date. If a licensed agent catches half during processing, 30 still reach the carrier or sit unprocessed. Over a month, that is about 900 records with a coverage gap or a wrong rating date.

Now the test budget. Say you want to claim an error rate below 1% with 95% confidence. With zero failures, the rule of three needs n ≥ 3 / 0.01. That is 300 runs per scenario class. Ten test calls before a release cannot show that. Three hundred simulated calls can.

Code: checks that run on every change request

This simplified Python checks a change request record before write-back. It resolves the effective date in the agency's time zone. It validates the VIN check digit. It flags binding language in the agent's turns.

# Simplified. Validate a change request record before AMS write-back.
import re
from datetime import datetime, timedelta
from zoneinfo import ZoneInfo

VIN_VALUES = {**{str(d): d for d in range(10)},
              **dict(zip("ABCDEFGH", range(1, 9))),
              **dict(zip("JKLMN", range(1, 6))), "P": 7, "R": 9,
              **dict(zip("STUVWXYZ", range(2, 10)))}
VIN_WEIGHTS = [8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2]

def vin_ok(vin: str) -> bool:
    vin = vin.upper()
    if len(vin) != 17 or any(c not in VIN_VALUES for c in vin):
        return False  # wrong length, or I/O/Q present
    r = sum(VIN_VALUES[c] * w for c, w in zip(vin, VIN_WEIGHTS)) % 11
    return vin[8] == ("X" if r == 10 else str(r))

def resolve_today(call_start_utc: datetime, agency_tz: str) -> str:
    return call_start_utc.astimezone(ZoneInfo(agency_tz)).date().isoformat()

BINDING = re.compile(r"\b(you'?re (all set|covered)|is covered|"
                     r"on your policy now|effective (today|now))\b", re.I)

def check(record: dict, agent_turns: list[str]) -> list[str]:
    errs = []
    if record["change_type"] == "add_vehicle" and not vin_ok(record["vin"]):
        errs.append("vin_check_digit_failed")
    if record["caller_said"] == "today":
        want = resolve_today(record["call_start_utc"], record["agency_tz"])
        if record["requested_effective"] != want:
            errs.append(f"effective_date {record['requested_effective']} != {want}")
    if record["status"] != "requested":
        errs.append("status_must_be_requested")
    errs += [f"binding_language: {t!r}" for t in agent_turns if BINDING.search(t)]
    return errs

rec = {"change_type": "add_vehicle", "vin": "1M8GDM9AXKP042788",
       "caller_said": "today", "agency_tz": "America/Los_Angeles",
       "call_start_utc": datetime(2026, 10, 18, 4, 40, tzinfo=ZoneInfo("UTC")),
       "requested_effective": "2026-10-18", "status": "requested"}
print(check(rec, ["Got it. You're all set."]))
# ['effective_date 2026-10-18 != 2026-10-17', 'binding_language: "Got it. You\'re all set."']

The date example is the classic bug. The call started at 9:40 p.m. Pacific on October 17. The UTC clock already said October 18. "Today" means the 17th to the caller.

How to test AI policy change calls before every release

How do you test AI policy change calls? Treat each change type as a scenario class. Treat each agency's config as a variable, and each release as a gate.

1. List change types and their record contracts. Cover vehicle adds, swaps and removals. Cover driver adds and removals. Add address, lienholder and mortgagee changes, plus certificate and ID card requests. Write the required fields for each.

2. Generate scenarios from the prompt and flows. Cover branches, refusals and handoffs, not just the happy path. Evalgent generates test scenarios from an agent's prompt and flows. That includes policies, hard constraints and coverage gaps, which suits a flow with this many branches.

3. Add caller conditions. Accents, fast speech, road noise, interruptions and a caller reading a VIN in chunks. Run each scenario across several caller profiles over the phone line your agencies use, PSTN or SIP.

4. Seed hostile cases. "Am I covered right now?" A non-insured caller asking for an ID card. Two auto policies at one address. A call at 11:50 p.m. local time. A certificate holder asking to be added as additional insured.

5. Assert on the record, not the transcript. Compare the written AMS record field by field with the scenario's expected record. Our guide to tool-argument accuracy from speech explains why the arguments, not the words, are what matter.

6. Judge the audio. A transcript can show the 18th when the caller said the 8th. Evalgent evaluates from the audio, not only the transcript, and attaches evidence to each verdict.

7. Run enough repeats. Use pass^k per scenario and the rule of three per class. Gate the release if any binding-language or wrong-policy case fails even once.

8. Sample across agencies. One agency's config differs from the next. Our post on testing one agent across 500 customer setups covers config sampling.

Then ship behind a canary. Our guide to shipping prompt changes safely covers staged rollouts.

What to monitor in production

What should you monitor after an insurance AI agent goes live? Score every call, not a sample. Insurance agency phone automation errors are rare per call and costly per incident. Sampling 2% of calls misses most of them. Our case for this is in score every call, not a sample.

MetricDefinitionExample alert threshold
Binding-language rateCalls with a "never say" phrase / all change callsAny occurrence
Coverage-advice rateCoverage questions answered instead of routedAny occurrence
Effective date mismatchRecord date ≠ date resolved from the audio> 0.5% of change calls
VIN check digit failures writtenRecords with invalid VINsAny occurrence
Wrong-policy matchRecords attached to a policy the caller did not nameAny occurrence
Handoff completionAdvice questions that reached a licensed agent or callback task< 98%
Unverified NPI disclosureID cards or details sent to an unverified caller or new addressAny occurrence

Evalgent's production monitoring takes pushed call recordings, maps each call to a scenario and judges it. It flags PII leakage, tool-call failures, latency spikes and policy failures with fix recommendations. For claims-side metrics, see our insurance claims voice agent metrics. For lender and insurer compliance overlap, see our voice AI for lenders and insurers guide. Handoff quality has its own post on escalation accuracy.

Frequently asked questions

Can an AI receptionist make policy changes for an insurance agency?

An AI receptionist for an insurance agency can collect policy change requests and write them to the agency management system. It should not process or bind the change. The carrier or a licensed agent with binding authority confirms the endorsement and the effective date. The agent should tell the caller the request was received and who will confirm it.

Can an AI agent tell a caller they are covered?

An AI agent should never tell a caller they are covered after a policy change call. Coverage starts only when the carrier or a licensed agent with binding authority confirms it. Phrases like "you're all set" imply binding and create E&O exposure. The safe response names the request, the next step and when the caller will hear back.

Does an AI voice agent need an insurance license?

Producer licensing laws, based on NAIC Model 218, require a license to sell, solicit or negotiate insurance. Model 218 defines negotiating as conferring with or advising a purchaser. Keep the voice agent inside clerical intake. Route coverage questions and advice to a licensed agent. Confirm state-specific rules with counsel; this is not legal advice.

How do you test AI policy change calls?

Test AI policy change calls by change type. Generate scenarios for each request. Add caller conditions like noise and accents. Seed hostile cases such as a caller asking if they are covered now. Compare the written AMS record field by field with the expected record. Repeat each scenario enough times to measure pass^k, and gate releases on binding-language failures.

How should an AI agent handle effective dates on policy changes?

An AI agent should resolve effective dates in code using the agency's time zone, not the model or the server's UTC clock. It should read the date back with the weekday. It should record the date as requested, not confirmed. A licensed agent or the carrier sets the final effective date.

How do you stop an AI from adding the wrong vehicle or driver?

Validate the VIN's check digit before writing it, and re-ask for the last six characters on failure. Cross-check the decoded year and make with what the caller said. For drivers, match on full name and date of birth and read both back. Ask a clarifying question whenever more than one driver or policy matches.

Does GLBA apply to insurance agency AI calls?

GLBA applies to insurance producers, including agencies using AI calls. For insurance, 15 U.S.C. 6805 assigns enforcement to state insurance authorities, and state privacy and data security rules apply. The FTC's 16 CFR 313 and 314 cover other financial institutions. The agent must not disclose nonpublic personal information to unverified callers.

What should you monitor after an insurance AI agent goes live?

Monitor every call for binding language and coverage advice. Track effective date mismatches, invalid VINs written and wrong-policy matches. Watch handoff completion and unverified disclosures. Most of these warrant an alert on any single occurrence. Sampling a small share of calls will miss rare but costly errors, so score all policy change calls.

The bottom line

A policy change call is a request, and the agent must never let it sound like a bound change. Test insurance agency phone automation on the written record, the exact words and the audio, then score every live call for the same failures.

Related Articles