Every document present,
valid, and agreeing with the others.
A case file arrives as a heap: bundled scans, phone photos, documents past their window, sometimes a document belonging to somebody else. Holofin splits them, classifies them, reads them, then judges the case: what is missing, who owes it, and what does not line up from one document to the next.
The verdict is recomputed on every document received, every corrected value, and every registry lookup that lands.
Today
The checking is done by eye,
document by document, case by case.
A case handler opens a file, runs down a list held in their head, checks the dates, compares two names, then writes to the customer. The work is repetitive, and that is exactly why things slip through it.
Documents arrive as a heap
An eighteen-page PDF, two photos taken at an angle, an email with four attachments. Nothing is named, nothing is sorted.
Documents past their window
A proof of address from last year, a company registration extract eight months old, a residence permit that expired last week. The date is printed on the page; somebody still has to look at it.
Identities that do not line up
The bank statement is in a married name, the identity document in a birth name, and the payslip names a third employer again.
Chasing in instalments
You ask for one document, it arrives, and it uncovers the next one that is missing. Three round trips later the case has taken two weeks.
Documents that are not authentic
A payslip whose net pay was edited inside the PDF, a statement whose closing balance was corrected. Complete, the document is; authentic is a different question.
Documents read
The documents in a case file
are read together, not one at a time.
Each document type has its own fields and its own internal checks. In a completeness check, what matters most is what they say to each other.
Identity document
The reference identity of the case: the one every other document has to confirm.
Payslip
Employer, pay period, gross and net. Three payslips means three distinct months, and gross minus deductions has to give the net that is printed.
Bank statement
Account holder, IBAN and period. A statement in somebody else's name is a gap, not a detail.
Employment contract
Employer, role, start date and contract type. The payslips have to name the same employer as the contract.
Proof of address
A dated document, whatever form your policy accepts. How fresh it has to be is part of the policy, not a habit.
Company registration extract
For a business case: legal name, registered address, officers and VAT number, to be held against the rest of the file.
Steps
From an unsorted upload
to a verdict that explains itself.
Five steps, always the same five, whatever shape the case file arrives in.
Intake
The case arrives over the API, from an upload portal, over SFTP, or into a dedicated mailbox. PDFs, images, bundled scans, photos taken on a phone: everything comes in through the same door.
Split and classify
A single file is cut into separate documents, then each document is recognised for what it is. The filename is never used as a source of truth: the decision is taken on what the pages contain.
Read
Each document returns its fields, together with the area of the page the value was read from. That traceability earns its keep later: a comparison that fails can be followed back to the pixels that produced it.
Check
Presence, validity and consistency are evaluated together, once per participant. The rules come from your policy, not from a generic checklist shipped with the product.
Verdict
One state per case, and the list of gaps that explains it: what is missing, who to ask for it, and what does not agree. Precise enough that a single follow-up covers the lot.
Controls
A checklist knows what it expects.
This one knows who owes it.
Requirements belong to participants, not to the file. A co-applicant brings their own identity document; a guarantor brings a different set entirely. The same policy therefore expects a different pile depending on who is actually on the case.
Presence
Is everything expected here, in the right quantity, for every participant?
- Participants are declared as a type and a count: one borrower who may be one or two people, at most one guarantor.
- Three statements means three distinct periods, not the same month sent three times.
- Some documents are only required under a condition: the account holder's identity document, and only when the statement is not in the applicant's own name.
Validity
Is each document still acceptable, and does it hold together on its own terms?
- Freshness: a company registration extract issued within three months, a proof of address from the current quarter, an identity document that has not expired.
- Legibility: a cropped or blurred photo is reported as unreadable rather than read badly.
- Arithmetic inside the document: gross minus deductions has to give the printed net, and the VAT on an invoice has to follow from its own lines.
- A bank statement has to balance: opening + credits - debits = closing, and the running balance has to hold line by line.
- Identifiers are recomputed, not eyeballed: IBAN check digits by mod-97 as ISO 13616 defines them, card numbers by Luhn.
Consistency
Do the documents contradict each other, or contradict what the customer declared?
- The account holder on the statement is the person on the identity document.
- The employer on the payslips is the employer on the employment contract.
- The address on the proof of address is the declared address, allowing for the ways an address gets written.
- The income on the payslips is the income the statement credits, within the tolerance you set.
These rules are written in plain language by the people who own the policy, then compiled: the compiled line is shown next to the description, so it can be read back and argued with.
Validation
A document can look immaculate on screen
and be wrong in five different places.
No single control is enough on its own. Holofin inspects every file, then every case, through five complementary levels: from the bytes of a PDF up to the consistency of a whole case file.
01
Structural
Has the file been tampered with?
On any PDF
Metadata, successive saves, layers and masking rectangles, fonts and pixels. No prior model needed: it runs on the first document you send.
02
Issuer-specific
Does it look like what this issuer produces?
Per issuer
A fingerprint learned from a handful of authentic documents per issuer: producing engine, embedded fonts, logo position, page geometry. Where an issuer prints a signed barcode or digital seal, this is also where it is decoded, its signature verified, and the sealed values compared with the ones printed on the page.
03
Content
Do the values hold together?
Per document type
Rules belonging to each document type: IBAN check digits by mod-97, Luhn on a card number, VAT arithmetic, the balance equation on a statement, a net that follows from the gross. A document can be structurally clean and still lie.
04
Business
Does it describe something that exists?
External data
Company identifiers, officers and VAT numbers held against verified sources. A perfectly consistent document can describe a company that does not exist, has stopped trading, or is run by somebody else.
05
Case file
Do the documents agree with each other?
Whole case file
Cross-checks from one document to the next — names, income, addresses, IBANs — and comparison with the expected values you already hold. Making one document convincing is feasible; keeping six of them in agreement is a great deal harder.
Levels 01–02: forensic models, with nothing for you to configure.
Levels 03–05: rules written in Hololang, our natural-language rule engine — described by the people who know the policy, not by the engineering team.
Signals from all five levels consolidate into one verdict, each with the evidence behind it: the case passes, goes to review, or stops.
Example
One case file,
scanned into a single 14-page PDF.
An applicant and a guarantor. The file is called case_final_v2.pdf and the pages are in no particular order.
What was identified
Six documents, two participants, out of one file whose name said nothing at all.
What the verdict says
Proof of income for the guarantor
The only payslips in the file belong to the applicant. The policy expects proof of income from each participant, so this is a missing document and not a missing field.
Payslip employer is not the contract employer
"Vallona Ltd" on the payslips, "Vallona Group Ltd" on the employment contract. Both values and the pages they were read from are attached to the gap.
Proof of address five months old
Past the freshness window, but not by much. The case goes to a reviewer instead of being refused on its own.
One follow-up, three points, sent the same day — instead of three follow-ups spread over two weeks.
Decision
Holofin checks and reports.
The decision stays with your teams.
A completeness check does not refuse a case. It says what is missing, what does not agree, and how certain it is. You set the thresholds: what passes on its own, what goes to review, what stops.
An ambiguous case is escalated, never ignored
A married name against a birth name, an address written two different ways, an employer whose legal name has changed: the case goes to review with the reason, the two values that were compared, and the document each one came from.
A rule that no longer applies to anything is reported
When the policy changes and a check ends up covering nothing, it is raised rather than quietly skipped. A control that has stopped running is a hole, not a saving.
Nothing is decided automatically on your behalf
Article 22 of the GDPR governs decisions taken solely by automated means where they carry a legal effect. The verdict is there to prepare the decision, not to take it.
What is kept behind every verdict
- Policy version
- credit-2026.3
- Engine version
- hololang 4.2
- Date the checks were pinned to
- 2026-10-02
- Value used by each comparison
- with its source document and page
- Decisions and policy edits
- kept append-only
A case judged a year ago can be re-read under the rules that applied at the time: that is what makes the answer defensible in front of an auditor.
Integration
The verdict lands
where the case is already handled.
Nobody wants one more tool to open. The state of the case and its list of gaps go back to the system your teams already work in, in whichever form plugs in fastest.
REST API
You post the case, you read the verdict back. Fields, gaps and sources in the same response.
Webhooks
The case changes state on every document that arrives, and you hear about it without polling in a loop.
SFTP
Drop and collect in batches, for the chains that already run overnight.
Document management system
The split and named documents go back filed, each with its recognised type and the participant it belongs to.
Upload portal
The customer uploads, the check runs immediately, and what is still missing appears before they leave the page.
Dedicated mailbox
For the cases that still arrive as an attachment, without changing anything the sender is used to.
Frequently asked
About completeness checking
Related
Case files rarely check themselves
Let us run Holofin on your case files
Send us a handful of real cases, including the ones that gave you trouble. We hand back the list of documents recognised, the gaps, and the inconsistencies, for you to compare with your own.