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:

PartFields the agent asks for
TreatyCode, 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
LayersNumber, attachment point, limit, number of reinstatements, layer premium
PanelReinsurer name, share %, the layer it sits on (or the whole treaty), lead
CitationsFor 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 model reads; code checks the panel and what is missing; a person decides. Nothing on this path writes a treaty.

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.

FieldProposedPassage cited
Typecat excess of loss“Type: Property Catastrophe Excess of Loss.”
Basislosses occurring“Period: 1 January 2027 to 31 December 2027, losses occurring during.”
Inception / expiry2027-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,000The 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
PanelBig Re 60% (lead), Small Re 40% — 100%“Security: Big Re 60% (lead), Small Re 40%.” — both unknown counterparties
Treaty codeblankNot 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.

12citations returned, one per field read
1field left blank and listed
2unknown counterparties flagged
$0.0008model cost of the run

The use case, in one table

A slip becomes a treaty proposal
TriggerManual: 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
AgentPlacement intake agent
Grounded inThe document’s text; the reinsurer master for matching the panel
PreparesA 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 leveltreaty_proposal · L1 Draft
What a person decidesWhether the proposal matches the slip as bound; what to do about every blank and every unknown name; the programme entry itself
What is recordedThe 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.

Programme
The Programme screen on the demo programme: tiles for treaties, ceded premium, ceded loss and capacity left; the treaties with year, type, basis, status and lines covered; and the programme gap agent's rail
The programme the proposal is checked against. Seven treaties across three years, $397.6M of capacity left with one layer exhausted, and the gap agent’s rail, which ends: Slips come in through the placement intake agent. Shown on the demo programme.

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.”

Admin · Agents · Catalogue
The agent catalogue: fifteen ceded agents by lifecycle step, each with what it does, when it runs, what it reads, what it must never invent and the level it starts at
Read the shield line on each card. “Never invents” is part of the agent’s definition, and the same catalogue drives the autonomy dial and the routes.
Typed from the PDFA treaty that looks right

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.

Proposed from the textA proposal that shows its sources

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.

← All posts   Request a demo