Check every document, face, and statement in a case against every other — and against other cases
Cross-Verification
Cross-verification answers: does this case agree with itself?
Individual documents can each be genuine while the application is fraudulent — a real PAN card, a real bank statement, and a real selfie that belong to three different people. Cross-verification catches composite ("Frankenstein") identities by comparing everything in a case against everything else.
Within a case
| Comparison | What it checks |
|---|---|
| Names across documents | Fuzzy, script-aware matching — "R. K. Sharma" vs "Rajesh Kumar Sharma" passes; a different person fails. |
| Dates of birth & ID numbers | Exact-match fields that must agree everywhere they appear. |
| Addresses | Normalised and validated against postal reference data, then compared across documents. |
| Photos | The face on every submitted ID is likeness-matched against the live selfie and against each other. |
| Statements vs evidence | In video sessions, what the customer said (from the diarised transcript) is checked against the session log and the submitted documents — a declared income that contradicts the salary slip is flagged. |
Discrepancies are reported per field with a match score, so your goal rules can distinguish "spelling variance" from "different human".
In a video session, the transcript-vs-session-log cross-check lines every scripted question up against what was logged and what was actually spoken — here catching a name and date of birth that were recorded one way in the session log but answered differently on the call:
Transcript vs session log panel from a flagged session — per-question table comparing logged and spoken answers with timestamps; the name and date of birth answers mismatch, and check chips flag question not asked, no consent statement, PAN face mismatch, and answers not matching Aadhaar/PAN
{
"check": "cross_match",
"verdict": "flag",
"field_scores": {
"name": 0.96,
"dob": 1.0,
"address": 0.41
},
"flags": ["address_mismatch:kyc_aadhaar~fin_bank_statement"]
}
Across cases
Entity resolution links the current applicant against your historical cases:
- Duplicate applications — the same person applying twice under variant details
- Repeat fraud — a face or document that appeared in a previously rejected case
- Shared attributes — many applications converging on one address, device, or bank account
Entities are normalised and fingerprinted, so linking works even when surface details are deliberately varied.
Gating with Goal Rules
[
{
"id": "names_consistent",
"severity": "hard_stop",
"check": "cross_match_field_gte",
"params": { "field": "name", "threshold": 0.9 },
"on_deny": { "message": "Name mismatch across documents.", "max_retries": 0, "remediate_type": "" }
},
{
"id": "no_prior_fraud_hit",
"severity": "hard_stop",
"check": "entity_no_watchlist_match",
"params": {},
"on_deny": { "message": "Watchlist / prior-fraud entity hit.", "max_retries": 0, "remediate_type": "" }
}
]
Related checks
- Face Match & Likeness — the biometric leg of cross-verification.
- Synthetic & Tampered Documents — integrity checks each document; cross-verification checks the set.