One real document beat 100 synthetic ones
Dossier caught 100% of our synthetic forged applicant packs with zero false alarms. Then the first genuine UK bank statement arrived by email, and it was flagged as "balances don't add up".
Every row did add up. The problems were all ours:
Side-panel figures ("Average credit balance") were read as row balances.
The same amount, paid in and paid out, was matched to the wrong column.
Dates printed without a year were marked wrong.
A four-line address wasn't found, because the verifier joined at most two lines.
Two identical payments on one day were merged into one row.
Each got a general fix. The code now learns each money column per page, and skipped rows are found by re-walking the running balance. The forgery eval is unchanged.
The lesson: synthetic data proves your checks catch what you forge. It doesn't prove your reading survives real layouts.