CoverageCheck

spec-v1 · 12 August 2026

Spec

The engagement’s own requirement set, held against what was delivered: the same side-by-side the product runs on coverage, run on the spec. Each row quotes the ask, states what exists, and links to it.

12 met · 4 beyond the ask · 1 met with limits stated · 1 deviation, recorded. Ellipses mark condensed passages; the full text is in the repository at reference/spec-v1.txt.

The engagement

The spec

This is a standalone prototype. Eric will not have access to TrustLayer's application, codebase, infrastructure, user accounts, or any customer data.

Delivered

Built and hosted entirely outside TrustLayer, in a stack chosen for the job. Nothing here touches a TrustLayer system, account, or customer document, and the README says so first.

Met

The spec

We supply the inputs: a set of sample policy documents (synthetic or publicly available specimen forms) ... and the finalized list of five questions.

Delivered

Both inputs are covered from the spec itself. It allows publicly available sample forms, so fifteen publicly posted programs were gathered as the corpus, with ground truth recorded. And it directs that the question set be treated as swappable configuration, not something to invent, so the questions belong to the user: ten standing checks ship as the working set, and the composer turns a typed question into a check.

Met

The core flow

The spec

Detect the document type. Classify the uploaded document.

Delivered

Every document is classified into a closed vocabulary before anything else happens. A certificate is recognized as evidence rather than coverage, a document with no text layer is refused, and a low-confidence identity stops for a person instead of being extracted.

Met

The spec

Pull out limits, aggregates, and deductibles/SIR, and stack the program into a coverage tower (primary, umbrella, excess = total limits).

Delivered

The tower is drawn from extracted, cited figures: layers, attachment points, aggregates, retentions. Every number on it opens the page and printed words it was read from, and the arithmetic is code, never a model.

Met

The spec

Results of the five questions, shown as clear pass/fail per check.

Delivered

Answers come back in three states, not two: pass, fail, and cannot determine. Uncertainty dressed as a verdict is a wrong answer, so the third state is structural and every check declares what it could not settle.

Beyond the ask

The spec

Every flag should name the problem, explain the impact, and point to the relevant policy language.

Delivered

A finding carries its statement, why it matters for this insured, and citations to the pages behind it. A finding that rests on a document the file does not hold says so on its face rather than presenting as settled.

Met

The spec

If we can analyze a policy this deeply for the owner's own coverage, the simpler variant, checking a party's document against a fixed question set, falls out of the same engine.

Delivered

Tested rather than assumed: V3 holds the same readings against requirement sets compiled from real published counterparty documents, each requirement beside what the coverage provides, with the shortfall in dollars where two printed figures prove it.

Beyond the ask

Quality expectations

The spec

Handles a multi-document program (primary + umbrella + excess) as one coverage picture.

Delivered

The VVA program joins two files into one tower through the schedule of underlying insurance. The University of Texas program reads five policies, five carriers, out of one 316 page file, each excess layer's schedule naming the layer beneath it. A document is not a policy, and the resolution works in both directions: several files into one policy, and one file into several.

Met

The spec

When the system can't confidently find something, it says so and flags uncertainty ... it never guesses silently.

Delivered

Made structural rather than behavioral: no result exists without a scope of what was read and assumed, a missing scheduled policy halts the run for a person whose decision enters the record, and every citation is verified against the page text in code, with failures discarded rather than shown.

Beyond the ask

Handoff

The spec

Code in a repo shared with TrustLayer, with a README sufficient to run it locally.

Delivered

The repository, with a README that states what is real and what is not, piece by piece, and a one-command verification bar.

Met

The spec

A live (or recorded) walkthrough demo.

Delivered

The demos are live and self-serve: anyone with the URL can run every reading on this site. No recording was made; the walkthrough is the site itself.

Met

The spec

A short write-up: approach taken, models/libraries used, observed accuracy on the sample set, known limitations, and what production integration would require.

Delivered

One write-up covering all five, for all four versions.

Met

How it was evaluated

The spec

Against the provided sample set: correct document classification, accurate limit extraction, correct answers to the five questions, and the seeded coverage problems flagged.

Delivered

Run against the gathered corpus. Extraction of tower values agreed with every corroborated label, where corroborated means two machine reads reaching the same value, not a person. Classification carries no defensible number yet, and the harness says so rather than reporting one. Nothing was seeded; the corpus's real problems were found instead: a policy named by a schedule and absent, a tower that overlapped itself, restrictions across every page.

Met, limits stated

Out of scope

The spec

Out of scope: integration into TrustLayer's app or UI, access to or handling of real customer data, user accounts/auth, notification or inbox wiring, and claims-related features.

Delivered

One recorded deviation: the spec puts claims-related features out of scope, and loss runs and operator-entered claims were built into V2 anyway, because a reviewed read cannot show an aggregate it knows is partly consumed. That is a scope call made without the client, recorded here and in the decision log rather than graded as a bonus. Claims administration remains out. Accounts and persistence stay designed, and are labeled as designed everywhere they come up.

Deviation, recorded

The open items, as they stand

The spec

Delivery of the sample policy set (synthetic/specimen documents, including seeded problems to catch).

Delivered

Closed from the spec's own allowance for publicly available sample forms: the corpus is fifteen real published programs, and a holdout folder stands ready for any set TrustLayer supplies later.

Met

The spec

The finalized five questions (being pulled from a recorded customer call).

Delivered

Closed as the spec directs: the question set is swappable configuration, not something to invent, so the user controls it. Ten standing checks ship as the working set, the composer turns a typed question into a check, and any five drop in without touching the engine.

Met

The spec

Document types beyond CGL: declarations pages, COIs, auto, workers' comp?

Delivered

Grown to umbrella, excess, and auto liability lines, plus loss runs as a third document type. A COI is read and refused as coverage on purpose: a certificate asserts a policy exists and grants nothing.

Beyond the ask

The spec

Scanned/image-based PDFs: in scope for the prototype or later?

Delivered

Answered with a boundary: a document with no text layer is refused, because its citations cannot be verified and an unverifiable reading rests on trust alone. Scanned documents wait in the corpus for the decision about reading text off an image.

Met