TL;DR: A 24-person independent insurance brokerage in Atlanta places business with eleven carriers. Each pays commission on its own schedule, in its own format: three CSVs, five PDFs, two portal downloads, and one that still arrives in the post. The operations principal reconciles them against the agency management system by hand, four days a month. She checks the four largest carriers line by line and spot-checks the rest, because checking all 2,840 policy lines would take three weeks she does not have. An audit of a single quarter found $31,400 in commission underpaid and never queried. We designed a four-stage agent that parses every statement, matches each line against AMS360, flags variances above tolerance, and calculates producer splits. Running cost: $61 to $134 per month.
Eleven Carriers, Eleven Formats
Kathy is the operations principal. On the ninth of the month, the statements start arriving.
Two carriers email a CSV. One emails an Excel file with the totals in a merged cell at the bottom, which is a decision somebody made on purpose. Five send PDFs, one of which appears to have been photographed rather than exported. Two require logging into a portal, selecting a date range, and downloading.
And one still posts a printed statement. It arrives about a week after the others, and Kathy keys it in by hand. Nobody has ever asked them to stop.
She opens AMS360 on one monitor and the statements on the other. Policy number, premium collected, contracted rate, commission paid. Where the four agree, she moves on. Where they do not, she makes a note.
By day three she has worked through the four largest carriers, roughly 70% of the book. The remaining seven she spot-checks: the biggest accounts, anything unusual, anything a producer has already queried. Then she runs the producer splits, because commission is only half the job. Five producers, five different contracts, two of them with separate rates for new business and renewal.
On day four she closes the file and returns to the job she was hired to do.
Last spring a producer questioned a renewal commission on a commercial auto account. Kathy checked. The carrier had paid at 10% on a policy contracted at 12.5%. She queried it, they corrected it, and she went home wondering how long that had been going on.
So she asked the firm's accountant to audit one quarter properly. Not spot-checks. Every line.
$31,400 underpaid across 2,840 policy lines. Some of it was rate errors like the commercial auto account. Some of it was policies that renewed and never appeared on any statement at all. One carrier had been applying a 2023 rate schedule for fourteen months, which nobody had noticed because noticing would have required somebody to read fourteen months of statements in full.
None of it was fraud. All of it was arithmetic.
This is, when stated precisely, a business that audits its own revenue by sampling, on the working assumption that eleven separate companies are all calculating correctly, from rate schedules the brokerage cannot see, at a volume no single person can read. Kathy did not decide to leave 30% of the book unchecked. She got through seven carriers and ran out of month.

The Brokerage
Independent property and casualty brokerage in Atlanta, Georgia. Twenty-four employees: two principals, five producers, six account managers, four service representatives, three claims, two accounting, one marketing, one admin. $4.1M in annual commission revenue on roughly $27M of premium placed. Commercial lines weighted, with a personal lines book carried over from the founder's era.
Eleven carrier appointments. Approximately 2,840 active policies. Statements arrive monthly from eight carriers and quarterly from three, which means that in any given month Kathy is reconciling a different combination of documents from the month before.
Reconciliation takes four days a month: roughly 32 hours. At her loaded cost of $76 per hour, that is $29,184 a year spent checking arithmetic, performed by one of the two people least able to spare the time.
Coverage under the manual process: four carriers checked line by line, seven spot-checked. Approximately 68% of policy lines verified in any given month. The other 32% are, in the kindest interpretation, assumed correct.
The quarterly audit found $31,400 in underpayment across the unverified portion. Annualised, and assuming the audited quarter was ordinary, that is roughly $125,600 of earned commission the brokerage was not collecting. Against $4.1M in commission revenue, a little over 3%.
Two further costs sit alongside it. Producer commission disputes: eleven in the prior year, each taking two to four hours to investigate, several resolved in the producer's favour after a manual recalculation nobody enjoyed. And a clawback nobody saw coming, where a carrier reversed $8,900 of commission on cancelled policies across three statements, netted the reversals against later payments, and thereby made them visible only to somebody reading every line of a document that exists to be filed.
The pattern behind all of it: money already earned, recorded in two systems that never speak to each other, verified by a person doing it between other jobs.
The Design
Four stages. The core insight: the brokerage already holds the correct answer. Every policy in AMS360 carries its premium, its carrier, its commission rate, and its producer split. The expected commission is calculable to the cent. Kathy compares expected against paid by reading. The agent compares them by querying.
Stage 1: Statement intake and format handling
Monitors the commissions inbox and, for the two portal carriers, runs a scheduled retrieval. Each statement is classified by carrier and period on arrival.
CSV and Excel parse directly. PDFs go to Claude Sonnet with vision, which extracts policy number, insured name, premium, commission rate, commission amount, and transaction type. Scanned or photographed statements produce low-confidence extraction and route straight to Kathy rather than being guessed at. A misread policy number does not produce a small error, it produces a phantom mismatch that costs more time to investigate than manual entry would have taken in the first place.
Everything that parses normalises into one schema. Eleven formats become one table.
Stage 2: Matching against the agency management system
Each line matches against AMS360 on policy number, with a fallback on insured name plus effective date for the carriers whose numbering differs from the agency's.
Matched lines get an expected commission calculated from premium and contracted rate. Unmatched lines go to a review queue, because an unmatched line is either a data problem or a policy the brokerage placed and never recorded, and both of those need a human.
Stage 3: Variance detection and dispute drafting
Expected against paid. Within tolerance, the line reconciles and closes.
Underpaid above threshold, and the agent drafts a carrier query with the policy number, the contracted rate, the rate applied, and the difference. It does not send it. Kathy reviews and sends, because a commission dispute is a conversation with a relationship manager, and the brokerage's tone in that conversation is worth considerably more than the four minutes automation would save.
Overpaid, and the line flags as a possible clawback. Recognising commission that will later be reversed is worse than missing it, because it is revenue the firm may have already paid a producer on.
Negative adjustment lines get their own handling. This is where the $8,900 went.
Stage 4: Producer splits and the dashboard
Reconciled commission runs through each producer's contract terms: split percentage, new business against renewal rates, house account carve-outs. Producer statements generate from reconciled figures rather than from what the carrier happened to pay, which is the distinction that ends most commission disputes before anybody has to have one.
The dashboard shows commission received, outstanding, and disputed, by carrier and period. Carrier variance trended over time makes something like a fourteen-month rate error visible in month one.
Design Notes
The tolerance threshold is a business decision wearing technical clothing. Set it at zero and Kathy drowns in rounding differences. Set it at $50 and small systematic errors live comfortably underneath it, which is precisely how a 2.5 percentage point rate error stays invisible for fourteen months. The brokerage settled on the greater of $10 or 5% of expected commission, which catches proportional errors on small policies and absolute errors on large ones. Review it after a quarter against what it caught and what it waved through.
Never auto-send a carrier query. The agent drafts, Kathy sends. A brokerage's carrier relationships are its inventory, and an automated dispute email over $14 is a poor use of something that took eleven years to build. The agent finds the variance and assembles the evidence. Deciding which variances are worth raising, and how, is the part that requires knowing the carrier.
The Dave pattern recurs. Dave in Chicago tracked 340 HVAC units in a spreadsheet updated when he had time, and paid $4,200 for a compressor still under warranty. Same structure. The system of record held the correct answer and sat there being right while the business acted on something else entirely.
How to Build This
Recommended stack: n8n for orchestration. AMS360 API for policy records, commission rates, and producer contracts (Applied Epic, EZLynx and HawkSoft expose equivalents; where no API exists, a scheduled export works). Claude Sonnet with vision for PDF extraction, Haiku for email classification. Microsoft Graph or Gmail API for the commissions inbox. Playwright for the two portal carriers. Postgres for the normalised statement table, variance log, and dispute history.
Step 1: Build the expected-commission reference (Days 1-3). Deploy n8n, configure AMS360 credentials, set up Postgres. Build the policy reference table: policy number, carrier, insured, premium, effective date, contracted rate, producer, split terms. Populate from AMS360. This table is the answer key and everything downstream assumes it is correct, so verify 50 policies against the actual contracts before going further.
Step 2: Build statement intake (Days 3-5). Email trigger on the commissions inbox. Haiku classifies carrier and period. Route CSV and Excel to direct parse, PDF to Stage 3. Build scheduled portal retrieval for the two carriers that require it. Log every statement received, so a carrier that quietly skips a month becomes visible.
Step 3: Build PDF extraction (Days 5-8). Claude Sonnet with vision, one prompt per carrier format initially, converging as patterns emerge. Extract policy number, insured, premium, rate, commission, transaction type. Return structured JSON. Mark unreadable fields as requiring review rather than inferring them. This is the highest-risk component; spend the extra days here rather than anywhere else.
Step 4: Build matching and variance detection (Days 8-11). Match lines against the policy reference on policy number, with the name plus effective date fallback. Calculate expected commission. Compare against paid. Apply the tolerance rule. Branch to reconciled, underpaid, overpaid, or unmatched. Draft carrier queries for underpayments above threshold.
Step 5: Build producer splits and dashboard (Days 11-13). Apply contract terms to reconciled commission. Generate monthly producer statements. Build the dashboard: received, outstanding, disputed, by carrier and period, with carrier variance trended.
Step 6: Run in parallel (Days 14-30). Kathy reconciles as usual. The agent reconciles independently. Compare. Target: the agent matches her findings on the four carriers she checks by hand, and surfaces variances on the seven she does not. Two full monthly cycles before she stops doing it herself.
Estimated build time: 13 to 15 days for a competent n8n developer. Four to five weeks if learning alongside. Add time for every carrier beyond eleven, though the marginal cost falls sharply after the first six formats.
Cost Breakdown
Monthly running costs:
Component | Estimated Monthly Cost |
|---|---|
n8n (Cloud Starter or self-hosted) | $25-$50 |
Claude API (Sonnet vision, Haiku classification) | $28-$62 |
Postgres | $5-$12 |
Portal retrieval hosting | $3-$10 |
Total | $61-$134 |
Claude API detail: PDF extraction across roughly 240 statement pages a month runs about $34. Email classification via Haiku, about $0.06. Variance rationale drafting, about $4. Vision is the cost driver and still lands at roughly 14 cents per statement page.
Build costs if hiring: 13 to 15 days at $400 to $600 per day = $5,200 to $9,000. Self-built: $0 plus three to four hours building the policy reference table.
Year-one total: $5,932 to $10,608 with a developer, or $732 to $1,608 self-built. Compared against the audited $31,400 in a single quarter, $29,184 in reconciliation time, and eleven producer disputes.

What Could Go Wrong
The policy reference table is wrong. Everything compares against it, so an incorrect contracted rate produces confident, systematic, wrong variances. Verify 50 policies against the actual carrier contracts before go-live, and again whenever a contract is renegotiated.
A carrier changes its statement format. Extraction quality drops silently, which is worse than failing loudly. Track extraction confidence per carrier per month. A sudden drop triggers a review rather than a quiet degradation nobody notices until the quarter closes.
Policy numbers do not match between carrier and agency. Several carriers use their own numbering. Build the name plus effective date fallback from the start and maintain a mapping for the persistent offenders.
The agent finds a large historical underpayment. This is a success and a problem. Carrier relationships, the statute of limitations on commission claims, and the practical question of how far back to pursue are all judgment calls. Kathy decides. The agent presents the finding with the evidence and then does nothing at all.
Producers see the dashboard and dispute historical splits. Entirely predictable. Decide before go-live whether the new figures apply forward only or trigger a retrospective review, and tell the producers which it is before they ask.
Clawbacks recognised as revenue. A negative adjustment netted against a later payment reads as a smaller payment rather than a reversal. Parse transaction type explicitly rather than inferring from the amount, and flag every negative line regardless of size.
The Pattern
If your business earns money that somebody else calculates, and the calculation is verified by sampling, you are being underpaid by an amount nobody has measured.
Kathy is careful. She is a principal of the firm, she understands the contracts better than anyone in the building, and she gave four days a month to checking the arithmetic. None of that helped on the seven carriers she could not reach, because the constraint was never her diligence. Eleven carriers produce more lines per month than one person can read, and no amount of being good at the job changes that number.
The agent does not decide which variances matter. Kathy still sets the tolerance, judges which disputes are worth raising, and manages the carrier relationships. The agent reads all 2,840 lines, every month, and hands her the twenty that need a decision.
Sixty-eight per cent, or a hundred. Same book. Same contracts. Same money, differently counted.
This is Blueprint #54 in the AdAI series. Every week we publish the full architecture of a real AI agent design: the bottleneck, the build guide, and the costs. Free to read. Free to build from.
Want the next one? Subscribe to AdAI News. New blueprint every week.
by RM
for the AdAI Ed. Team


