Thresholds
The LinkinLegal match threshold is 0.8 by default. What changes when you move it, which value fits onboarding or rescreening, and how to run a review queue.
threshold sets the line between a hit and a miss. A result gets match: true when its score is at or above the threshold.
{ "schema": "Person", "properties": { "name": ["Marina Gulina"] }, "threshold": 0.8 }The default is 0.8. Keep it until you have measured something else on your own data.
What moves when you change it
The threshold changes one thing: the match flag. It does not change which candidates come back. The number of results is set by limit (1 to 25), and results below the threshold are returned too, with match: false.
| Threshold | Effect |
|---|---|
| 0.7 | More hits to review. Fewer missed subjects. |
| 0.8 (default) | The balance we measured on our test set. |
| 0.9 | Fewer false hits. A typo or a missing middle name can now be missed. |
Three measured points help you feel the scale:
| Case | Score | At 0.8 | At 0.9 |
|---|---|---|---|
Missing middle name (Marina Gulina against МАРИНА КОНСТАНТИНОВНА ГУЛИНА) | 0.9333 | hit | hit |
Another person with a one-letter surname difference (Vladimir Putin against ВЛАДИМИР АЛЕКСАНДРОВИЧ ПУЛИН) | 0.8836 | hit | miss |
| The right name with a conflicting birth date | 0.7 | miss | miss |
0.88 for a different person is not a bug
Putin and Pulin differ by one letter. In the data these are two people, but in your input that
one letter is as likely to be a typing error. At 0.8 you see both and a reviewer decides. That is
the trade we chose.
Pick a threshold per use case
Onboarding one customer
A missed hit is expensive, and a person is already waiting for an answer.
- Set
thresholdto 0.7 andlimitto 10. - Treat
score0.8 and above as a hit to block. - Treat 0.7 to 0.8 as a review: hold the case and show it to a human.
- Send the birth date, the country and every identifier you hold. They push the true hit up and the noise down.
Nightly rescreening of your whole base
Volume decides here. A queue nobody can read is a queue nobody reads.
- Keep the default
thresholdof 0.8. - Use
match/batchwith 100 subjects per call. - Compare against the result you stored last time. Report only what changed: a new hit, a higher score, a hit that is gone.
- Raise the threshold to 0.85 or 0.9 only when your review queue is full of the same false hits, and write down what you gave up.
Payment or transaction screening
The decision must be fast and it must not stop good payments.
- Keep the default 0.8.
- Send the country. In payments you usually have it, and it separates people with common names.
- Keep the request small:
limit5 is enough for a stop-or-pass decision.
Run a review queue
A queue needs three columns: the subject, the candidate and the reason.
- Store every result with
scoreandfeatures, also the ones below your threshold. - Sort the queue by
score, highest first. - Show the reviewer the
featuresof the candidate and itsproperties. "The birth date does not fit" closes a case in seconds. - Write the decision back to your own record with the candidate
id. At the next screening, a known and clearediddoes not need a second review.
Before you move the threshold
Take 200 subjects you already decided by hand. Run them through match at 0.7, 0.8 and 0.9. Count the misses and the false hits at each value. Then pick.
A threshold that is not measured on your own data is a guess. The default is our measurement, not yours.
Last updated on
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.
Data freshness
How often the LinkinLegal sanctions data is loaded, how to read data_updated_at and last_change, and when a new entity can be matched.