Dossier · by Adaptive Systems
LiveApplicant documents, checked.
Bank statements, bills, payslips and IDs. A model reads them; code examines each file for edits, adds up every balance, checks the passport's machine-readable zone and compares every name, address and date with what the applicant told you. A raised salary, a retyped amount or someone else's statement is caught, boxed on the page, with the reason.
The app runs real models, so it is password-protected. The numbers here come from it live.
How it works: the case study on GitHubBank statement
Utility bill
Passport
- Reada model reads every value with its words
- The file itselfedits, hidden text, fonts, producer
- The numbersbalances, bank details, MRZ check digits
- The applicantname, address, date of birth vs declared
- Applicants checked
- cases, all documents compared
- Documents processed
- statements, bills, payslips, IDs
- Failed checks
- cases with a forged or mismatched document
- Per document
- median: read, examined and checked
Show your working
A forged statement, caught by the file itself.
A synthetic applicant's bank statement with the salary retyped over a white box, and Dossier's real reading of it. The amount looks right on screen; the file still holds the original underneath, and the new one is set in another font. Hover a row to see where it is.

Issuer: Northbank plc — read by the model, found on the page by code.
Failed checks · 2 reasons on the page
Do the sum yourself: 666.64 + 4,855.28 is 5,521.92, yet the next balance reads 4,021.92 = 666.64 + 3,355.28, the value hidden under the box.
| Declared | Bank statement | Utility bill | Passport |
|---|---|---|---|
| NamePriya Grace Pereira | matches | written differently | matches |
| Address59 Station Road, Bristol BS8 1XE | matches | matches | not on it |
| Date of birth24 July 1981 | not on it | not on it | matches |
The utility bill says “Ms P Pereira”: initials, so a person is not needed for that. The applicant is the same person on all three; the statement itself is what failed.
What it checks
The model reads. Code decides.
A model is good at reading a statement and bad at noticing that it was edited. So the model only reads; every check below is code, and every finding points to the place on the page.
Edited after issue
A PDF saved again after it was issued keeps its first version inside. Dossier compares them and shows the change: 3,820.97 → 5,820.97.
Text under a box
A white box painted over an amount hides it from the eye, not from the file. The original value is quoted.
Another font, out of line
An amount typed in a PDF editor rarely matches the bank's font or its column's right edge.
Balances that don't add up
Opening balance + money in − money out must equal every printed balance. One raised salary breaks the chain.
Passport MRZ
The machine-readable zone's check digits (ICAO 9303) and its agreement with the printed page.
Who and where
Names (initials, order, accents allowed; one changed letter is not), addresses by postcode and house number, dates of birth.
Used by someone else
The same statement in another applicant's case, and documents unlike an issuer's earlier ones.
Fresh and valid
Proof of address within your recency window, IDs not expired, payslips consistent with the declared income.
Measured, not promised
Every forgery type, through the real model.
The eval builds synthetic applicants, forges one document the way fraudsters do (a raised salary, recalculated balances, a retyped amount, a remade statement, a changed name, an altered passport date, a stale bill) and runs every pack through the production model and the checks. Genuine packs are in the same run, so false alarms count too.
Detection, published eval
LiveCaught so far
LiveLive
What Dossier is doing right now.
Counted from the app as it runs: applicants checked per day, outcomes, and each step as it happens. Only fixed wording and counts leave the server; no names, amounts or file names.
Applicants per day · 14 days
Live- Consistent
- Needs a person
- Failed checks
Outcomes
- Consistent—
- Needs a person—
- Failed checks—
Dossier · live activity
LiveWho it is for
Wherever a document stands between you and a loss.
Lenders and brokers
Bank statements and payslips behind an affordability check: an edited salary or a remade statement stops before the money goes out.
Letting agents
Proof of address and income for a tenancy: every document of the pack compared with what the applicant told you, and with each other.
Firms with AML duties
Proof of address for customer due diligence: fresh enough, the right person, the right address, the file not edited, every check recorded.
Ask the applicant
Send a private link: the applicant uploads straight into their case after a quick human check, and sees only which documents are needed and what they sent, never the findings.
Upload or drop
Drop files onto a case, or onto the list to start a new applicant with them. PDFs, scans and phone photos.
By email
Forward an applicant's email to the intake address: a case is opened for it, or the documents join the case its reference names.
Team notifications
Slack, Telegram or email when a case fails a check or needs a person: the case reference and initials only, never names or addresses.
Webhooks and export
Signed events when a case is opened, gets documents, changes outcome or is decided (n8n, Zapier, your CRM); every case as CSV or JSON.
Retention and erasure
Documents erased after your retention period, or one applicant's at once on request; the decision log keeps no personal data.
What it deliberately doesn't do
- It checks documents, never scores people: the outcome says what is wrong with a document, and a person decides.
- No face matching or liveness checks: no biometric data is processed.
- A passport's MRZ is checked, but genuineness needs the chip or security features: that is a certified identity partner's job.
- Not a consumer report: no US tenant screening (FCRA) and no automated refusals.
Questions
Asked before every rollout.
What is the second opinion?
After the checks, a separate decision model (TypeSafe Jev) is asked how likely a forgery is. It sees only the evidence: the kinds of documents and the reason codes the checks raised, never the applicant's name, address, numbers or files. It can only make a case stricter: a strong high risk on a case whose checks all passed sends it to a person; it can never clear a failed check. On the published eval it agreed with the checks on 42 of 44 packs and sent no genuine pack to a person.
Does Dossier decide whether to lend or let to someone?
No. It checks documents and says what is wrong with them, with the reasons on the page. The business decides about the person. It never scores an applicant (that is a high-risk use under the EU AI Act; document fraud detection is not).
Does it verify passports?
It reads the data page and checks the machine-readable zone's check digits and its agreement with the printed details. It does not claim a passport is genuine: that needs the chip or security features, which a certified identity partner checks.
Can it catch a statement made from scratch?
A perfect forgery made from nothing is the hardest case. Dossier still compares it with the issuer's earlier documents, checks every balance and identifier and looks for the same file in other cases; for high stakes, add open banking or confirmation from the issuer.
Where do the documents go?
To your own server (or ours, separated per business). Models are called only through providers that neither store nor train on them; names and addresses never appear in Slack, Telegram or email alerts. Documents can be erased on request or after a retention period.
How accurate is it?
Measured, not claimed: the published evaluation runs every forgery type and genuine packs through the real model. The current numbers are on this page and on the live page.
See them run on real data.
The apps run real models on every click, so they sit behind a password. Ask for a login or a guided walkthrough: talk to our AI receptionist in Front Desk, drop invoices into Docket, or load forged applicants into Dossier. Or try them in public: score a lead, read your invoice, forge an applicant, or connect Docket and Dossier to Claude. Or hire us to build yours.