From a page in your hand to a value on a chart
This page is the whole path a document takes, in the words the product uses for it.
It is worth reading because the interesting part is not what the pipeline does, it is where it stops.
10 named stagesnamed stages from upload to notification, and the app shows you which one a document is in
The ten stages
A document moves through ten named stages, in this order, and the app shows you which one it is in.
- Stage 1
Received.
The upload is accepted, and its type is checked from its own bytes.
- Stage 2
Stored.
The file is written to private storage under a key namespaced to your household.
- Stage 3
Classified.
What kind of document is this. A heuristic answers first, and a model is only asked when the heuristic is not sure.
- Stage 4
Matched to a pet.
Which animal in the household this belongs to. Below the matching threshold it stops and asks rather than guessing.
- Stage 5
Extracted.
The values are copied out into one of six typed shapes. Extraction copies facts. It never reasons clinically.
- Stage 6
Validated.
The shape has to fit. A partially parsed clinical row is never written, and there is no path that applies the good half.
- Stage 7
Confidence assessed.
May this be written without a person looking first. The rules are below.
- Stage 8
Applied.
The rows are written, each one marked as machine-written and carrying the confidence it was written at, so the app can show that a machine wrote it.
- Stage 9
Indexed.
The document becomes findable in your own records.
- Stage 10
Notified.
You are told what was filed, or what is waiting for you.
The seven places it stops and asks
The first rule that fires wins, and every one of them ends in the same place: a question for a person rather than a value in a medical record.
Validation failed.
The pet could not be matched with enough confidence.
The classifier is not sure enough what the document is.
A required anchor is missing. A laboratory report with no result rows, or no result date, is not a laboratory report that can be filed.
The text came from optical character recognition. This one is unconditional and is not a threshold.
Extraction confidence is below the bar for that kind of document.
A reading is not plausible for that animal.
The asymmetry behind all of it is written into the code as a comment, and it is the honest summary of the whole product: a value declined costs one tap on a review screen, and a wrong value applied silently becomes part of a medical record that a veterinarian may act on.
Different bars for different documents
The bar an extraction has to clear before it is written without review depends on what the document is. A prescription is held to the highest bar of any document type, deliberately above what the deterministic extractor can reach on its own, because applying a laboratory value adds a number you read next to its own snippet, while applying a prescription creates a schedule that tells somebody to give a drug at a time and a dose.
What happens with no AI key at all
Talli runs with no API key. Classification and extraction both have deterministic implementations, and the pipeline reaches the same tables either way. Only the confidence differs, and therefore how often you are asked.
The consequence is stated in the product's own documentation rather than hidden: most documents will then need one tap, and that is the policy working rather than a defect.
Where the text comes from
Text is read from a PDF's own text layer by a decoder written for this, with no new dependency. When a PDF is really an image it correctly returns nothing, which is what makes "this is a scan" a trustworthy signal for the first time.
A scan or a photograph is a different problem, and the reason Talli will not read one on its own is on the AI page.
Read next
Talli is not open yet
Leave an address and we will write to you once it is. That is the only thing this address is used for.
Coming soon on iPhone and Android.
Both apps are built. Neither is on a store yet, and there is no date to give you.