runs in your browser · no model call

Is the model inventing text? Check it without a model.

The lock from case 1, ported from verify_literal.py. Every extracted value must be a literal slice of the input, and the slices joined in order must rebuild the whole text. A cheap model can then be trusted where it passes and rejected where it does not.

input text, as covered by the extraction
covered by a literal slice (label on top) dropped: no slice reproduces it
verify(original, output)
    1. every slice is a literal substring of the original, in order
    2. slices joined in order rebuild the whole original
    3. every mark is a literal substring of its own slice
    4. every label belongs to the allowed list

    Edit the text or the JSON and run the check yourself