Here is a pattern any underwriting operations leader will recognize. Your team runs excess and umbrella submissions through automated extraction. On the ACORD 131, the named insured keeps coming back as the broker agency — because the producer’s name sits in bold at the top of the form and the model latches onto it. A reviewer fixes it. The next Summit Logistics renewal arrives, and the same field is wrong again. Same mistake, same fix, next week, next quarter, forever.

That is extraction drift in its most expensive form: not a model that gets worse, but a model that never gets better. Corrections are made, value is delivered for that one document, and then the knowledge evaporates. The reviewer’s expertise never makes it back into the system. Multiply one recurring field error across thousands of submissions a year and you are paying for the same correction over and over.

InsightXtract is built to break that cycle. Corrections are not throwaway edits — they are training signal. The platform aggregates them, lets the extraction agent propose concrete configuration changes to address them, and then routes every proposal through a human approval and an automated validation gate before anything reaches production. The result is a genuinely self-improving pipeline where each correction makes the next correction less likely.

The improvement loop, end to end

The core idea is a closed loop. A reviewer corrects a field and, critically, records why. Those reasons accumulate into a feedback set. The agent analyzes the feedback and proposes targeted changes to its own configuration — a sharper field prompt here, a clearer class description there, a new post-processing rule to resolve a recurring conflict. A human reviews the proposal, approves or rejects it, and on approval the platform publishes a new agent version. Before that version can be promoted to production, it must pass validation. Only then does it go live.

flowchart LR
    A["Reviewer correction
(field + reason)"] --> B["Aggregate feedback
across submissions"] B --> C["Agent proposes
config changes"] C --> D{"Reviewer
approves?"} D -- "Reject" --> C D -- "Approve" --> E["Publish new
agent version"] E --> F["VALIDATE
feedback set, then
golden baselines"] F -- "Pass" --> G["Promote to
production"] F -- "Fail" --> C G -.->|"fewer corrections
next cycle"| A

Notice the dotted line back to the start. That is the whole point: a promoted version means the next batch of Summit Logistics renewals should not reproduce the named-insured error, so the reviewer never has to touch it again. The loop tightens with every cycle.

What a correction actually captures

A correction in InsightXtract is more than an overwritten cell. When a reviewer changes a value, the platform records the field, the old value, the new value, the source document and page, and — the part that makes improvement possible — a short structured reason. “This is the producer, not the insured” is a very different signal from “OCR misread the digit.” The first is a systematic error the agent can fix by changing its instructions; the second is noise. Separating the two is what lets the agent propose changes that actually generalize.

InsightXtract console — Reviewer correcting the named_insured field on an ACORD 131, entering the old value (broker agency), the corrected value (the insured), and a reason code
The review screen — a correction captures old value, new value, source page, and a structured reason, turning a one-off fix into reusable signal.

What the agent proposes — three real P&C examples

Aggregated feedback is where drift becomes actionable. When the agent sees the same reason attached to the same field across many documents, it drafts a specific, reviewable change. These are not vague “retrain the model” suggestions — they are edits to the artifacts your team already owns: field prompts, class descriptions, and post-processing rules.

1. A tightened field prompt for named_insured

The named-insured-versus-broker error is a classic prompt problem. The agent proposes replacing the generic instruction with one that encodes the reviewers’ own reasoning about ACORD 131 layout.

Current field prompt

named_insured: “Extract the name of the insured party from the form.”

Suggested field prompt

named_insured: “Take the First Named Insured from the ACORD 131 Applicant / Named Insured block. Do not use the Producer or Agency name in the top-right block — that is the broker, not the insured.”

2. A class-description clarification so ACORD 131 vs ACORD 125 route correctly

Some drift is upstream of extraction — it is a routing problem. If ACORD 125 (Commercial Insurance Application) and ACORD 131 (Umbrella/Excess) are being confused, every downstream field inherits the wrong spec. Reviewers flagging “wrong document class” drive the agent to sharpen the class descriptions that the router reads.

# suggested change to the ACORD 131 document-class description class: acord_131_umbrella_excess - description: "ACORD commercial application form." + description: "ACORD 131 Umbrella/Excess Liability section. Identify by the + 'Umbrella / Excess' title and the underlying-limits schedule. Distinct from + ACORD 125, which carries the general applicant/business detail and has no + underlying-limits schedule."

3. A post-processing rule for premium conflict resolution

On a real submission the total premium often appears in more than one place — a broker’s cover email might quote a target premium of $148,000 while the ACORD states an annual premium of $152,500. Reviewers consistently keep the ACORD figure. The agent proposes encoding that precedence as a deterministic rule, so the conflict is resolved the same way every time rather than left to the model’s judgment.

# suggested post-processing rule rule: resolve_total_premium_conflict when: multiple sources for field 'total_premium' prefer: acord.annual_premium > broker_email.target_premium reason: ACORD is the bound figure; email target is pre-negotiation.
InsightXtract console — The Agent Tuning suggestions panel showing a current suggested diff for the named_insured field prompt, with Approve and Reject actions
Agent Tuning — each proposal is a reviewable current→suggested diff tied to the feedback that motivated it, with one-click Approve or Reject.

The validation gate: feedback set first, then golden baselines

Approval alone does not promote a change. A well-intentioned prompt edit can fix one field and quietly break three others. That is why every proposed version runs through a two-stage validation gate before it can be promoted — and the order of the two stages is deliberate.

flowchart TD
    V["New agent version
(approved)"] --> F["Stage 1 - FEEDBACK SET
Re-run the exact documents
reviewers corrected"] F --> FQ{"Did the corrected
errors stop recurring?"} FQ -- "No" --> R["Reject / send back
the change did not fix it"] FQ -- "Yes" --> G["Stage 2 - GOLDEN BASELINES
Re-run the trusted
reference submissions"] G --> GQ{"Any regression
vs. known-good output?"} GQ -- "Regression" --> R GQ -- "Clean" --> P["Promote to production"]

Stage one runs the feedback set first — the exact documents whose corrections motivated the change. This answers the only question that justified the change in the first place: did the fix actually work? Take the Summit Logistics excess-casualty submission that first surfaced the named-insured error. The new version re-runs that document; if named_insured now resolves to the insured rather than the broker agency, stage one passes. If it does not, there is no point checking anything else — the change is rejected and sent back for revision.

Stage two runs the golden baselines — a curated set of trusted reference submissions with known-good, human-verified output. This catches collateral damage: the premium-conflict rule must not, for instance, start discarding legitimate email-only premiums on monoline accounts that have no ACORD. Only a version that both fixes the reported errors and introduces no regressions earns promotion. Running feedback first and baselines second means you never waste a full regression pass on a change that did not even solve its own problem.

InsightXtract console — The validation gate results view Stage 1 (feedback set) passing on the Summit Logistics submission, then Stage 2 (golden baselines) showing zero regressions, with the Promote button enabled
The validation gate — feedback set passes first (corrections resolved), then golden baselines confirm no regressions; only then does Promote unlock.

Governance: reviewer-approved, versioned, auditable

Self-improvement without governance is just an agent editing itself in the dark. InsightXtract deliberately keeps a human in the loop at the decision point. The agent may propose, but a reviewer disposes — every configuration change is explicitly approved or rejected by a named person, and that decision is recorded alongside the diff and the feedback that motivated it.

Because each promotion produces a discrete, numbered agent version, you always know which version of the configuration produced any given extraction. If an auditor or a downstream dispute asks “why did the system read the premium this way in March?”, you can point to the exact version, the rule that was active, the person who approved it, and the validation run that cleared it. Nothing is silent and nothing is anonymous.

Why the loop is safe to run

The agent never changes itself unilaterally. Proposals are human-approved, versions are immutable and numbered, and no version reaches production without passing the feedback set and the golden baselines. Improvement is continuous; risk is contained.

InsightXtract console — The published agent version detail version number, changelog of the three promoted changes, approver name and timestamp, and the validation run that cleared it
The published version — a numbered, immutable snapshot with its changelog, approver, and passing validation run, ready to reproduce any historical extraction.

Why this matters to the business

  • Fewer touches per submission, over time. Each recurring error, once fixed at the configuration level, stops arriving in the review queue — so effort per submission trends down instead of staying flat.
  • Institutional knowledge is captured, not lost. When a seasoned reviewer knows the First Named Insured lives in a specific ACORD 131 block, that knowledge becomes a durable prompt — it survives them moving teams or leaving the company.
  • Change you can defend. Every improvement is approved by a person, tied to the evidence that justified it, and proven safe by a validation run before it ships.
  • Compounding returns. Corrections are an asset, not a cost. The more your team reviews, the smarter the agent gets, and the less there is to review.