A language model is very good at explaining why a quote was recommended. It is not a safe place to compute the premium, the change on the expiring, a loss ratio or a carrier’s rating. In a placement, a wrong number in front of a client is an E&O problem. So InsightPlacement separates the two jobs completely: engines compute, models explain, and an explanation carrying a number the engines didn’t produce is thrown away.
In short
- Every figure comes from an engine — calendar, exposures, SOV, losses, readiness, ranking, comparison, diligent effort.
- The model sees numbered facts and must cite them.
- The grounding check rejects any answer with a number not in the facts; the engine’s own finding stands.
- Fact markers are stripped from everything a person reads.
The engines
Every figure on every InsightPlacement screen, document and prepared decision is computed by a deterministic function over the placement’s rows:
| Engine | Computes |
|---|---|
| Calendar | Days to inception, the 120/90/60/30 mark, the stage expected, behind or not |
| Exposures | This year against last, what each line needs, big changes |
| SOV check | Locations, TIV, gaps by row and severity, TIV by state and construction |
| Loss summary | Five years per line, status, staleness, loss ratio, large losses |
| Readiness | The weighted checklist and its score |
| Market ranking | Fit, score, reasons, cautions and blockers per carrier per line; the plan |
| Comparison | Side-by-side per line, flags, the recommended quote and why, the program total |
| Diligent effort | Admitted declinations per surplus line, sufficient or not |
| Quote reader | A quote letter read into fields, with what is missing |
Each takes plain rows and returns plain results with a citation: what the figure was computed from — “Statement of values: 9 locations”, “General liability loss run (Ashgrove Mutual), valued 2026-10-04”. Each has known-answer tests that never call a model.
Numbered facts in, cited findings out
label, value, source"] F --> M["Model reasons
in a fixed shape,
citing fact numbers"] M --> G{"Every number
in the answer
found in the facts?"} G -- yes --> U["Strip fact markers
the agent's reading"] G -- no --> X["Answer thrown away
engine finding stands"] U --> P["What a person reads"] X --> P style X fill:#fff4e2,stroke:#f4a03a style P fill:#e8f8f4,stroke:#10b981,stroke-width:2px
The model is given the facts as a numbered list, each with its label, value and source, and asked to answer in a fixed findings shape. Before anything is shown, every number in the answer is looked for in the facts. One that isn’t there — a rounded premium the engine didn’t produce, a percentage it computed itself — fails the answer, and the engine’s own finding is what the person sees. The fact markers the model used to cite are then stripped, so the reader sees plain sentences, with the facts listed underneath.
On a readiness finding the engine’s headline (“2 of 9 locations have SOV gaps (22.2%)”) comes first; the agent’s reading is the model’s paragraph, which passed the check; the chips underneath are the sources.
Where a model is allowed to write prose
- Each agent’s reading on its findings and prepared decisions.
- The submission’s cover note and the proposal’s executive summary — both checked against the facts before they are used, both replaced by a plain sentence from the engines when the model is off or fails the check.
- The copilot’s answers, where every figure is checked against what its lookups returned.
Everything else — tables, the package sections, the comparison, the proposal’s program, the bind order — is rendered from the engines.
With the model switched off
Set the agents’ model off and InsightPlacement still works: every engine runs, every agent prepares its decisions from the engines’ findings, and each card says it stands on the engines. The screenshots on this site were captured that way — some cards say “Reasoned with the model” because the demo book had been analysed with the model earlier, and the readings shown are the ones that passed the check then.

