Fraud detection

If they uploaded a document, we read every byte.

AI tools now generate stubs with correct year-to-date math, real employer names, and formatting indistinguishable from an ADP printout. Your team cannot tell by looking. Neither can most screening software.

9,600 fraudulent documents flagged across the ResProp portfolio.

The signals

Four of the seven, and the first one has no innocent explanation.

A stub that reports two different hourly rates in the same file was edited.

Hidden text layers

A PDF can show one number and store another. We compare both. One stub displayed $16 an hour on screen and stored $27 in the file data.

Metadata fingerprinting

ADP, Gusto, Wells Fargo each leave a specific producer trace. A consumer PDF editor leaves a different one. Corpus built from 14,561 documents.

Annotation artifacts

Payroll software generates a document once and never revises it. A post-creation edit means something changed after the fact.

Year-to-date math

YTD only goes up. When it does not, or the periods do not reconcile, the number was typed rather than calculated.

The fingerprint corpus

14,561 documents, and a 50% dominance threshold.

A fingerprint only counts when there are at least 30 files from that institution and one producer accounts for more than half of them. Bank of America: 602 files, producer dominance 86.9%.

  • Hidden text layers compared against rendered values

  • Post-creation annotation and edit artifacts

  • Producer and creator matched per bank and payroll provider

  • Known fake-stub generator sites flagged on intake

  • Year-to-date arithmetic reconciled across pay periods

  • Browser print-to-PDF distinguished from payroll output

  • Document type classified rather than trusted

The case that makes it concrete

$16 an hour on screen. $27 an hour in the file data. Same document.

Someone edited the visible text and left the original underneath. The renderer drew the top layer. The extracted text still contained both.

Every flag carries its reason in plain language. No black box score, and every override is logged.

FAQ

Detection questions

What is your false positive rate?
Metadata-only findings ran about 32% false positive in our own testing, and 26 of 38 flagged a library called pdf-lib that turned out to be innocent password removal. That is why metadata-only findings now require at least 0.90 confidence, and a mismatch paired with a plausible enterprise engine is not flagged at all. Conservative by default, because telling a real applicant their real document is fake is the worse error.
Why would a legitimate document have odd metadata?
Chase, Bank of America, Wells Fargo, and Truist password-protect statements, and Dayforce password-protects paystubs. Removing that password legitimately rewrites the file and changes its producer. An applicant who printed from a real payroll portal also generates a structurally unusual file from a completely legitimate source.
Do new forgery patterns get added?
Yes, and this is the part worth understanding. When the AI identifies a new pattern, the team converts it into deterministic detection logic. It becomes a permanent rule rather than a probabilistic guess, and every customer gets it.
What about documents that are not forged, just wrong?
Misclassification gets caught separately. An offer letter submitted where a pay stub was required, a year-end summary instead of a current statement, a non-US bank statement. Those defeat verification just as effectively as fraud does.
Is byte-level analysis your primary defense?
No, it is the fallback. The stronger answer is not to read a document the applicant controls at all. Connecting bank or payroll directly means the number comes from the institution. Forensics exists for applicants who cannot or will not link, which is a real and legitimate population.

Send us a stub you already suspect.

Or one you approved. Either is a useful test, and the second is usually the more interesting result.

Schedule a Demo