Methodology

How a contact gets into this database, what is checked, what is inferred, and where the method has measured limits.

Sourcing

Every contact begins as a self-supplied professional record: a name and the social handles the person chose to publish about themselves. That record is the seed; nothing is inferred until it has been matched to a live public profile.

This has a specific consequence worth stating: the population is people who maintain an active, public professional presence in the Web3 industry. That is a real selection effect. It biases the database toward active, employed practitioners and away from anonymous or purely pseudonymous participants. For business development that bias is usually an advantage, but it is a bias.

Contacts are deduplicated on X handle. The master list contains zero duplicate handles.

Enrichment pipeline

  1. Extract the X handle from the source record and normalise it.
  2. Fetch the public X profile — display name, biography, follower count, location, website, verification badge. Nothing private is accessed.
  3. Test for a Telegram account with the same username, and pull that profile's public title and biography if one exists.
  4. Adjudicate the Telegram match through the identity gate described below. Matches that fail are discarded, not stored.
  5. Categorise — a language model reads the X biography and derives role, primary and secondary company, and vertical assignment.
  6. Publish into the master list and the relevant vertical lists.

Enrichment is re-run periodically, not continuously. A person's company and role reflect their public profile when they were last enriched, so someone who has changed jobs since may show a previous employer.

The Telegram identity gate

This is the part of the method most worth understanding, because it is where the data is weakest and where most vendors say nothing at all.

How a Telegram handle is found

The pipeline checks whether an account with the same username as the contact's X handle exists on Telegram and belongs to a person rather than a group. If it does, that username is recorded along with the account's public title and biography.

That is the entire match. The handle is the X handle. This is not a search for someone's Telegram account; it is a test of whether their X username is also taken on Telegram. A shared username is weak evidence — usernames collide, and popular ones are frequently taken by different people on different platforms.

What the gate does about it

Since August 2026, every candidate match is evaluated before it can be stored. The evaluator compares the X display name and biography against the Telegram title and biography and returns one of four outcomes — accepted, rejected, risky, or unscored. Only accepted can be written to a contact record.

The evaluator is instructed that a matching username is worth nothing:

Exact or similar usernames are zero evidence. Accept only when specific public name, company, role, project, website, or bio evidence connects the identities with no material contradiction.

An acceptance is downgraded to risky if no independent cross-profile signal exists, or if the evaluator reported any contradiction. Any provider error, timeout or malformed response produces unscored. The gate fails closed: when it cannot decide, nothing is saved.

The honest limitation

The gate governs new data. It does not retroactively reclassify Telegram handles collected before it existed, and the outcome is not currently stored alongside the handle. So the 31.5% Telegram coverage figure should be read as a handle is present, not this handle is confirmed.

An audit of a 300-contact random sample found:

The practical guidance: use Telegram handles as a lead to confirm, not an address to trust. Read the telegramTitle and telegramBio fields alongside the handle — a Telegram profile whose bio names the same employer as the X bio is strong corroboration, and an empty profile is none.

Why the field is published at all

Because for a portion of contacts it is correct and useful, and because a handle with a stated reliability is more valuable than no handle. The alternative — publishing the number without the caveat, as is common in this category — would be worth less to a buyer, not more.

Which channels to rely on

ChannelCoverageReliability
X (Twitter)98.9%Self-supplied by the person and confirmed to resolve to a live public profile during enrichment. The strongest channel in the dataset.
LinkedIn70.4%Self-supplied by the person. Not cross-checked against the person's name.
Telegram31.5%Inferred from username collision. Confirm before relying on it — see above.

99.5% of contacts are reachable on at least one of these, and 83.2% on two or more.

Categorisation

Role, company and vertical are produced by a language model reading the public X biography. This is inference, not self-report, and it inherits the bio's own staleness and ambiguity. Two known artefacts: 1.6% of records have a role that merely restates the vertical, and company affiliations frequently appear only inside the biography text as an @mention rather than in the company column — so a search across company alone will under-count genuine affiliations.

Known data quality issues

IssueRecordsStatus
Name is the X handle rather than a real name834Recoverable from the public profile; not yet re-enriched
Single-word name, no surname2,311As entered by the person
No biography text, limiting role and company inference1,865Profile had no bio at enrichment
Name and handle only — no company, role or bio595Thinnest records in the set
Stored profile URL disagrees with the handle57Known, low impact
LinkedIn URLs misfiled into the Telegram title column2,530Fixed 5 September 2026
Duplicate contacts0Deduplicated on X handle

Privacy and provenance

All enrichment draws on public profile data. No private accounts, no scraped message content, no member lists, and no email addresses or phone numbers are collected or sold. Every record starts from social profiles the individual published themselves.

Removal requests are honoured. Contact @catamountdata.

Last updated 6 September 2026. Figures measured against the production dataset and a 300-contact random audit sample. See also the data dictionary and coverage report.