Renewal season ends the way it always does: a slip from the broker on the last working day of December, signed lines finalised an hour before inception. The terms are agreed. What is not done is getting them into the system that will cede against them on the first of January — the type and basis, the period, the layers with their attachments and limits, the reinstatements, the panel and each reinsurer’s share. Someone types them in from a PDF. A transposed attachment point is found at the first large loss, by which time it has been wrong for months.
The placement intake agent reads the slip and proposes the treaty, its layers and its panel, with the passage each value came from. It is one of the two InsightCede agents that need an input the ledger does not hold, and its job is narrow on purpose: propose, cite, and leave blank whatever the slip does not say.
What it reads, and what it returns
The agent is run by hand, with the slip’s text. It sends that text to the model once, with the list of reinsurers the carrier already knows, and asks for a fixed shape:
| Part | Fields the agent asks for |
|---|---|
| Treaty | Code, name, type (quota share, surplus, excess of loss, cat excess of loss), basis (risks attaching or losses occurring), inception and expiry, lines of business, cession %, ceding commission %, retention, broker |
| Layers | Number, attachment point, limit, number of reinstatements, layer premium |
| Panel | Reinsurer name, share %, the layer it sits on (or the whole treaty), lead |
| Citations | For each field, the passage of the slip it was read from |
Three checks then run in code, not in the model. Each panel name is matched against the carrier’s reinsurer master; a name that does not match is reported as an unknown counterparty, never mapped to the nearest one. The shares are added up and the total is shown. And six fields — treaty code, type, basis, inception, expiry, lines of business — are listed as not stated in the document if they came back empty.
flowchart LR
A["Slip text
supplied with the run"] --> B["The model reads it
each field with its passage
or left blank"]
B --> C["Code checks
panel names, share total
fields not stated"]
C --> D["Decision record
L1 Draft"]
D --> E{"A person"}
E -- accept --> F["Agreement recorded
programme loaded by hand"]
E -- reject --> G["Reason recorded"]
The result is a decision record like every other agent’s: a title, an explanation, the evidence (here, one item per citation, labelled with the field and sourced to the slip), and the proposal — the treaty, the layers, the panel, the share total, the missing list and the citations. It waits at L1, Draft.
A real run, on the demo programme
This is what the agent returned today for a short cat excess-of-loss slip run against the demo ledger, as a dry run: the graph ran, the result came back, and nothing was kept but the run record. The slip named the cedant, the period, two layers and a two-reinsurer panel.
| Field | Proposed | Passage cited |
|---|---|---|
| Type | cat excess of loss | “Type: Property Catastrophe Excess of Loss.” |
| Basis | losses occurring | “Period: 1 January 2027 to 31 December 2027, losses occurring during.” |
| Inception / expiry | 2027-01-01 / 2027-12-31 | “Period: 1 January 2027 to 31 December 2027” |
| Layer 1 | $10,000,000 xs $5,000,000, 1 reinstatement, premium $1,200,000 | “Layer 1: USD 10,000,000 excess of USD 5,000,000 each and every loss occurrence, one reinstatement at 100% additional premium, premium USD 1,200,000.” |
| Layer 2 | $20,000,000 xs $15,000,000, 1 reinstatement, premium $900,000 | “Layer 2: USD 20,000,000 excess of USD 15,000,000, one reinstatement at 100%, premium USD 900,000.” |
| Retention | $5,000,000 | The layer 1 line — the attachment, read as the retention |
| Lines | “Property (all perils)” | “Classes: Property (all perils).” — free text, not the programme’s line codes |
| Panel | Big Re 60% (lead), Small Re 40% — 100% | “Security: Big Re 60% (lead), Small Re 40%.” — both unknown counterparties |
| Treaty code | blank | Not stated in the document |
The explanation it wrote was one line long, and the right one: “Proposed from slip-2027: cat_xol, 2 layer(s), 2 panel member(s) totalling 100%. Not stated in the document: treaty_code. Unknown counterparties: Big Re, Small Re.” The run record shows one model call, 738 tokens in and 1,531 out, at a cost of $0.0008, and the prompt version it read.
Two things in that table are worth a second look, and the citations are what make them easy to see. The reinstatement terms say at 100% additional premium, and the passage is right there under layer 1 — but the proposal has no field for a reinstatement premium rate, so the 100% is cited and not carried. And the line of business came back as the slip’s words rather than the carrier’s codes; the engine scopes a treaty by those codes, so this one has to be mapped by a person before it can respond to anything.
The use case, in one table
| A slip becomes a treaty proposal | |
|---|---|
| Trigger | Manual: a person runs the agent with the slip’s text (a document reference is accepted, and is read once the documents service can return a document’s text) |
| Actor(s) | The head of reinsurance, or the analyst preparing the programme for the year |
| Agent | Placement intake agent |
| Grounded in | The document’s text; the reinsurer master for matching the panel |
| Prepares | A treaty proposal: the treaty, its layers, its panel with the share total, a citation per field, the fields not stated, the unknown counterparties |
| Checkpoint & default level | treaty_proposal · L1 Draft |
| What a person decides | Whether the proposal matches the slip as bound; what to do about every blank and every unknown name; the programme entry itself |
| What is recorded | The decision record with each citation as evidence, the answer as feedback, and the run: identity, level, prompt version, model, tokens, cost |
Where it sits in the product
The proposal lands beside the programme it will join. The Programme screen shows the treaties by underwriting year with what each layer has left, and the programme agents’ proposals in its rail — the gaps the ledger can already see, and slips coming in through placement intake.

Every agent’s contract is on the catalogue page, in its own words. For this one: it reads the document’s text and the reinsurer master, and it never invents “a term the slip does not state: every proposed field carries the passage it came from or is left blank.”

Layers keyed by hand from the slip. A wrong attachment point looks exactly like a right one until a loss tests it, and nothing on the screen says where the number came from.
Each value sits beside the slip line it was read from. A blank says the slip was silent; an unknown name says the panel has someone the carrier has not set up. The reader checks passages, not memory.
Why blanks are a feature
A model asked to fill a form will fill it. The agent’s instructions and its definition both say the opposite: a field without a passage stays empty, and the empty ones are listed in the explanation. A proposal with one honest blank is more useful than a complete one with a guessed treaty code, because the blank is the thing the reader needs to act on.
What it does not do
- It does not create the treaty. Accepting records agreement; there is no route or screen today that turns an accepted proposal into a treaty year, layers and participations. The programme is loaded by a person.
- There is no upload screen yet. The agent is run by hand with the slip’s text. It accepts a document reference, but reads it only once the documents service can return a document’s text; today it cannot, so the text has to be supplied.
- Some terms have no field. The reinstatement premium rate and pro rata basis, the hours clause, brokerage, inuring order and aggregate limits are not in the shape the agent fills. When the slip states them, the passage may be cited, but the number is not carried.
- Names match exactly or not at all. A reinsurer is matched by legal name. “Big Re Ltd” against “Big Re” is an unknown counterparty, which is the safe failure but still a step for a person.
- A citation is the model’s pointer. It shows where a value was read, not that it was read correctly. The demo run took the retention from layer 1’s attachment, which is right for this slip and worth checking on the next.
If your treaties are keyed from PDFs every January, send us a slip with the names changed and we will show you the proposal, citation by citation.