A book export is a list of policies: who the client is, which line, which carrier, which producer, when it started and ended, the premium and the commission. Everything an acquirer wants to know about an agency's revenue is in it. Most of the disagreements about that revenue come from reading it differently.

These are the definitions InsightRollup's engines use. They are written down because a figure is only useful if two people computing it from the same rows get the same answer.

1. Rolling periods, not calendar years

An export is read on a day. The current calendar year is never complete on that day, so comparing it with last year understates growth and overstates loss. Every figure is computed over rolling twelve-month periods ending on the export date: P0 is the last twelve months, P1 the twelve before that. “In force” means written in the last twelve months.

gantt title Rolling periods ending on the export date (illustrative) dateFormat YYYY-MM-DD axisFormat %b %Y section Periods P2 :p2, 2023-10-30, 365d P1 :p1, 2024-10-30, 365d P0 (in force) :active, p0, 2025-10-30, 364d section Export Export read :milestone, 2026-10-29, 0d

2. Revenue is commission, not premium

An acquirer buys the agency's income: commission and fees. Premium is the carrier's. Producer and client concentration are therefore shares of revenue. Carrier concentration is the exception — a share of premium — because what a carrier's appetite change moves is the premium it writes.

3. Retained means due to renew, and did

A client counts towards retention only if they had a policy in the earlier period whose renewal fell due — and they are retained if they renewed into the next. Clients whose renewal has not come round are neither retained nor lost. Revenue retention is the same idea weighted by revenue.

flowchart LR C["Client with a policy
in P1"] --> D{"Renewal fell
due by now?"} D -->|"no"| N["Not counted"] D -->|"yes"| R{"Renewed
into P0?"} R -->|"yes"| RT["Retained"] R -->|"no"| L["Lost"]

4. Recurring is new, renewal and fees

Commission types new, renewal and fee are recurring; contingent and supplemental are volatile — paid by carriers on profit and volume, so they move year to year.

Book · what the revenue is made of
What the revenue is made of, and data quality, on illustrative data
What the revenue is made of — renewal, new, supplemental, contingent — beside the rows the seller should correct.

5. A key person holds 15% or more

A producer holding 15% of revenue or more is a key person. The shipped control refers anything over 25%.

6. Data quality is a list of rows

No client code, no producer, commission missing or above the premium, expiry before effective date. Each is a list of row numbers, so the seller can fix them in their own system.

7. Every figure cites its rows

A citation reads like “Book export ironwood_book_export.csv: 1,079 rows (written in the 12 months to 2026-10-29)” — the file, the row count, the filter. Click it and the rows open.

The rows behind it
The rows behind a citation, on illustrative data
The rows behind it: a producer's revenue citation opened to the 367 book rows it rests on.

For the deal team

When the seller disputes a figure, the conversation is about rows, not methods.

For IT

The engines are pure functions of the stored rows and the export date (book_engine.py), tested against known-answer books.

For corp-dev leadership

Every agency in the programme is measured the same way, so the pipeline compares like with like.

Questions we get asked

Why not use the seller's financial year?

Because it is a different period from the book and includes income the book does not show. InsightRollup shows the seller's figure beside the book's, and the gap.

What date is 'as of'?

The export date. Every figure states it, so a figure computed today and one computed next month are never confused.

Keep reading