One of the most effective matching approaches is to start with a wide search to make sure that any relevant record is found. If no records return, you can:
- widen the search by using fewer attributes to find candidate records
- do multiple searches with more attributes but smaller query clusters
To run multiple searches you could break down a query with first name, surname and date of birth and run a series of searches with just 2 of those attributes.
Once you have a number of possible matching records, run further checks with additional attributes to deduplicate until you are confident in the match.
First search with last name and date of birth
For example, start with a first search for last name and date of birth. You may find clusters around 1 January and 1 June because children, immigrants and other people without official identity documents are often assigned these dates of birth.
If a no match is returned, then the search should be run using any verified historical last name attributes if offered by the identity provider.
You can also try synonym matching against forename and last name combinations such as transposing last name and forename. This can help match users who may use shortened versions of their name, a nickname, or their middle name rather than their legal first name. For example, a David Michael Smith might only use that name on his passport. He might use Michael Smith for other purposes, but refer to himself mostly as Mike Smith.
Filter candidates with postcode
If the search returns multiple possible records, use the postcode to remove false positives. A verified postcode might not be the current postcode of a user, but is more valuable for matching than an unverified current postcode. If a matching dataset does not contain any address, it is likely to be from an EU member state.
If you cannot find a match with the postcode, you can:
ignore it, try to get sufficient matches on another attributes and move to Cycle 3 for disambiguation ask the user to provided further attributes to be able to use Cycle 3 If you choose to request other attributes from the user, you should consider how best to capture the information. For example, whether to ask a user to return online and provide more information or if someone from your organisation can collect the information in a telephone call.
Build confidence in a single record
Once the matching service returns a single record, you should aim to increase your confidence score in the match.
You should first check for an exact match with first name, last name, date of birth and postcode.
If no match, transpose first name and any middle names. You may still need to use additional attributes to increase confidence in the match.
If no match with transposition, try looking for an exact match with unverified first name(s).
If no match with unverified first name(s), try using a list of synonyms. These lists will contain common synonyms, for example, William and Bill.
If no match, you may decide to apply your fuzzy matching rules or ask a member of your organisation to contact the user for more attributes.
Audit and testing
You should regularly audit matching requests and their outcome to help your refine your matching strategy and iterate your matching service.