← All articles

Under the hood

Telling a person from a namesake: names, faces and the link graph

A username search finds hundreds of accounts. Half of them belong to other people with the same name. Here is how Oracul separates the right person from namesakes and why a name match alone is not enough.

The username "ivanpetrov" exists on thousands of sites, and nearly everywhere it is a different person. A scanner answers honestly: the account exists. The analyst's question is different: is it the same person? Put everything found into one profile and you get someone with three cities, five jobs and other people's photos. That profile is worse than none: it lies with confidence.

Step 1. A confidence score for every account

Oracul scores every account it finds. A name match weighs most, a mismatch is a heavy minus: "Igor Varga" for the subject "Andrey Sokolov" is another person even with the same username. Confirmation by several engines, a filled profile and a strong site such as GitHub or Keybase add points. Each recursion round takes one away: an account found from a name permutation is weaker than one found from the username itself.

  • 3 points or more: high confidence
  • 1–2: medium
  • −2 to 0: low, not in the profile
  • −3 and below: a different person

Step 2. Names with transliteration

One person signs as "Андрей", "Andrey", "Andrei" and "André". Oracul brings spellings to one form before comparing. Brands and site titles are not names.

If only the first name fits and the surname is someone else's, it is another person. A username that is just a first name ("andrei", "alex") proves nothing on its own: such accounts count only with the subject's full name on them.

Step 3. Shared usernames

When one username belongs to two or more people with different names, it is marked shared. Its accounts without the subject's name stop proving anything, otherwise the neighbours' data would leak into the profile.

Step 4. Faces on avatars

A name can match by chance; a face hardly ever does. Oracul finds faces on avatars and compares them with local models (OpenCV YuNet and SFace). Photos never leave the server. Accounts with one face form a "person" group.

  • Same face as the reference: accepted, even without a name.
  • Another face in a later search round: rejected.
  • No reference and different faces in later rounds: they cannot be attributed and are rejected.

Step 5. The graph and the analyst's marks

Every link keeps where it came from: this email came from that username's GitHub commits, this username from a Telegram channel description. The analyst sees the graph and can mark an account "not them". The account goes, and so does everything found only through it: the whole branch is cut. "This is them" makes the account the reference, and its face becomes the sample.

The result

Only accepted accounts go into the profile; the passport, timeline and portrait are built from them. Rejected ones stay in the report as a separate list with the reason: namesake, someone else's name, another face, shared username. Every decision is visible and can be revisited: the raw scan result never changes.

Run your first scan today

5 free scans every month. No card required.