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.
Find your answer
Section titled “Find your answer”| 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 |
How an extraction works
Section titled “How an extraction works”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.