Developer Scoring
Developer Scoring
A composite 0–100 score measuring how credible, experienced, and active a token's creator is. The key insight: Seshat scores the actual developer or company behind the token, not the raw on-chain deployer wallet — which is often just a proxy or ops address. Three intelligence layers run in parallel during every 2-hour enrichment cycle.
Who gets scored — the creator-identity model
Every Bankr token has several distinct wallet identities. Seshat resolves the creator — the fee beneficiary — before scoring begins, rather than scoring the raw deployer.resolveCreatorWallet() picks the first real wallet in the order fee claimer → fee recipient → deployer (skipping blanks and anonymous stubs), so the on-chain claimer corroborates the configured recipient.
Deployer wallet
stored, not scoredThe 0x address that signed the deploy transaction (tokens.deployer_wallet). Frequently a proxy, launcher, or ops wallet — kept literal for reference, used only as the last fallback when no fee identity is known.
Fee recipient
creatorWhere creator fees are configured to flow (tokens.fee_recipient_wallet, from Bankr). This wallet — and its X handle — is the real creator and the primary enrichment + scoring target.
Fee claimer
confirmationWho actually claimed fees on-chain (tokens.fee_claimer_wallet), captured from Alchemy/Bitquery claim events. When present it confirms the recipient and is preferred as the creator wallet.
Project / developer identity
qualitativeWho is really behind it — project name, company, and person/team — researched by ProjectResearcher (Claude + web search) from the creator's X handle and the open web. Stored on the token (identity_research); qualitative context, never fed into the numeric score.
Architecture — three scoring layers
On-chain Track Record
OnchainIntelligence
Primary signal. Wallet age, total tx count, number of token launches, percentage that hit $100K+ market cap, fee claim engagement rate. Categorises developers into archetypes.
Social Quality
FrontrunPro API + DeveloperBackground
KOL tier-weighted follower quality (who follows this developer on Twitter) blended with background pedigree (education, crypto depth, professional history). A Protocol CEO follower outweighs 1,000 generic followers.
Activity Recency
BaseChainProvider
Is this developer still active? Combines last on-chain transaction (40%) and last tweet if available (60%). Rewards developers actively building in the ecosystem.
Layer 1 — On-chain Track Record (50%)
Powered by OnchainIntelligence. Runs once per developer during the 2-hour enrichment cron and persists an onchain_score to the developers table. Falls back to raw field estimates if analysis hasn't run yet.
Developer categories
Every developer is classified into one of six archetypes based on their on-chain history:
5+ launches, ≥40% hit $100K+, ≥50% claimed fees
3+ launches with consistent success and fee engagement
Multiple launches, iterating — mixed results
Single launch or limited on-chain history
Multiple launches, zero fee claims, multiple dumps
Inactive — no transactions in 90+ days
// agents/onchainIntelligence.ts
function categorize(profile: WalletProfile): DeveloperCategory {
const { totalLaunches, tokensAbove100k, tokensWithClaims, walletAgeDays, totalTxCount } = profile;
if (totalLaunches === 0) return 'first_timer';
const successRate = tokensAbove100k / totalLaunches;
const claimRate = tokensWithClaims / totalLaunches;
if (totalLaunches >= 5 && successRate >= 0.40 && claimRate >= 0.50) return 'serial_builder';
if (totalLaunches >= 3 && successRate >= 0.30) return 'active_builder';
if (totalLaunches >= 2) return 'experimenter';
if (claimRate === 0 && totalLaunches >= 3) return 'serial_rugger';
if (walletAgeDays > 90 && totalTxCount < 5) return 'dormant';
return 'first_timer';
}Layer 2 — Social Quality (25%)
Social quality blends two sub-signals: KOL follower quality (50% of this layer) from the FrontrunPro API, and background pedigree (40%) from developer profile analysis. A raw follower count bonus contributes the remaining 10%.
FrontrunPro smart followers
Seshat uses the FrontrunPro API to look up smart follower data — who in the crypto/tech ecosystem follows this developer on Twitter. Lookups are done by Twitter handle (preferred) when the developer's handle is known, falling back to wallet address.
Followers are cross-referenced against a curated registry of 50+ notable accounts. The tier system means a single Protocol CEO follower contributes far more to the score than dozens of generic KOLs. Example: @vandynathan (BOND developer) has 93 smart followers including “GP@a16z”, “Founder@ElizaLabs”, and “binji | Ethereum FDN” — extremely strong signal.
Vitalik, Jesse Pollak, Brian Armstrong, Dan Romero
Bankr, Clanker, Base official, Coinbase Wallet
Paradigm, a16z crypto, Matt Huang, Haseeb Qureshi
Anthropic, OpenAI, Andrej Karpathy, Sam Altman
Hayden Adams (Uniswap), Stani Kulechov (Aave)
Coinbase exchange
Cobie, 0xfoobar, Laura Shin, transmissions11
Emerging Base/DeFi influencers
// providers/frontrunpro.ts
// Preferred: lookup by Twitter handle (captures social reputation, not just on-chain activity)
// Fallback: lookup by wallet address
const fp = twitterHandle
? await frontrunpro.getHandleIntelligence(twitterHandle)
: await frontrunpro.getWalletIntelligence(walletAddress);
// Tier-weighted KOL quality score — 0 to 100
static kolQualityScore(kols: EnrichedKolAssociation[], smartCount: number): number {
const tieredScore = kols.reduce((sum, k) => sum + k.influence_score, 0);
// Categorical bonus for having tier-1 followers
let bonus = 0;
if (kols.some(k => k.tier === 'protocol_ceo')) bonus += 25;
if (kols.some(k => k.tier === 'vc_partner')) bonus += 20;
if (kols.some(k => k.tier === 'agentic_researcher')) bonus += 15;
if (kols.some(k => k.tier === 'base_ecosystem')) bonus += 10;
// Raw smart count base — diminishing returns
const smartBase = Math.min(30, Math.log10(Math.max(1, smartCount)) * 15);
return Math.round(Math.min(100, tieredScore * 0.5 + bonus + smartBase));
}Background pedigree (DeveloperBackground)
Analyses the developer's display name and on-chain data to infer education, professional history, and crypto experience depth. Display names often contain credentials (“Ph.D Candidate”, “ex-Google”, “ML researcher”) that are strong signals even before any social data is available.
// agents/developerBackground.ts // Crypto depth from wallet age: // 5+ years → og_2017_earlier (score: 100) — OG participant // 4+ years → early_2018_2020 (score: 80) // 2-4 years → bull_2021 (score: 55) // 6m–2y → recent_2022_plus (score: 30) // <6m → very_new (score: 15) // Professional tier detection from display name keywords: // faang_research → ex-Google, ex-Meta, OpenAI, Anthropic, DeepMind, Microsoft // notable_company → Coinbase, Ethereum Foundation, Paradigm, a16z, Uniswap Labs // academic → Ph.D, Professor, Researcher, Harvard, MIT, Stanford // startup → Founder, Co-Founder, CTO, Building, Shipping // independent → everything else // Green thumb flag — crypto newcomer (needs careful evaluation): // crypto_depth in (very_new, unknown) // AND no academic/professional signals // AND composite_background_score < 35
Layer 3 — Activity Recency (25%)
// agents/developerIntel.ts
private activityRecencyScore(dev: Developer): number {
const now = Date.now();
// On-chain recency — 40% of this layer
let chainScore = 0;
if (dev.last_on_chain_tx) {
const days = (now - new Date(dev.last_on_chain_tx).getTime()) / 86_400_000;
chainScore = days <= 7 ? 100
: days <= 30 ? 70
: days <= 90 ? 40
: 10;
}
// Twitter recency — 60% of this layer (when available)
let twitterScore = 0;
if (dev.last_tweet_at) {
const days = (now - new Date(dev.last_tweet_at).getTime()) / 86_400_000;
twitterScore = days <= 7 ? 100
: days <= 30 ? 75
: days <= 90 ? 45
: days <= 180 ? 20
: 0;
}
if (twitterScore > 0 && chainScore > 0)
return Math.round(twitterScore * 0.60 + chainScore * 0.40);
return twitterScore || chainScore;
}Composite formula
// agents/developerIntel.ts
const WEIGHTS = {
onchain_history: 0.50, // on-chain track record (OnchainIntelligence)
social_quality: 0.25, // KOL tier-weighting + background pedigree (FrontrunPro API)
activity_recency: 0.25, // last on-chain tx + last tweet
};
// Within social_quality (25% of composite):
// kolScore × 0.50 — tier-weighted FrontrunPro followers
// bgScore × 0.40 — education + crypto depth + professional history
// followerBonus× 0.10 — raw Twitter follower count (minor bonus at scale)
composite = Math.round(
onchainHistory * 0.50 +
socialQuality * 0.25 +
activityRecency * 0.25
)Score interpretation
Very high confidence
Strong serial builder with proven track record, notable KOL followers, and active on-chain presence.
High confidence
Credible developer with solid on-chain history. Some gaps but mostly strong signals.
Medium confidence
Mixed signals. Worth monitoring but not a strong indicator on its own.
Low confidence
Little credibility — anonymous, first-timer, dormant, or serial rugger pattern detected.
Database fields
-- developers table (migrations 0001 + 0003 + 0004) -- Identity wallet_address TEXT UNIQUE -- primary key identity twitter_handle TEXT -- feeRecipient Twitter (company) or developer handle display_name TEXT -- On-chain (populated by OnchainIntelligence — 2h cron) total_tokens_launched INTEGER tokens_above_100k INTEGER -- ever exceeded $100K mcap tokens_with_fee_claims INTEGER total_fees_claimed_usd REAL launch_success_rate REAL -- 0-100 claim_engagement_rate REAL -- 0-100 developer_category TEXT -- serial_builder | active_builder | ... wallet_age_days INTEGER total_tx_count INTEGER onchain_score INTEGER -- 0-100 composite on-chain score onchain_analyzed_at TEXT -- Social (populated by FrontrunPro API — 2h cron) smart_follower_count INTEGER kol_associations TEXT -- JSON: EnrichedKolAssociation[] vc_associations TEXT -- JSON: KolAssociation[] frontrunpro_rank INTEGER frontrunpro_scraped_at TEXT -- Background (populated by DeveloperBackground — 2h cron) background_score INTEGER -- 0-100 pedigree composite is_green_thumb INTEGER -- 1 = crypto newcomer detected developer_bio TEXT -- bio text if available