Name Matching rules

In this guide you'll learn more on how Yousign compares information on Company, Document and Identity Verification

Whether you are checking that a person is owning a bank account or that a document actually belongs to the person that is currently signing up for your service, Yousign is matching information between provided and extracted values.

Match Levels

You'll find three levels of match in the responses of our endpoints :

  • "match_level" : "exact"
  • "match_level" : "close"
  • "match_level" : "no_match"

Here's a response payload example when retrieving a Document Analysis result with checks :

{
  .....
  },
  "checks": {
    "full_name": {
	    "expected": "John Doe",
	    "extracted": "Jane Doe",
			"match_level": "no_match"
    }
  }
}

How to interpret these levels

Two names are considered an exact_match when :

  • Both strings are strictly equal.
  • Both strings match strictly after converting them to lowercase or stripping them from typical separators such as : "-" or " ".

When comparing multiple name strings (such as "Jean Paul" with"Jean Paul"), we additionally check that all name tokens ("Jean", "Paul") are strictly contained in both names.

Two names are considered a close_match when :

  • Both strings match taking into account small spelling mistakes or letter inversions. Indeed we also use scoring logic to improve matching by detecting matches even with errors, omissions or minor variations.

When comparing multiple name strings, we additionally yield a close_match when all the input name tokens are included in the extracted data. This allows us to yield a close match when a person has multiple names but only 2 of them were provided as inputs.

Some examples


Provided dataExtracted datamatch_levelWhy ?
"Nicolas Dupont""Nicolas Dupont"exact_matchBoth strings match strictly
"Jean-Baptiste Dupont""Jean Baptiste Dupont"exact_matchWithout the "-" both strings are included in one another
"Nicloas Dupont""Nicolas Dupont"close_matchThe letters "o" and "l" were inverted in the input data.
"Jean Dupont ""Jean Baptiste Dupont"close_match"Jean" and "Dupont" are included in ["Jean", "Baptiste", "Dupont"]
"Paul Dupond""Jean Dupont"no_matchDistance between both strings is too important

What to do in case of ano_match ?

First of all in our endpoint responses you will always find the extracted and expected values in addition to the match_level so that you can easily understand and act on the comparison results.

In case you receive a no_match, there are multiple things to check :

  • Did the user provide an input with too many spelling mistakes ? In that case ask the user to re-submit his information or review and accept the verification.
  • If you've asked for multiple verifications, ensure the information provided is consistent across all verifications, as sometimes data can vary depending on the document type you are verifying.