three sigma left

drafts.fun · checker + beta economy

Two airdrop phases
PHASE 1 Beta · Virtual money. Players build a virtual balance in the closed beta and compete on a season leaderboard. At mainnet a fixed prize pool pays out by finishing rank, gated on activity. This is the phase designed here.
PHASE 2 Mainnet · Real money. Real trading on real deposits, designed after the beta. Out of scope here.

What changed in this version

This version parts company with the earlier checker doc and beta program in seven places, and each of them is worked through properly in the section it belongs to.

Rank is now driven by net trading profit rather than ending balance, which means that both season rank and the share of the mainnet pool follow the money a player actually won at the tables, while the starting stack, anything handed over as a gift and anything picked up through referrals sit outside the calculation entirely.

The two scores have been folded into a single 0-100 number, with the social signal carrying 25% of it, so nothing on the card competes with the headline figure, and the weight is heavy enough that a genuine crypto-twitter presence still visibly moves the result instead of being decorative.

The social component is now throttled by the on-chain score, so somebody who buys a high-follower X account and points it at a fresh, empty wallet still walks away with almost nothing, while a real KOL sitting on a real wallet feels no difference at all.

An admin path for stamping KOL cards in bulk now runs alongside the public flow, which lets the team mint an entire wave of ambassador cards at once rather than walking each influencer through the connect-and-play journey one at a time.

The daily reward has become burn-today game entries on a loaner stack rather than balance handed straight to the wallet, and that brings a busted low-balance player back the following morning without quietly inflating either the economy or the leaderboard behind everyone's back.

Referral has been reworked onto a profit basis, so the seed an invitee starts with and the reward their referrer collects are both tied to real trading profit and the rake generated through actual play, rather than to whatever raw balance happens to be sitting in an account at the time.

Buy-ins are now tiered from $25 up to $3,000 with a poker-style rake running underneath them, which gives every balance tier a stake it can sensibly size to and gives the economy the deflationary force it was missing.

A · The Checker

Connect a Solana wallet, and connect X. The checker reads on-chain history and turns it into a single 0-100 score. The score sets the starting beta balance and renders a personalized, shareable card. Posting the card on X unlocks the invite code.

It is both the sybil filter and the viral growth object. A fresh, empty wallet scores near zero and starts near nothing; a real, aged, active wallet with genuine crypto-twitter presence scores high and gets a bigger, more shareable number. Proven precedents: Kaito's mindshare card, ETHGas GAS ID, Monad's airdrop card.

The build, in four blocks

Wallet connect and the X share-gate. A Solana wallet adapter (Phantom or Backpack) handles a read-only connect, and X OAuth verifies that the card was genuinely shared before any code is released, which matters because the share is the price of access and a gate nobody enforces is not a gate.

Data-fetch layer. Wallet history is pulled from a managed provider rather than an index we stand up ourselves, since Solana's account model is painful to parse in practice — a separate token account for every SPL, custom program layouts underneath — and the providers have already solved exactly that, which saves weeks of work nobody would thank us for.

Scoring engine. A small deterministic function that takes the fetched signals in and hands a 0-100 score back out, built as a pure function over pre-fetched data so that it stays fast, stays testable, and can be re-weighted later without anyone having to touch the plumbing around it.

Card generator. Renders the finished score into a branded, shareable image, and this is the block that carries the growth, because the card is the viral object and it has to read as a status flex rather than as an advert for us.

Data providers
VendorWhat we take from itWhy this one
Helius
wallet read
Balances, staking, NFT holdings through the DAS API, and 100+ transaction parsersDeepest Solana coverage, and it already powers Phantom, Jupiter and Coinbase Wallet, so most of the cheap signals arrive from a single vendor
Dune or Flipside
volumes
pump.fun, Jupiter and perps volumes, already decoded in their datasetsA SQL query instead of a custom parser, which is the difference between a day and a week per metric

Scope discipline is what keeps the timeline short. v1 uses only the signals that are cheap to source, and anything that needs custom program decoding or fuzzy attribution is deferred to wave 2 without argument. With that cut in place, one competent Solana dev ships the MVP scorer on eight signals in about a week, and the full flow with the card and the share-gate in two to three.

Sourcing the X avatar and handle

The card carries the user's X profile picture and @handle, and both of them come from the same X login we are already running for the share-gate, so this is one extra call inside a flow that exists rather than a second integration to build and maintain.

Auth. OAuth 2.0 authorization code flow with PKCE, requesting users.read, tweet.read and offline.access. App-only bearer tokens do not work here, because the profile endpoint requires user context.

Fetch. On the OAuth callback, call the current v2 profile endpoint with the user's access token.

Upscale the avatar. profile_image_url returns the 48×48 _normal thumbnail, which looks broken at card size, so swap the _normal suffix for _400x400 (or strip it for the original) before it goes anywhere near the card.

Cache both the avatar and the handle, so that re-renders never re-hit the API.

Scoring: one unified 0-100 score

The card shows one score, not two. The social signal is folded into the single number as a 25% weight, on-chain is the other 75%. 25% is heavy enough that a real crypto-twitter presence visibly moves the score, so clout is not sidelined.

final_score (0-100) = 0.75 * on_chain_score  +  0.25 * social_score * sybil_gate
On-chain component (contributes 75%)
SignalPoints
pump.fun lifetime volumeup to 18
Perps volume (GMtrade, Pacifica)up to 15
Wallet net worthup to 15
Jupiter swap volumeup to 12
Unique protocols touchedup to 12
Wallet ageup to 12
SOL staked (native / LST / Jito)8
Blue-chip Solana NFT (Mad Lads, SMB)8

Social component (25%). Computed from the connected X account through an external reputation provider: crypto-twitter standing (smart-follower quality, mindshare), not raw follower count. One X account links to one wallet, permanently.

Shown as one number. The social contribution is not a second figure on the card. It surfaces through a service ribbon (for example a KOL or CT-native ribbon), so a strong profile still reads as status without a competing number.

The sybil gate. The social contribution is throttled by the on-chain score, so a bought X account on an empty wallet buys almost nothing.

sybil_gate = clamp(on_chain_score / 40, 0, 1)

A real, aged wallet (on-chain 40+) gets the full 25% social weight, so a genuine KOL with a real wallet lands near the top. A fresh farm wallet (on-chain around 5) with a max social score gets social throttled to about 12% of its full value: a few points, not 25. The wallet is always the thing that has to be real. A security-conscious KOL on a throwaway wallet still gets a status ribbon on the card, and a real max balance comes through the Ambassador program, not the public checker.

Social-score partners

We source a per-X-handle score, not build X-graph scoring ourselves. Context: on 15 Jan 2026, X revoked developer API access for InfoFi reward apps (Kaito, Cookie DAO and others), so the obvious mindshare picks are now enterprise-only. A basic profile read through the standard X OAuth we already run is a separate surface, to validate independently.

Candidate providers
ProviderWhat it scoresAccess (2026)Sybil resistance
Ethos Network
primary pick
Crypto peer credibility from on-chain reviews and staked-ETH vouches, tied to an X handleFree public REST API, query by handle. Untouched by the banStrong: vouches need staked ETH and real reviewers
TweetScout
fallback
Influence from follower quality, engagement, network strength, bot-follower sharePublic product plus developer API, low monthly costMedium-strong: scores quality not count
Twitterscore.io
fallback
0-1000 score weighted by the influence of an account's followersPublic REST API with single and bulk endpointsMedium: resists bulk bots
Kaito YapsMindshare, the strongest signal if availableEnterprise / partnership only post-banWas strong; the reward loop is what got banned
Human PassportProof-of-personhood; X stamp is binaryFree public APIUse as the sybil layer, not the 25% signal

PickEthos Network primary, TweetScout or Twitterscore.io as a follower-quality fallback, Human Passport as a sybil gate underneath. Launch-day fallback if coverage is thin: X API v2 metrics (follower count, verified, account age, ratio) computed in-house. Pay for a mindshare partner only once the social score is an actively gamed surface worth defending.

Score to starting balance

Working default
Final scoreStarting balance
0 - 20$1,000
21 - 40$2,000
41 - 60$4,000
61 - 80$6,000
81 - 100$8,000

The spread from bottom to top is eight to one, which is wide enough that a high score is worth chasing and, far more importantly, worth posting about once you have it. We can afford to be generous at the top of that range precisely because rank runs on profit rather than balance, so the stack a player is handed at the start is fuel for the games ahead rather than a payout we have quietly promised to cover later.

The card and the Influencer Card Factory

The card carries a serial number for invite scarcity, the X avatar and handle, a rank medal tiered by score, the hero score itself, a rack of protocol ribbons graded per signal, and a beta deposit line at the foot. Fix before build: the draft line "I've received $5,000 based on my score" matches no tier in the balance table and reads as a cash payout, so it needs rewriting to the real tier and a testnet-stack read before this ships anywhere.

DRAFTS.FUN
No. 0087 / 500
ONCHAIN LEGEND
PFP
@mikhryc0x
87
/100
DRAFTS.FUN SCORE
ON-CHAIN  ·  75% OF SCORE
PUMP.FUN
JUP OG
PERPS
WHALE
STAKER
MAD LAD
SOCIAL  ·  25% OF SCORE
ETHOS
KOL
MINDSHARE
BASED ON SOLANA ON-CHAIN ACTIVITY + CRYPTO TWITTER STANDING
drafts.fun
The card, rebuilt. Live vector, matched to the Figma frame (social card v6). The rack now carries both axes: six on-chain ribbons at 75%, three social ribbons at 25%. The number is labelled a drafts.fun score rather than an on-chain score, and the deposit line is gone.

The tier system

Every element on the card is graded, and the grades are the score. Tier system — full v2 in Figma.

Rank medal · score → status
ScoreStatusDegen phrase
81–100ONCHAIN LEGEND“the market fears your wallet”
61–80CHAIN VETERAN“you've bled enough to know better”
41–60CERTIFIED DEGEN“up bad, down worse, still clicking”
21–40APE IN TRAINING“learning to lose with style”
0–20TOURIST“just here for the airdrop”
Protocol ribbons · on-chain, 75% of the score
RibbonSignalGrade → points
PUMP.FUNpump.fun lifetime volume10k+ ·5   50k+ ·10   100k+ ·18
JUP OGJupiter swap volume25k+ ·6   100k+ ·12
PERPSPerps volume (GMtrade, Pacifica)any ·4   10k+ ·8   50k+ ·15
WHALEWallet net worth$1k+ ·7   $10k+ ·15
STAKERSOL staked (native / LST / Jito)sol staked ·8
MAD LADBlue-chip Solana NFTblue-chip nft ·8
Social ribbons · 25% of the score, throttled by the sybil gate
RibbonSignalGrade → points
ETHOSEthos credibility (staked vouches)400+ ·12   800+ ·25   1200+ ·40
KOLSmart-follower quality50+ ·10   250+ ·20   1k+ ·35
MINDSHARECrypto mindshare percentiletop 25% ·8   top 10% ·15   top 1% ·25
PASSPORTProof-of-personhoodgate, not points

Influencer Card Factory. A custom admin path to stamp KOL cards in bulk, without sending each KOL through the connect-and-play flow. Paste a list of handles (avatar and handle auto-pulled), set score or balance manually, pick ribbons, generate a full wave at once.

Cards minted this way look identical to organic cards so they read as authentic when posted, but they carry the ambassador terms rather than a checker result, and they are admin-gated, never exposed to the public endpoint.

Precedents worth copying

Four shipped products that already proved the parts we are assembling. None of this is novel, which is the point.

Kaito social card showing total followers, smart followers, impressions, smart engagement, an activity heatmap, crypto mindshare rank and top smart followers.
Kaito social card. Reads the X social graph — total and smart followers, impressions, smart engagement, crypto mindshare, a historical rank percentile — and renders it as a dense, branded stat card. The score is social, not on-chain. It became the default flex format on crypto twitter and carried Kaito's rise as the leading InfoFi platform. Takeaway: the card-as-status-object is proven, and dense stats plus a rank percentile plus clean branding is what earns the organic share.
ETHGas Gas ID card showing a profile picture, total gas spent of 2.7990 ETH, a HERO grade badge and a top 10% rank line.
ETHGas GAS ID. Scans a user's entire Ethereum history across all linked wallets back to the Beacon Chain, aggregates total gas spent, computes a rank percentile and a tiered grade (Baby, Kiddo, Teen, Hero, Legendary), and renders a shareable card. Linking more wallets raises your number, and sharing plus a referral loop earns points. 283K+ participants from a single on-chain metric. Takeaway: mechanically this is almost exactly our checker — one metric, percentile, tiered grade, card, share, referral. The closest direct template we have.
Monad airdrop card showing a profile picture inside a glowing ring, an airdrop strength level and a claim portal link.
Monad airdrop card. Handpicked active crypto twitter users, gave each a card with a role, and prompted them to nominate others who had been missed — a referral loop built into the object itself. The claim portal authenticates through Privy, checks the address against an eligibility database built from on-chain activity (DEX traders including pump.fun, DeFi depositors, NFT holders) alongside social-graph data, with anti-sybil run by Trusta AI. Takeaway: this is our full stack at scale — on-chain plus social scoring, card, nomination referral, third-party sybil.
Privy Home dashboard showing a total balance of $5,915.47 with an Add funds button and a wallet breakdown.
Privy — claim your forgotten funds. Privy Home aggregates every embedded wallet tied to your login across every app that uses it: balances, history, fund and export. One post explaining it hit roughly a million views, with people finding real balances they had forgotten about. Takeaway: a checker does not strictly need a card to go viral, because a strong "check whether you have X" hook stands on its own. Worth keeping as a backup viral primitive if the card underperforms.

B · The Beta Economy

There are no points to collect, no quests to tick off and no farming for the sake of farming, because the only two things that carry any weight here are the stack you sit down with and what you actually manage to do with it once the games start. Your card score decides where you begin, and from there the stack moves on skill and on a single referral lever, while a daily loop is waiting to pull you back in on the morning after you bust. When mainnet arrives it is your trading profit that sets your rank and your rank that sets your share of a fixed pool of real money, and none of it counts at all unless you actually played.

The stack is fuel rather than payout, so it climbs when you win and falls when you lose, and all that a bigger balance really buys you is the room to take bigger swings, because it is the profit underneath it that eventually pays. If you take it all the way down to zero the Daily Games loop is the road back in.

Buy-in tiers

Working default (bots fill thin tables)
TierBuy-in
Micro$25
Floor$100
Standard$500
High$1,500
Whale$3,000

One flat buy-in would hand wildly different survival odds to players depending on the balance they happened to start with, whereas a menu lets everyone size the stake to the stack they are actually holding, which is what keeps the bottom tier alive long enough to become players rather than churn. We would open on the lower tiers and add the $1,500 and $3,000 seats later, once balances have grown enough to fill them.

Two levers to grow your balance

Lever 1: Skill. Enter battles and leagues, draft better, win. A win takes balance off your opponent and adds it to yours. Only genuinely good players climb.

Lever 2: Referral (profit-based). Every player gets 2 one-time invites tied to their wallet. This replaces the old flat balance-doubling bonus, which could mint balance with no limit.

Invitee starting balance: the higher of 50% of the referrer's own net trading profit (not raw balance), or the invitee's own checker score. The checker fallback guarantees a new invite can always play at least once.

Referrer reward: an ongoing commission (working default 10%) on the rake their invitee generates through play. It adds to spendable balance but does not count toward ranked profit. Single level, no cascading commissions.

Both sides tie to real trading profit and real activity, so invites stay valuable without inflating the numbers meant to reflect skill. An idle invite earns nothing.

Daily Games: the retention loop

A player with a weak wallet and weak X presence gets a small stack. If they lose it in two games with nothing to come back to, they leave. That kills retention, and low-balance high-frequency players are the retention story worth showing funds. We bring them back tomorrow without just handing out balance.

The mechanic. Instead of balance added to the wallet, the daily reward is a small number of Daily Games: burn-today entries that expire. A new player opens on a single game a day and climbs one entry at a time, and because each tier is wider than the one before it, every extra entry costs more consecutive days than the last one did.

Streak tiers (working default)
StreakDaily GamesLoaner eachFuel ceiling / dayDays to earnEntries banked
Day 1–21$100$1002 by day 2
Day 3–52$100$20028 by day 5
Day 6–93$100$300320 by day 9
Day 10–134$100$400436 by day 13
Day 14+5$100$500441 by day 14, +5 a day after

Missing a day is not a reset. The streak drops back about two days, so a player who falls off at day 20 restarts around day 18 and keeps all five entries, while someone who slips at day 10 lands back on day 8 and gives up one. A separate 14-day perfect-attendance badge rewards the players who never miss at all.

Loaner stack. Each entry is one battle on a temporary stack (for example $100) the platform lends you for that game. The loaner is not yours. Unused entries expire end of day and cannot be hoarded.

Earn it by playing. Log in and play at least one battle. Granted on yesterday's activity regardless of today's balance, so a player who busted to $0 yesterday still gets today's entries.

SettleWin: the profit above the loaner goes into your spendable balance as fuel for paid battles. It does not count as ranked profit, so grinding easy bot games can never buy rank. Lose: you lose only the loaner, your own balance is untouched.

Two separate rails. Daily Games feed only spendable balance and your activity count. Paid battles feed both balance and ranked profit. So a busted player rebuilds a real stack for free, then earns their payout by playing that stack, and bot-grinding never leaks into the leaderboard.

Ranking and payout: profit, not balance

Season rank, and the mainnet prize-pool share, are based on net trading profit: money won or lost through actual battles, not raw ending balance.

Excluded from profit (fuel, not skill): starting balance, daily-game loaners and any winnings made inside Daily Games, and referral commission. Only profit from paid battles counts toward rank.

Payout: a fixed real-money pool (around $50,000) split by rank, top down. Because the pool is fixed and split by rank, total spend is controlled by construction: starting stacks and daily loaners are not direct payout liabilities.

Activity gate: one threshold of 50 battles for everything (payout eligibility and Leagues qualification), binary, snapshot at beta close. Miss it and you place nowhere, regardless of profit.

Leaderboard (default): a public status ladder (rank badges, win/loss, tier), with the exact profit figure kept private per player. Easy to flip to a fully public board if the team prefers.

Rake, conversion, growth

Conversion. At mainnet the fixed pool is distributed by final rank to players who cleared the gate. No "balance times a rate" to walk back. Structure is published by position (top 1% share, top 10% share), no dollar figures shown during beta.

Growth loop. Every win, rank-up and streak renders a branded result card, one tap to post. The brag moves from "I'm up $114k" to "hit Diamond", keeping the reach and dropping the casino optics. Status trophies (a Drafts ring, rank badges, top-tier merch) are a sink, not another earn lever. Testnet framing softens the gambling and legal read.

Anti-exploit summary

The exploits this economy closes.

Sybil / farm wallets: on-chain score filters them, the social component is gated by it, and referral seeding ties to real trading profit, so a zero-profit wallet cannot hand value down a chain.

Referral inflation: the old balance-doubling bonus is replaced by a rake commission that never counts toward rank.

Fake clout on fresh wallets: the social component scales with the on-chain score, so a juiced X account on an empty wallet gets a tiny contribution.

Gifted balance as skill: rank and payout are net trading profit only, so nobody buys their way up the board.

Daily-reward and bot farming: expiring loaner entries, capped daily, with Daily Game winnings kept off the leaderboard entirely.

KOL ambassadors run on their own terms (uncapped invites, max balance via the card factory, TGE allocation, USDC ref fee), kept on the same gate or a separate budget line.

C · Defaults

Most open items are closed with a working default (our call, easy to override). The one call that needed the author is now confirmed.

Resolved defaults: starting balance $1,000-$8,000; buy-ins $25-$3,000 with bots; Daily Games ramping 1 to 5 entries on a $100 loaner; activity gate one threshold of 50; rake 10%; referral commission 10%; social provider Ethos primary; leaderboard public-ladder plus private-profit; 1v1 buy-in a free stake within the tiers.