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

ComparisonWhat it checks
Names across documentsFuzzy, script-aware matching — "R. K. Sharma" vs "Rajesh Kumar Sharma" passes; a different person fails.
Dates of birth & ID numbersExact-match fields that must agree everywhere they appear.
AddressesNormalised and validated against postal reference data, then compared across documents.
PhotosThe face on every submitted ID is likeness-matched against the live selfie and against each other.
Statements vs evidenceIn 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/PANTranscript 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