A username is the most durable identifier online. Emails change with jobs and phones with carriers, but a handle invented at sixteen often stays with a person for good. That is why a username search usually yields the most: forums, gaming sites, professional services and social networks.
Round one: where the username exists
First the username is checked on thousands of sites by several scanners at once: user-scanner (~2,700 sites) tells whether an account exists, maigret (~3,000 sites) also pulls profile data such as name, city, bio, links and avatar. GitHub, GitLab, Keybase and Gravatar are queried separately: they hold the most verifiable links.
Where new leads come from
- Links in the bio and website field: a personal blog, Telegram, another profile.
- Keybase proofs: the person confirmed these accounts are theirs.
- Gravatar: accounts linked to the address.
- Emails from public GitHub commits, and a commit search by that email.
- Name permutations: pavel.belov, pbelov, belovpavel and similar.
New usernames and emails go into the next round. Not all of them: a link is taken only from an account whose name matches the target or whose source is strong. Otherwise a stranger with the same handle would steer the graph towards a completely different person.
Permutations get a quick pass first
A first and last name produce dozens of possible handles, and most are taken by other people. So permutations are probed with a short pass first. Only those that turn up accounts with the same name go into the full scan. Per scan: up to 8 permutations and up to 14 identifiers.
The further the round, the lower the weight
Each recursion round takes a confidence point away. An account found by the username itself weighs more than one found via a handle from someone's bio, which weighs more than one found by a permutation. Depth depends on the plan: one round on Free, two on Pro, three on Business.
The result
The report graph shows who was found through whom and in which round: this email came from that username's commits, this username from a Keybase proof. If a branch turns out to belong to someone else, mark its root "not them" and everything found only through it leaves the profile with it.