Sanctions

Reading a score

How the LinkinLegal match score is built from the name, the birth date, the country, the gender and the identifiers, with measured examples.

Every match result carries a score from 0 to 1 and a features object. score is the decision. features is the evidence behind it, so you can show a reviewer why a record came up.

{
  "score": 1,
  "match": true,
  "features": {
    "name": 0.9806,
    "birthDate": 0.1,
    "country": 0.05,
    "identifier": null,
    "gender": null
  }
}

How the score is built

  1. The name gives the base score, from 0 to 1.
  2. The birth date, the country and the gender add or take away a small amount.
  3. The result is cut to the range 0 to 1 and rounded to four decimals.
  4. An equal identifier is applied last: it lifts the score to at least 0.95, whatever the name did.
score = clamp(name + birthDate + country + gender, 0, 1)

A null feature was not compared, because one of the two sides does not carry that field. A missing field never counts against a candidate.

How names are compared

Before the comparison, both sides are cleaned:

  • Letters go to lower case and accents are removed.
  • Cyrillic and Greek are written in Latin letters, so ГУЛИНА meets Gulina.
  • Legal forms and titles are dropped: LLC, Ltd, JSC, ООО, АО, Mr, Dr and the rest.

Then the words are compared:

  • Word order does not matter. Putin Vladimir and Vladimir Putin score the same.
  • Every name and alias of a candidate is compared, and the best one counts.
  • Words are paired one to one and compared letter by letter (Jaro-Winkler). A pair that is too far apart counts as zero, so an unrelated word cannot lift the score.
  • A missing middle name keeps the score high: about 0.93.
  • One word against a multi-word name reaches 0.70 at most. A lone given name never passes the default threshold. This is deliberate.

The features

name

A number from 0 to 1. The base of the score.

birthDate

ValueWhen
0.1The full date is the same.
0.05Only the year is the same.
-0.3Both sides carry a date and no date fits.
nullOne of the two sides carries no date.

country

Read from citizenship and country together.

ValueWhen
0.05At least one country is on both sides.
-0.05Both sides carry a country and none is shared.
nullOne of the two sides carries no country.

gender

ValueWhen
0The same gender.
-0.03Different genders.
nullOne of the two sides carries no gender.

identifier

Read from idNumber, taxNumber, innCode, registrationNumber, leiCode, swiftBic and imoNumber. Punctuation and case are ignored.

ValueWhenEffect
1One identifier is equal on both sides.The score becomes at least 0.95.
-1Both sides carry an identifier of the same kind, and no value is equal.−0.30. Two companies with one name and two tax numbers are two companies.
0Both sides carry identifiers, but of different kinds.Nothing.
nullOne of the two sides carries no identifier.Nothing.

Worked examples

Every example below was measured on the live data.

A typo, with a birth date and a country

Subject: name Vladimir Puttin, birth date 1952-10-07, citizenship ru.

FeatureValue
name0.9806
birthDate0.1
country0.05
score1 (cut from 1.1306)

The typo cost 0.02. The two extra fields took the result to the maximum.

The right name, the wrong birth date

Subject: name Vladimir Putin, birth date 1985-03-02.

FeatureValue
name1
birthDate-0.3
score0.7, match: false

A perfect name is not enough when the birth date says it is another person. This is why you send the birth date.

A name in another script, without the middle name

Subject: name Marina Gulina. Candidate: МАРИНА КОНСТАНТИНОВНА ГУЛИНА.

FeatureValue
name0.9333
score0.9333, match: true

The Cyrillic name is written in Latin letters first. The missing middle name costs a little. Note that search does not find this record with the text Gulina, because the caption is in Cyrillic.

The wrong company name, the right tax number

Subject: schema Company, name Wrong Name LLC, innCode 7323006644.

FeatureValue
name0
identifier1
score0.95, match: true

The name says nothing. The identifier decides.

The right company name, the wrong tax number

Subject: schema Company, name Spektr Avia, innCode 9999999999.

FeatureValue
name1
identifier-1
score0.7, match: false

The same name with another tax number of the same kind is another company.

A lone given name

Subject: name Vladimir.

FeatureValue
name0.7
score0.7, match: false

0.70 is the ceiling for one word against a multi-word name. A first name alone never passes the default threshold.

A gender conflict

Subject: name Vladimir Putin, gender female.

FeatureValue
name1
gender-0.03
score0.97, match: true

Gender is a weak signal, so it moves the score a little. It never decides alone.

What to do with the score

  • Use match for the yes/no decision. Use score to sort your review queue.
  • Show features to the reviewer. "The birth date does not fit" is a better reason than "score 0.70".
  • Store id, score and features with your decision. At the next screening you can then see what changed.

Read Thresholds to pick the line between a hit and a miss.

Last updated on

On this page