A diligence report is a list of numbers a buyer will rely on: limits, premiums, incurred losses, reserves, tail costs, the price of the program after closing. If a language model can put a number into that report that is not in the documents, the report cannot be trusted. So in InsightDueDiligence the model never computes a figure, and a model answer that mentions one it was not given is thrown away.
Who does what
and Pulse facts"] --> R["Reader: fields
with their page"] R --> E["Engines: totals, trends,
benchmarks, standalone cost,
tail estimates"] E --> F["Facts, each with
a citation"] F --> M["Claude reasons:
explains, ranks,
asks what is missing"] M --> G{"Every number
in the facts?"} G -- yes --> OUT["Finding shown
with its sources"] G -- no --> RB["Model answer discarded;
the check's own finding stands"] RB --> OUT style E fill:#e6efff,stroke:#2563eb style G fill:#fff4e2,stroke:#f4a03a style RB fill:#fdecec,stroke:#e57373
The reading, the arithmetic and the reasoning are three separate jobs:
- The reader turns each document into page-level pieces and fields: a policy block becomes line, carrier, policy number, named insured, period, limit, retention, premium, trigger, retroactive date, program structure, collateral, financing and the change-of-control clause, each with its page.
- The engines compute every figure from what was read: the program’s total premium, claims by line and year, the frequency trend, open reserves, large losses over the threshold, gaps against the benchmark, the standalone cost after closing and each tail estimate.
- The model reads those facts and writes what a broker would write: what matters, why, and what to ask the seller. It answers in a fixed shape that cites facts by id.
The grounding check
Before an answer is kept, every number in it is compared with the numbers in the facts the agent was given. For the agents the check is strict: only section numbers (“Section 3.12”) and small counts up to twelve (“3 claims-made lines”) pass without appearing in the facts. A number that matches nothing — a premium the model estimated, a limit it remembered from somewhere else — rejects the whole answer, not just the sentence. The check’s own findings then stand, marked as reasoned by rules, and the trace records why the model’s answer was dropped.
Citations a reviewer can open
A finding without a source is not shown. Each one carries chips for what it rests on: a document and page (“Directors & Officers policy — Harborline Specialty, p.1”), the practice benchmark it was measured against, or an InsightPulse fact with its date (“Pulse: corporate hierarchy, as of 2026-10-01”). The carriers and the target in that example are illustrative. A reviewer approves, changes or rejects the finding against the page, not against the model’s word.
Where the assumptions live
Some figures are estimates by nature: the standalone premium once the target leaves the seller’s program, or the cost of a tail. Those are computed from the practice’s own benchmarks in the playbook pack — an uplift per program structure and a tail multiple per line — and labelled illustrative on screen. A practice replaces them with its own. The model cannot change them; it can only explain the result.
Why reject the whole answer?
Removing only the offending sentence leaves a paragraph that was written around a wrong number. It is simpler and safer to keep the check’s findings, which are always grounded, and to record that the model’s reading was rejected. Rejections show up in the agent’s run history, which is how a practice notices a prompt that needs work.
The same rule everywhere
The rule applies to the agents’ findings, to the prepared decisions, to the narrative at the top of the workspace and to the diligence copilot. The copilot reads to the precision a figure was written in (“$152K” is supported by 152,340), and a figure it did not read from a tool is replaced with “not in the record” rather than shown.
Questions we get asked
Doesn’t this make the model less useful?
It makes it useful for the right thing. Brokers do not need help adding up premiums; they need help noticing that a D&O policy converts to run-off at closing, and saying so clearly with the page.
What if the document itself is wrong?
Then the finding is wrong in a way a reviewer can see, because the page is one click away. The record shows what was read, from where, and who approved it.

