EigenRep: the production graph, and the upgrades we shipped

What changed in the investor-reputation scores, why we changed it, and the effect on real accounts, in plain language.

EigenRep gives every X/Twitter account a reputation score, one overall score, plus a score for each of 10 industries (AI, fintech, space, biotech, nuclear, and so on). It reads who follows whom across ~10.45 million accounts (the second-ring crawl as supplied). This page shows the raw production graph we received and the upgrades we shipped on top of it.

The base: the dev-package graph

We start from the dev package you provided: the second-ring (S1) crawl as supplied10,450,658 accounts and 76.4M follow edges from 101,564 crawled sources — which also ships an LLM read of the crawled core’s recent tweets (120,855 accounts — 1.2% of the graph by count, but the connected core that carries the reputation; scored per sector). Account and classification counts are read off the rendered files; the edge and source counts are from the supplied graph.

We say as supplied rather than complete deliberately: the pipeline metadata lists 107,167 qualifying S1 accounts against the 101,564 that actually appear as edge sources. The gap may be private or zero-following accounts rather than missed ones — but nothing in the package establishes that, so “full” is not a claim we can back. Everything below is built on top of this package.

The problem: raw reputation makes fame look like expertise

Reputation straight off the follow graph has one flaw: famous people look like experts in everything. Everyone follows them, so the math ranks them in every industry — on the raw graph Barack Obama is a top “quantum-computing” person, Elon Musk tops AI, defense, robotics and space, and NASA and OpenAI sit atop the investor lists. That’s accurate about fame, wrong about expertise; the job is to turn it into real sector standing, with famous and brand accounts off the sector lists.

What the raw graph surfaced, and what we do with it

Not hypothetical — here is what raw follow-graph reputation put on the leaderboards, and what our improvements do with each.

accountraw graph showednowthe fix
Elon MuskSemiconductors 981robotics 997 · space 997 · AI 900 (researched membership) · semi 491 (graded, de-walled)specialty lens, focused to his real domains
J.K. RowlingAI/ML 9610 in every sector · Fame tierfame filter, keeps a global rank, no sector
Turning Point USASpace 9680 in every sector · Org tierorg filter, a political org, not an operator
TBPN (a podcast)AI/ML 9700 in every sectororg filter, a media brand, not a person
Piers MorganDefense 9670 in every sector · Fame tierfame filter, a journalist, not defense
Cristiano RonaldoAI/ML 9570 in every sectorskill-graph density gate, an athlete’s huge following dilutes to ~0

The improvements we ship on top

The dev package already scores each account’s tweets by sector. On top of that we ship eight improvements — each fixes a different failure of raw follow-graph reputation:

Content treatment. The package already classifies the crawled core’s tweets per sector (120,855 accounts) — we don’t redo that. We consume it two ways: a conf ≥ 0.5 cut decides whether a sector counts as content-confirmed, and the resulting content score then weights how much that account’s endorsement is worth to everyone it follows.
Org filter. Companies, agencies and funds off the person leaderboards.
Fame filter. Famous non-participants off the sector lists (they keep a global rank).
Specialty lens. A confirmed generalist is focused to their real domain (Elon → space/robotics, not semiconductors).
Global score scale. The global score is log-scaled against the graph’s own percentiles so the top isn’t a wall of 1000s.
Follower / expert-density skill-graph (the core). Sector standing from who follows you, weighted by their own standing; an expert-density gate keeps celebrities and brands out; for an account that clears it, every sector is graded rather than kept-or-dropped.
Plus a curated marquee bridge. A few famous investors the graph can’t read from tweets get their sector asserted editorially (magnitude still from the graph).
Smart Followers — researched sector membership. (change 7, below) The go-to-market research on thousands of notable accounts, applied as a floor on the final sector score so an account is placed by what it actually does. The tables and radars on this page were rendered directly from the production scoring file (that file built 2026-07-29 12:46, 2,453,328,497 bytes; this page rendered 2026-07-29 13:42) — the research layer is included in every number here, for the 9,995 accounts researched so far. If the scoring file has been rebuilt since that render stamp, this page is stale until it is regenerated — a static page cannot know, so the two timestamps are printed to make it checkable rather than asserted.

The improvements in depth

Each improvement: what it is, how it works, why, and the result. Verdicts are audited, not self-assessed — ✓ Fully solved, ◐ Mostly / Partly / Partial works with the limit stated in Result, ◐ Stopgap deliberate placeholder. One card reads Fully.

Content treatment◐ Partial
What it isUse the package’s per-sector tweet-confidence as a correctness signal — we consume it, we don’t re-run it.
How we do itPast the confirmation cut, the account’s content score (not a binary flag) weights how much its endorsement is worth to everyone it follows — so content grades the whole graph, not just its own row.
MechanismTweet-LLM (DeepSeek v3.2, scores.json): per-sector confidence 0–1 from bio + ~20 tweets; a sector is content-confirmed at conf ≥ 0.5. The resulting content sector score — not the raw confidence — is what weights its endorsement in RE.
WhyThe graph alone can’t tell an AI investor from an AI journalist with the same followers — content adds that correctness.
ResultA tweet-backed sector stays elite; an unbacked one falls to a graded follower standing, not the raw fame score. Partial: the LLM confidence is used as a 0.5 cut, not yet a continuous calibrated probability.
live examples · raw graph → now
@vitalikbuterinfintech 975959 tweets back crypto=fintech   climate 974347 no tweets on it → graded
@chamathAI 978710 investor, content-adjacent   space 981470 off-domain, graded down
Org / entity filter◐ Mostly
What it isKeep organizations and media off the person leaderboards.
How we do itAuthoritative first: verifiedType = Business hard-masks (companies only); Government defers to the classifier (it is issued to individual officials too, so an account reading as a person is spared). Where the type is missing — most of the graph, because the crawl discarded it — a trained person-vs-entity classifier over name + bio + graph features stands in, and the curated org_augment list hard-masks the residue (160 handles as this page rendered, incl. @tbpn; the list is hand-edited, so how many accounts it closes changes with it and is not a fixed number).
MechanismGradient-boosted classifier (sklearn) → P(person). Mask when p_person < 0.15; a content anchor does not exempt an account, it only tightens the bar to 0.05 — which is how @a16z is caught despite on-topic tweets. Held-out accuracy ~99%, but that is agreement with the same weak labels it trained on, not real-world precision. Full coverage, against the old verifiedType cache’s 0.27%.
WhyLeaderboards are person-level; NASA / OpenAI / a16z aren’t investors.
ResultOrgs keep a global rank and score 0 in every sector. The authoritative account type masked 1,127 accounts, 345 still holding sector scores (2026-07-27 build log; the shipped file keeps no pre-mask state). Mostly: the named leaks (@huggingface, @economist, @perplexity_ai, @tbpn) carry no verifiedType, so no re-fetch would label them — curation closed them. The general case (an org with no type and expert followers) stays open, which is why grey contamination is not yet bounded. Durable fix: capture account type at crawl time (see the raw-data section).
live examples · raw graph → now
@nasaspace 9830 ✓   quantum 9760 ✓
@openaiAI 9830 ✓   robotics 9780 ✓
@a16zfintech 9780 ✓ caught by the new classifier (baseline missed it)
@sequoiafintech 9770 ✓
Fame filter◐ Mostly
What it isKeep famous non-participants off the sector lists.
How we do itFamous accounts with no content relevance and no confirmed sector are moved to a Fame tier (global rank kept).
MechanismRule: global-rank ≤ 5000 AND either (a) in the LLM set AND overallRelevance ≤ 0.15 AND no confirmed sector AND not a seed/org, or (b) the purity branch — ρ_global < 50 (compute_rho_global.py), which is what catches most celebrities → Fame tier, every sector 0.
WhyObama is famous, not a quantum researcher.
ResultCelebrities keep a global fame rank, score 0 in every sector. Mostly: a fame proxy, not an entity test — the density gate below is the real backstop.
live examples · raw graph → now
@jk_rowlingnuclear 9750 ✓   defense 9730 ✓
@barackobamaclimate 9810 ✓ famous, not a climate scientist
@piersmorgandefense 9670 ✓
@mrbeastspace 9780 ✓
Specialty lens (ρ)◐ Partly
What it isFocus a confirmed generalist toward their real specialty instead of riding global fame.
How we do itEach confirmed sector is re-weighted by how specialised the account is there vs. their overall prominence.
Mechanismscore_s = logknee(ρ_eff · spec_s); spec_s = the account’s raw sector PageRank; ρ = spec_s ÷ global; ρ_eff = max(ρ,0.15) if elite (global percentile ≥ 900 on the 0–1000 percentile scale — the top 10%) else 1.0; logknee = the same monotone log-knee-to-0-1000 map as the global scale. Topic-sensitive PageRank shaping (Haveliwala, WWW 2002). Constants read live from build_final_newgraph.py at render time.
WhyA central account looks strong everywhere; only their real domain should score high.
ResultOff-domain sectors are demoted relative to the account’s own centre of mass; its strongest confirmed domains keep the top of the scale. Partly. Three structural limits: (1) it reshapes magnitude, it does not validate membership. ρ only rescales sectors the anchor layer already accepted, so a wrong anchor keeps an elite score with a lensed number on it. Hand review of the 268-case conflict cohort found 168 accepted anchors that were simply wrong — @preskill AI 742 and @peterdiamandis semi 842 among them, both lens-shaped, both removed only by human adjudication. (2) It is elite-only: ρ_eff is exactly 1.0 (the identity) unless the account is in the top 10% of the global distribution, so on the other ~90% of scored accounts the lens does nothing at all. (3) The demotion is floored at ρ ≥ 0.15, so an elite’s off-domain confirmed sector can never fall below 15% of its global mass however far off-domain it is.
live examples · raw graph → now
@elonmuskrobotics 1000997 seed-curated anchor — the lens keeps it elite   space 1000997 seed-curated anchor — kept
(scope note)The lens only reshapes sectors the anchor layer already accepted — and that layer is the tweet classifier plus seed curation, so an anchor is not always something the account posted about. A sector with no anchor, like @elonmusk defense (984→675), is set by another layer entirely — here the researched-membership assertion (Starshield / national-security launch) over a de-walled grey floor — and @naval’s fintech 675 likewise. Neither is the lens.
Global score scale (global_db)✓ Fully
What it isDe-saturate the global score so the top isn’t a wall of 1000s.
How we do itThe raw graph score is spread over a log axis whose anchors are percentiles of the graph itself, after removing the free mass the algorithm hands its own seeds.
MechanismTwo steps. (1) Seed de-bias: personalized PageRank returns its restart mass (α=0.20) plus recycled dangling mass to the seed vector, which handed every seed a self-teleport floor — so the raw global top was, by construction, the seed list. That teleport term is subtracted from seed raws before scaling. (2) Percentile-anchored piecewise rescale of log₁₀(raw) — not a fixed-offset decibel map: linear from the LO_PCT = p0.5 anchor up to the KNEE_PCT = p99.9 knee across 0–BAND = 950, then log-linear from the knee to the maximum across 950–1000. BAND = 950 is deliberate: it is the same band the sector scale uses, so the two axes are the same 0–1000 transform and the same band — which is what removed the artefact where the same person read 868 global against 953 fintech purely because two different maps were in play. Same transform, not one ruler: each axis is anchored to its own population — global to the whole-graph distribution, each sector to that sector’s — so a global 850 and a sector 850 carry different evidence. Compare within an axis, never across. The frozen decibel reference (decibel_R_REF.txt) still fixes the content-layer sector magnitudes, which is where the ‘db’ in the column name comes from. Base algorithm: EigenTrust (Kamvar, Schlosser & Garcia-Molina, WWW 2003) — personalized PageRank, α=0.20. Constants read live from build_combined_scores.py.
WhyRaw PageRank piles hundreds of thousands of accounts at the ceiling; anchoring the axis to the graph’s own percentiles spreads the real elite.
ResultThe count of accounts scoring global ≥900 drops from 605,011 to 19,893 (measured on the file rendered above).
live examples · raw graph → now
(all accounts)accounts scoring global ≥900: 605,01119,893 the elite is spread across the axis, not piled at 1000
Follower / expert-density skill-graph (the core)◐ Partly
What it isSector standing from who follows you, weighted by their own standing, graded into a full ten-sector radar wherever the evidence reaches.
How we do itOne account-level admit gate (expert density, so celebrities/brands are rejected) — content anchors and curated tags bypass it. Past the admit, sectors are graded on a continuous curve rather than a keep/drop rule, with one hard floor: a sector below the evidence threshold reads 0 rather than a fabricated number.
Mechanismsel(f) = 1÷√max(followingf,30), rescaled so its edge-weighted mean is 1 (a selectivity discount, not a strict row-normalization). RE_s = Σfollowers(their sector score × sel). Admit if NOT org/Fame/entity AND [ max(RE÷followers) ≥ 0.5 AND followers>0, OR the account has a content anchor, OR a curated tag ]. Per-sector hard gate: RE_s < 250 → 0. Then, per account: share p_s = RE_s÷ΣRE; entropy H; γ = 0.42−0.2·clip((H−0.45)/0.2) (so γ runs 0.42 concentrated → 0.22 diffuse); ceiling C = 760·(0.64+0.36·[ 0.5·clip(db/950)0.8 + 0.5·ATT ]) where ATT = evidence(RE of the top sector) × (0.6+0.4·lift over that sector’s population baseline) (the ^0.8 is the mid-tier lift and the db denominator tracks the global band; the ATT half is the ‘grey attainment’ term, live by default, so the ceiling is not a pure restatement of the global score); u_s = C·(p_s÷max p)γ. Cap K = min( anchor−70 , 500+25·ln(1+(anchor−70−500)/25) ) for an anchored/tagged account, else C — a soft log-knee, live by default, replacing a flat min(500, anchor−70) that pinned every elite’s top off-domain sector to exactly 500. DE-WALL (live): off-domain sectors are rescaled together so the strongest reaches K and the rest keep their gradient (no flat ring). Floor F = (150+0.2·db)·RE÷(RE+1500); visible minimum V_s = (105+137·clip(db/950)0.8)·RE_s÷(RE_s+350) — evidence-ramped, because the constant it replaced (a flat 110) had itself become the most common value in the file. Final: score = 0 if RE_s<250, else min( max( min(max(u_dw,F),K), V_s ), max(K,V_s) ). One exemption, live: a sector the Smart-Followers research asserts at m ≥ 0.5 is not treated as off-domain, so it is capped at C rather than K. Every constant above is read out of build_combined_scores.py while this page renders — if one is retuned or renamed the page fails to build rather than printing a stale formula.
WhyWho-follows-you is our strongest single signal; but a footballer’s huge diffuse following must earn nothing.
ResultGraded, nuanced radars for the accounts that clear the admit gate; a clean zero for celebrities and brands. Partly: whether the follower net can recover experts the tweet-LLM missed is honestly unmeasured — the held-out probe set turned out to use wrong handles, and once corrected every held-out expert already carried a content anchor, so it cannot isolate the follower layer. Grey contamination is not a closed interval either (the entity classifier is confidently wrong on some brands), so bounding both needs an independent hand/LLM-labelled sample. And grey is best read as an admit + shape signal, not a precise cross-account rank: on the smaller sectors its ordering is noisier than the content layer’s (an over-whitening tripwire flags 6 of 10), so leaderboards should lead with content-anchored accounts.
live examples · raw graph → now
@pavelprataspace 972511   biotech 966513 was 0 before the follower fix
@redphonefintech 946706 his niche, kept   defense 946113 graded near-zero
@cristianoAI 9570 ✓ footballer: diffuse following earns nothing
@lebronjamesquantum 9690 ✓
Curated marquee bridge◐ Stopgap
What it isPlace famous investors the graph can’t read from tweets.
How we do itTheir sector is asserted editorially (same basis as the seed list); the magnitude is still set by the graph.
MechanismEditorial sector tags. Magnitude = 850 · (share ÷ top-tagged share)0.6, and only where that sector’s inbound endorsement mass RE_s ≥ 1000 — a tag on its own buys nothing; the sector is asserted, its strength is measured from inbound endorsement, and a tagged sector the graph cannot see at all stays 0. Constants read live from build_combined_scores.py.
Why@pmarca’s followers look statistically identical to a journalist’s; only editorial knowledge places him.
ResultThe marquee names hold their real sectors; the graph, not a guess, sets how strong. Stopgap: a hand-curated list — 17 accounts, 28 tagged sectors, counted from investor_sector_tags.txt as this page rendered — and the durable fix is the same content/entity signal used everywhere else.
live examples · raw graph → now
@wolfejoshbiotech 976850 Lux deep-tech, editorial tag
@kenhoweryfintech 962850 Founders Fund   space 974614 also tagged
@pmarcaAI 977850 asserted sector, magnitude from inbound endorsement
@navalAI 975850 tagged; his fintech now comes from the researched-membership layer instead
Smart Followers — researched sector membership◐ Partly
What it isThe go-to-market research on thousands of notable accounts, fed back into the scores so an account is placed by what it actually does.
How we do itBuilt for the card that shows which notable people follow you and why they matter, which meant researching those accounts one by one with sources. The same people are the ones the sector scores most need to get right, so the research is reused: every researched account carries a 0–1 membership for all ten sectors, with the evidence for each. 9,995 accounts researched so far (the original 5,386-account Smart Followers set is 100% converted); the other 10,440,663 accounts in the graph carry no research record and are untouched.
MechanismIt is a floor on the final score, applied after the graph has spoken — not a change to the walk. The existing precedence chain runs first (content anchor → curated tag → grey follower-standing). Then, for a researched account only, an asserted sector becomes max(existing, membership × authority), where membership is the 0–1 research value and authority = 250 + 650·clip(global_db÷950)0.8 — so the research says which sector, the graph still says how much. Silence is no longer neutral. The original brief asked only for an account’s defining sectors, so an omission carried no information and the graph’s score stood. The corrected spec requires all ten to be judged, so an omission is a considered negative: research precedence removes the content anchor beneath it (provenance r, 1,191 removals). A record qualifies only when research_status=verified and sector_scope=complete. Presence of research_status alone is not enough — narrow identity-rescue passes emit it too, and their silence means “this pass was not looking”, not “not this sector”. Separately, a researched account now propagates: it emits sector reputation to everyone it follows (3,115 source cells), so a correction reaches the accounts downstream of it rather than stopping at the account itself. Ceiling 900, above the curated-tag cap of 850 and below the content-verified elite.
WhyThe tweet gate reads a thin sample — bio plus roughly the last 20 tweets — and it shows: it scored Jack Dorsey 0 in fintech (he runs Block), Tim Cook 0 in semiconductors, and Bill Gates 0 in nuclear (he chairs TerraPower, and it caught only his climate work). The research already knew all three. We measured how often each side is right. A conflict is one (account, sector) pair where the anchor layer (score_source == ‘a’ — tweet-LLM in 260 cases, seed curation in 8) scored a researched, leaderboard-eligible account ≥500 in a sector its research record does not list. Each of the 268 was judged on its evidence: the anchor layer wrong in 168 (63%), the research in 92 (34%), 8 arguable — where they disagree the anchor layer is wrong about 1.8× as often, and 142 of the cases sat inside a sector’s top 100 or top 1,000, so these were visible placements rather than tail noise. The failure is structural, not random: AI is ambient, so a fintech founder who merely talks about AI outranks working AI researchers (131 of the 268 cases are ai_ml, 66% of them anchor errors); drone and defense companies bleed into space (70% error over 27 cases); market commentary bleeds into fintech (88% over 8 cases, the worst rate of any sector with enough cases to quote) even though finance is not financial technology. Read it for what it is: a frozen, dated cohort (2026-07-28, non-org and non-low-confidence records only, and it grows), measuring one direction only — the anchor layer’s false positives on 268 contested placements, not content scoring in general, and not the reverse case where research asserts a sector content missed (Dorsey, Cook above). Nothing inside the graph tells you which placements are the wrong ones.
ResultThe research layer sets 1,540 (account, sector) standings across 1,383 accounts, every one a value it raised. That footprint is deliberately small — for most researched accounts the graph already scored the asserted sector at or above the research ceiling, so the floor does not bind. Its larger effect is the other direction: it types 1,781 of the 9,995 researched accounts as companies, media, government or institutions, and those come off the person leaderboards (terrapower, axiom_space and similar sat at 960+). Partly: 9,995 accounts are researched against a target of ~10,000, so an account not yet covered is simply unaffected. And the floor is asserted, not measured — if the research is wrong about a sector, nothing downstream contradicts it. That is the cost of answering a question the graph cannot. On ordering (measured on the separate seed-steered prototype of 2026-07-27, not on the file above): 0–3 changes in a sector’s top 20, 7–20 per top 100, 100% of curated seeds retained. That movement is substantially a reshuffle among the same generalists — Garry Tan and Lex Fridman leave space for AI; Brockman and Benioff leave fintech for semiconductors; Ben Thompson leaves AI for fintech — plus a real but partial fame-out / practitioner-in effect, not a clean ‘generalists out, operators in’ swap.
live examples · content gate alone (llm_<sector>_score) → now
@elonmuskAI 0900 xAI / SpaceXAI — membership 1.0 × authority   defense 0675 Starshield — membership 0.75
@jackfintech 0900 runs Block
@tim_cooksemi 0675 Apple silicon
@billgatesnuclear 0900 chairs TerraPower
(prototype)Measured on the separate seed-steered re-run, not on the scores above — robotics gains @adcock_colby (Colby Adcock, Scout AI) and Luca Carlone (MIT); space gains George Whitesides (Virgin Galactic) and Hayley Arceneaux; fintech gains Toly (Solana) and Mike Novogratz (Galaxy). Alongside those, generalists trade one sector for another.

The full picture, every sector: the dev-package graph → our upgraded scores

Every tracked account, all 10 sectors: raw graph → our final scores. Overall is whole-graph reputation on the 0–1000 db scale. The sector work does not touch it, but the two overall values are not the same quantity: the after side is re-derived by the percentile-anchored rescale and by the seed de-bias that strips the free self-teleport mass personalized PageRank hands its own seed accounts — so rank order changes too, not just the units. Sector numbers are standing within that sector. Bold green = content-anchored — the sector was confirmed by the tweet classifier or by seed curation. The MAGNITUDE is still the graph's (ρ-lensed PageRank), not a tweet count. Amber = graded — follower-standing, a curated marquee tag, or researched membership (the per-sector layer is in score_source). Red strike = fame removed. · = never scored.

accountoverall (db)AIFinRoboSpaceBioClimQtmNucDefSemi
Real experts (AI leaders), focused to their true domains
@sama997992Legend1000998979675981489979410976481977425972373977450978409979445
@karpathy996988Legend10009999784671000999976371977446972370973377965344978362980443
@ylecun995986Legend1000999970396982511973345973430970345973391967343976345978444
@gdb995983Legend1000999978463979464969344963416971344968344970340974346976418
@demishassabis995983Legend10009999714259785089733511000999973363972396961340976348974433
@andrewyng995982Legend1000999968399981506970343973429970345969377963337975344979441
@elonmusk: raw fame in every sector → his real anchors kept (space, robotics, PayPal fintech), AI and defense asserted by researched membership, the rest a de-walled grey ring
@elonmusk10001000Legend98090098296610009971000997978531976900976441980451984675981491
Balanced multi-sector radars: earned anchors plus lighter interest around them
@davidsacks47973967Elite961950969953959488965513861464962445829360967395973525965516
@peterdiamandis977973Titan9669559655589755709739579719549735569644009694189714699600
@leijun961950Notable770356960416962872831383864358834418812207783214963315971564
@tashaark964956Notable8044507975459719569630922535965570863265895405963465909477
Famous non-experts, removed from every sector (kept only a global Fame rank)
@jk_rowling975970Fame9610965097209710931097009690975097309640
@barackobama986986Fame9740977098009750974098109780978097009750
Organizations, moved to the Org tier, off the person lists
@openai994996Org9830972097809710971097309710974097509780
@nasa986985Org9690972097309830970097109760976097209720
Marquee investors the graph can’t place from tweets (off-topic posts, diffuse elite following): sector asserted editorially (seed-list basis), magnitude set by their real inbound endorsement strength
@pmarca989989Legend977850979675981489981450976675974459971357978370981675977439
@naval985983Legend975850978675978477980439968488973448965344975358979426972413
@balajis983981Legend973850977900975469979434973505973446961360975372981438967403
@wolfejosh980976Titan967707973480971410977675976850974410968337973348977675967395
@kenhowery967959Notable950563962850960423974614960454773421807183968358976596741307
@edyson970963Elite951563966464926381967800963850970431934310969308965368965318
Legion team & tracked accounts: pre-optimization the raw graph gives them a top score in every sector (fame) → post, a graded score where the follower graph shows real sector concentration, or removed where the account reads as an org/brand (e.g. @murphcapital, “new media…for emerging VCs”, is entity-typed out) or shows no concentration
@wazzcrypto947764Ranked8273039659218011719231768690864082216191509050892163
@pavelprata959936Notable725707827657797484972511966513798408784331868391875502770368
@zemariamacedo947764Ranked931541948708935274938257943284911224944220948147949270935338
@murphcapital938668Unranked8600888084609510897086408270930090908180
@redphone944729Unranked932451946706918236935190933102931228949200948170946113913214
@matty_935638Unranked84439593569786714592909291777141379171579270877118805165
@lukedelphi937655Unranked8765069346959362349161748761568670898094209230910189
@iamsage920566Unranked722441906686797203852112837150591184664090308930801168
@therosieum931612Unranked8735689316888181418990844120790245904203915129894138810128
@fabrizio_builds907526Unranked70942480068181715789319792405300816089708722306860
@uselegion822399Unranked4624856856597233358410709034604590461065005490
@legiondotcc937659Unranked846416934698950212944145946144800105893136951105948170822163

The skill-graph radar, on the full graph

Each account is a radar: red = raw graph (maxed everywhere, fame), green = the score rendered on this page — content-confirmed anchors high, graded follower-standing (plus curated tags and researched membership where they apply) around them, true zero where there’s no connection. 2,533,491 accounts hold a sector standing; accounts with no sector signal keep only a global rank.

Real experts — content-anchored, now with a graded ten-sector radar
raw graph
Now (combined)
@ylecun: content anchor AI 999 · follower-standing robotics 511, semi 444, biotech 430.
raw graph
Now (combined)
@sama: content anchor AI 998 · researched membership fintech 675, nuclear 450 · follower-standing robotics 489, biotech 481, semi 445.
raw graph
Now (combined)
@lisasu: content anchor semi 1000, AI 953 · follower-standing robotics 484, biotech 416, fintech 396.
raw graph
Now (combined)
@preskill: content anchor quantum 1000 · follower-standing biotech 338, semi 338, space 334.
raw graph
Now (combined)
@davidsacks47: content anchor fintech 953, AI 950 · follower-standing defense 525, semi 516, space 513.
raw graph
Now (combined)
@karpathy: content anchor AI 999, robotics 999 · follower-standing fintech 467, biotech 446, semi 443.
Marquee investors — sector asserted editorially, magnitude from the graph
raw graph
Now (combined)
@pmarca: editorial tag AI 850 · researched membership fintech 675, biotech 675, defense 675, space 450 · follower-standing robotics 489, climate 459, semi 439.
raw graph
Now (combined)
@wolfejosh: editorial tag biotech 850, semi 395 · researched membership space 675, defense 675 · follower-standing AI 707, fintech 480, robotics 410.
raw graph
Now (combined)
@naval: editorial tag AI 850 · researched membership fintech 675 · follower-standing biotech 488, robotics 477, climate 448.
raw graph
Now (combined)
@balajis: editorial tag AI 850 · researched membership fintech 900 · follower-standing biotech 505, robotics 469, climate 446.
@elonmusk — raw fame in every sector, focused to his real domains
raw graph
Now (combined)
@elonmusk: content anchor robotics 997, space 997, fintech 966 · researched membership AI 900, climate 900, defense 675 · follower-standing biotech 531, semi 491, nuclear 451.
Legion team & tracked accounts
raw graph
Now (combined)
@wazzcrypto: content anchor fintech 921 · follower-standing AI 303, space 176, robotics 171.
raw graph
Now (combined)
@pavelprata: follower-standing AI 707, fintech 657, biotech 513.
raw graph
Now (combined)
@zemariamacedo: follower-standing fintech 708, AI 541, semi 338.
raw graph
Now (combined)
@murphcapital: global rank only.
raw graph
Now (combined)
@redphone: follower-standing fintech 706, AI 451, robotics 236.
raw graph
Now (combined)
@matty_: follower-standing fintech 697, AI 395, biotech 177.
raw graph
Now (combined)
@lukedelphi: follower-standing fintech 695, AI 506, robotics 234.
raw graph
Now (combined)
@iamsage: follower-standing fintech 686, AI 441, robotics 203.
raw graph
Now (combined)
@therosieum: follower-standing fintech 688, AI 568, climate 245.
raw graph
Now (combined)
@fabrizio_builds: follower-standing fintech 681, AI 424, defense 230.
raw graph
Now (combined)
@uselegion: follower-standing fintech 659, AI 485, robotics 335.
raw graph
Now (combined)
@legiondotcc: follower-standing fintech 698, AI 416, robotics 212.

Why followers alone can’t place a generalist — and what we do instead

The follower signal is powerful, but it has a hard limit we measured directly: experts follow famous people too, so who-follows-you cannot, by itself, tell an investor apart from a journalist or a celebrity when they share the same audience. Here is the actual inbound endorsement each account receives from high-ranked AI experts:

accountwho they areinbound AI-expert reputation (live, selectivity-weighted)AI share of their inbound reputationconcentration vs. baseline
@pmarcaAI investor (a16z)5,750,301 (rank 13)41.5%1.31×
@karaswishertech journalist1,972,62140.5%1.28×
@mrbeastYouTuber1,064,60238.8%1.23×
@cristianofootballer197,26634.7%1.10×

Share = the fraction of that account’s own inbound reputation coming from AI (REai÷ΣRE), not the share of their followers who are AI experts. This is the one block on the page pasted rather than rendered — computed from the inbound cache RE.npy (on disk as this rendered: 2026-07-29), last reproduced 2026-07-27, so it can age independently.

Andreessen holds a large AI-expert endorsement — though not the largest; he ranks 13th, behind @karpathy, @sama, @openai, @ylecun and @elonmusk. The damning part is the concentration: Kara Swisher’s is statistically identical to his (1.28× vs 1.31×), and even a footballer sits at 1.10×. Lower the bar to give Andreessen an AI score, and you hand the same to a journalist, a YouTuber, and Ronaldo. So the score can’t rest on raw endorsement mass.

Two things resolve it. Content reads what an account posts — the AI investor vs. the AI journalist. Expert density (inbound expert-reputation ÷ followers) separates real accounts from mass fame: a celebrity’s base dilutes their expert-followers to ~0 (@lebronjames 0.01) while narrow technical accounts run orders of magnitude denser (hand-checked examples; the operational rule is the threshold, not the range). Density decides whether an account is admitted — a content anchor or curated tag also admits. Once in, sectors are graded on a continuous curve rather than kept/dropped, which is what replaces spiky one-sector radars with a real gradient; a sector below the evidence floor (RE < 250) still reads 0 rather than an invented value.

The scores are a spectrum, not all-or-nothing

On famous accounts it can look binary (a top expert ≈ 1000, a masked celebrity = 0), but that’s a trick of picking famous examples. Across the graph the scores fill the whole range, and an account that clears the admit gate gets a graded radar rather than a spike-then-zeros.

The honest size of that claim: 2,533,491 accounts hold at least one sector standing — 25% of the 10,240,832 that are eligible for a person leaderboard at all. So “a real account is a full grey radar” is not true of the typical account: the majority carry a global rank and nothing else, with too little inbound evidence in any single sector to place them. The gradient below describes the accounts that are placed.

The distribution is well-spread. Measured on the file rendered above, the 5,457,033 graded (grey) follower-derived standings run: 10th percentile 262, median 541, 90th 650; across all 5,512,014 standings of every layer it is 263 / 541 / 653 — the middle is full, not a wall of 1000s and 0s. The sample table above features famous experts (≈1000) and masked accounts (0), which makes it read more binary than the graph is.

A placed account is usually a mix. @lisasu is semi 1000 and AI 953 (her real domains), and holds 10 graded sectors in all — robotics 484, biotech 416, fintech 396, space 390 around them. @pavelprata carries AI 707, fintech 657 and 10 sectors in total — biotech 513, space 511, defense 502, robotics 484. Both lists are read from the radar rendered above, so they say what these accounts actually hold rather than naming sectors that may have gone to zero.

What a 0 means now — four different things, not one: (1) the account is an organization / brand / celebrity, masked off the person leaderboards; (2) it never cleared the account-level admit gate (no expert density, no content anchor, no curated tag) — the common case, and why most eligible accounts carry no sector at all; (3) it was admitted but this particular sector sits below the evidence floor (RE_s < 250); or (4) a human adjudicated it out: 168 (account, sector) standings on the file above are zero because review found the sector wrong, after both the graph and the content gate had scored it. Those carry provenance x, and they are the one case where a 0 means “we looked and it is not true” rather than “we have no evidence”. In none of the four is it “ranked low” — a real mid-tier account like @zemariamacedo reads fintech 708, AI 541 and 10 graded sectors in total; @wazzcrypto keeps a content-anchored fintech 921 plus a lighter grey ring (6 sectors). The pure follow-graph fame we removed now shows up only as masked celebrities/orgs, not as zeroed real people.

What we’d do differently: keep the raw data we pay for

One concrete lesson, and it is the direct cause of the hardest problem still open in this build.

This graph was built out of paid API calls to X. Each profile call returns a full profile object — ~24 fields. The production crawl kept five of them (name, bio, follower_count, following_count, total_tweets) and discarded the rest, including the field that most directly identifies an organization: verifiedType (Business / Government). Not every one of the 10.45M accounts was individually fetched — most are follow-graph targets discovered from crawled sources — so read this as “the crawl was paid for”, not “every row is a paid profile fetch”.

Why it bit us. Keeping companies and agencies off people-leaderboards is exactly what verifiedType is for — and you cannot reliably guess it from a name or bio. Because it wasn’t stored, everything we built to replace it is inference: a hand-curated media list, name/bio regexes, and a trained person-vs-entity classifier. That stack is why some organizations reach the leaderboards at all: @huggingface, @economist and @perplexity_ai carry no verifiedType, so even a re-fetch wouldn’t label them and only hand curation could close them. And it is why a single bad pattern in that stack once silently zeroed 16 real experts before we caught it — the reason the regexes are now features to a classifier, never a standalone mask.

The account-type field would turn most of the org/brand filter from inference into a lookup. Most, not all: Business is decisive, but Government is issued to individual officials as well as to agencies, so it defers to the classifier rather than masking outright — and an unpaid organization carries no type at all. Where we do hold it, it is authoritative — self-declared and paid for via X Verified Organizations, not inferred — so Business now hard-masks, outranking the classifier. We hold it for 2,540 accounts (against a scoreable pool of ~2.49M), and applying just those masked 1,127 Business/Government accounts — 345 of them still holding sector scores (counted in the 2026-07-27 build log; the shipped file keeps no pre-mask state, so these two are dated numbers, not live ones) — @consensys, @coinbasemarkets, @coinlist, CNBC show accounts, a CIA press account, CAL FIRE. Stored at crawl time for every account, org filtering stops being a machine-learning problem and becomes a dictionary lookup.

One asymmetry to respect: verifiedType = Business/Government is proof of an organization, but its absence proves nothing — it is a paid tier, not a label. @huggingface and @mit are both blank. So absence must never be read as “person”, and a classifier is still needed for the remainder.

The fix going forward: store the entire raw response from every paid call, keyed by the numeric user ID (itself worth keeping — handles get renamed, IDs don’t, and the cheaper bulk endpoint needs them). Storage is cheap; re-scraping millions of accounts to recover one dropped field is not. Note this is not retroactively recoverable — the fields were never written, so closing the gap means re-fetching profiles, not re-reading the crawl we already have.

EigenRep, built on the dev-package full-crawl graph (10.45M accounts, 76.4M follow edges) and its tweet-LLM classification, plus the improvements shown above. Built on the EigenTrust algorithm (Kamvar, Schlosser & Garcia-Molina, WWW 2003), adapted for the X follow graph. Full technical detail: docs/technical/eigenrep-dev-migration-v2.1-to-final.md and eigenrep-architecture-audit-2026-07.md.