Skip to content

Introduction

If you’ve asked a language model to pull dates and amounts out of contracts or invoices, you know the problem: the answers look plausible, and you can’t tell which ones are wrong. Tickmarks fixes that by checking every extracted value against rules you already know are true, such as “the total is net plus VAT” or “the lease ends 12 months after it starts”. When the values fit the rules, you get them back with the text they came from. When they don’t, Tickmarks tells you which values disagree rather than picking one quietly.

You describe what you want in a schema: the fields to extract, their types, and the relations that must hold between them. Tickmarks sends back a value for each field, the exact text it was read from, a confidence score and a status that explains why a field does or doesn’t have a value.

I want to… Read
Send my first request Quickstart
Create or send an API key Authentication
Use Tickmarks from Claude, Cursor or another AI assistant Use Tickmarks from an AI assistant
Know every request parameter Extractions, Schema validation
Send a scan, photo or PDF Scans, photos and PDFs
Handle an error response Errors
Write a schema Schema overview, Field types
Express a rule between fields Relations, Expressions and operators
Know how dates, rounding and currencies behave Calendar and money rules
Understand a field’s status or confidence Reading responses
Fix an E-… schema error Compile errors

Take a lease that says it starts on 1 March 2027 and runs for 12 months, and a schema with a start date, an end date, a duration and the relation endDate == startDate + duration.

First, Hydra Extract, our extraction model, reads the document and proposes candidate values for each field, and every candidate points at the exact text it came from. Tickmarks then parses those candidates into typed values (dates, money, durations and so on). A candidate that doesn’t parse, or that breaks a constraint on its field, is dropped with a warning, so nothing malformed reaches the next step.

Next, Tickmarks checks the surviving candidates against your relations and picks the combination that fits best. The lease never states an end date, but the relation can compute one, so the response contains endDate: "2028-03-01" with source: "derived". Every field comes back with its value (or none), its evidence, a confidence and a status.

Now suppose the lease also said it ends on 1 April 2028. The three values can’t all be true, and nothing in the document says which one is the typo. Tickmarks reports a conflict on those fields and shows what each possible fix would give, so that a person makes the call instead of the model.