Illustrative example · one decision and its evidence

Why was this approval made?

Six months later, a regulator asks why Susan bound a $4.2M risk on March 5. This example shows how the decision and its evidence can be stored as a graph and replayed with Cypher. The people, policies, values and timestamps are fictional.

CASE FILE · pol-2026-03-9847
Susan approved a $4.2M commercial property policy.
Underwriter susan.chen@carrier.io
Recorded 2026-03-05T14:32:18Z
Risk CP-2026-9847
Decision BIND
1
2026-03-05 14:12:04 UTC · t-20m
Risk submitted — underwriter assigned
Broker pushed CP-2026-9847 to the queue. Triage rule routed to Susan based on territory + line of business + loss-ratio tier.
triggerrule TRIAGE-LOB-CP
2
14:14:33 · t-18m
Susan opened the loss-run history
7-year loss history. 2 small water claims, both closed. No fire, no liability, no fraud flags.
loss-run-2019-2026.pdfviewed 4m 12s
// Susan's actual view, replayed: MATCH (r:Risk {id:'CP-2026-9847'})-[:HAS_HISTORY]->(c:Claim) AT RECORDED '2026-03-05T14:14:33Z' RETURN c.date, c.amount, c.peril, c.status
3
14:18:51 · t-13m
Sprinklered + central station alarm verified
Engineer report uploaded by the broker last week. Wet system, NFPA-13 compliant, monitored 24/7. Triggered the 12% credit rule.
engineer-report-2026-02-27.pdfrule SPRINKLER-CREDIT-12pctviewed 2m 04s
4
14:22:09 · t-10m
CAT score pulled
CoreLogic wildfire score: 24/100. Flood zone: X (low). Earthquake: zone 3. Within appetite for this territory.
CoreLogic API callrule CAT-WITHIN-APPETITE
5
14:26:42 · t-6m
Reinsurance treaty checked
$4.2M is under the $5M single-risk cession threshold — goes entirely through the per-risk treaty. No facultative needed.
treaty-2026-property-quota.jsonrule TREATY-AUTOCEDE-LE-5M
6
14:30:15 · t-2m
Susan added a free-text note
“Strong loss history, sprinkler + central alarm, CAT clean. Comfortable binding at filed rate. Watching the roof-age item at renewal — ten years now, will tighten in 2031.”
underwriter notereasoning captured
7
14:32:18 · the decision
Bound. Quote sent.
Premium $48,720 / yr at filed rates with 12% sprinkler credit. Effective 2026-04-01. Signed by Susan; auto-countersigned by the carrier's e-signature service.
BIND CP-2026-9847e-sig chain: 4 signatures
Outcome · 9 months later
No claims. Policy renewed 2027-04-01. Susan's renewal note tightened the roof-age item exactly as flagged at bind. The decision held.
What just happened

You watched a decision, captured.

In this example, InvariantDB stores the full trail behind the final answer (BIND $4.2M): the context Susan saw, the rules that fired, the documents she opened, the reasoning she wrote, and the signature records. Each step is a node, each causal link is an edge, and each value carries a valid time and a recorded time.

Replay the decision

AT RECORDED '2026-03-05T14:32:18Z' reconstructs what Susan saw at the moment she bound the policy, not today’s view.

Check the chain

GET /graphs/{name}/audit/verify re-hashes the graph’s write history from the first record and reports clean or the first broken record. The history log is not signed, so the check does not detect a rewrite of the whole log, or removal of the most recent records, by someone with write access to the server.

Walk the lineage

DERIVED_FROM edges, walked with db.derivedFrom, trace the rate quote back to its inputs: filed rates, CAT score, sprinkler credit, and loss-history factor.

Train an agent (later)

This is what "build agents from decisions, not documents" looks like in practice. Replay Susan's last 800 bindings to train an underwriting assistant that learned how she actually thinks, not just what's in the SOP.