CoverageCheck

The decisions

What was decided, and what it cost

Every entry names the alternative that was rejected. A decision log that only records winners is a press release.

The user is the broker, the client is the subject

0001, accepted

Build for the broker operating on behalf of a client. Own coverage describes whose risk is analyzed, not who operates the tool.

Rejected  A self serve tool for the insured, which one reading of the specification supports.

Cost  An insured facing product would need consumer grade explanation everywhere. The liability argument decided it: a wrong answer should reach a licensed professional who was shown the scope, not a party with no way to evaluate it.


A document is not a policy

settled in the schema

Documents resolve into policies before policies resolve into a program. A policy is a packet that arrives split across files or several to a file.

Rejected  One file equals one policy, which is the assumption the brief implies.

Cost  A whole resolution layer that the brief did not ask for. It is also the layer that makes every corpus program assemble correctly, because not one of them fits the one file assumption.


The schedule of underlying insurance is the join key

settled in the schema

Excess and umbrella policies are joined to what sits beneath them by the schedule each one prints: carrier, policy number, limits, term.

Rejected  Joining by insured name or by adjacency in the upload.

Cost  Schedules are typed at a different carrier and punctuation drifts, so near matches must be surfaced for confirmation rather than joined. The gain is that a missing document becomes provable by name.


Routing is by policy number only, never by name

settled in the pipeline

Two policy numbers that differ only in punctuation are surfaced for a person to confirm, not joined automatically and not reported missing.

Rejected  Fuzzy matching on names, which joins more programs automatically.

Cost  More confirmations reach a person. A wrong tower is wrong; a wrong merge between two insureds is not recoverable.


Pause before extraction

0002, accepted

A document that cannot be placed is re-read once, narrowly. If the second reading agrees it cannot be placed, the run stops and asks a person a specific question. Answers and exclusions are logged.

Rejected  Proceeding on the best guess and letting the person correct the finished review.

Cost  Some runs stop and wait. Triage costs pennies and extraction costs dollars, and a review built on a guessed identity is already compromised before it renders.


Three answer states

settled in the question engine

A question answers pass, fail, or cannot determine. Answerability is checked before the predicate runs, so a missing field is never reported as a failure.

Rejected  Two states with a confidence score attached.

Cost  Cannot determine is a less satisfying answer than a number. It is also the honest one, and dressing uncertainty as a verdict is the failure mode this build treats as disqualifying.


No unqualified clean result exists

settled in the schema

A review cannot be constructed without a scope declaring what was read, what should exist, and what was assumed.

Rejected  A clean bill of health when no problems were found.

Cost  Every result carries qualifications a reader must scroll past. A clean result over an incomplete program is the most expensive lie this system could tell.


Validate the reading in code, not at the decoder

0003, accepted

The schema travels in the prompt, the response returns as text, and validation runs in code with one correction pass before raising.

Rejected  Grammar constrained decoding, which makes malformed output impossible.

Cost  Malformed output becomes unlikely instead of impossible. The compiled grammar could not hold a fully cited schema after three reductions, and what remained to cut was citations and fields, which are the product.


Stop for a person when a named document is missing

decided 08/14/26, build in progress

When assembly finds a policy named by a schedule but absent from the file, and the absence touches the tower or a question, the run stops and asks: proceed without it, or stop here. The decision is logged into the record with who made it.

Rejected  Proceeding automatically and marking dependent findings, which is what the build did before this decision.

Cost  A halt state, a resume path, and a decision surface that did not exist. Not every absence is equal, so the stop is gated by what the absence touches, and the record shows what was missing and what the person chose.


Full records with context and reasoning are in docs/decisions in the repository. Entries marked settled are enforced by the schema or the pipeline rather than by convention.