Skip to content

/work / Development

Xvalue

Find out what any X account is worth

Year
2025–2026
Role
Design & engineering
Status
live
Next.js 14TypeScriptTailwindSupabaseUpstash RedisClaude HaikuVercel Edge
Xvalue: what is your X account worth?

System diagram

CLIENTEDGESERVICEDATAEXTERNALverifySSEcache hit?strict JSONpersist 24hshareClientSSE thinking UITurnstileCAPTCHAPOST /api/calculateNext.js routeRate limiter10 req/hr/IPSocialDataprofile + tweetsSerperweb contextClaude HaikuclassificationScoring enginemultiplicative modelSupabase24h result cache@vercel/ogedge share cards

// value = base(followers, tiered) × engagement × quality × niche × who-are-you

// bonuses capped relative to base, so small accounts can't balloon

// sliding-window limiter: 10 req/hr/IP → 429 + retryAfter

Xvalue answers a question every heavy X user has quietly asked: what is my account actually worth? Type any handle, pass a CAPTCHA, watch the system think, and get a dollar valuation with a full breakdown, then share it as a generated card. It's live at xvalue.fun, and everything from the scoring model to the streaming UI was designed and built by me.

The product

The core loop is deliberately simple: enter a handle, get a number. The craft is in what surrounds it:

  • A "thinking" sequence streams progress step-by-step (fetching profile → analyzing tweets → searching the web → AI classification → calculating), so a 6–8 second computation feels like watching an appraisal, not a spinner.
  • A live feed of recent calculations and a notable accounts board (vitalik.eth at $217.6M, Marc Andreessen at $39.0M) provide social proof and a reason to explore.
  • Every result renders into an Open Graph share card at the edge, because the share loop is the growth loop.

Architecture

The stack is Next.js 14 (App Router) on Vercel, Supabase Postgres for persistence, Upstash Redis for rate limiting, SocialData and Serper for data, and Claude Haiku for classification.

A calculation request lives this lifecycle:

  1. Rate-limit check: sliding window in Upstash Redis, 10 requests per hour per IP. Exceed it and you get a clean 429 with a retry hint, not a broken page.
  2. CAPTCHA verification: Cloudflare Turnstile, server-verified.
  3. Handle normalization: strips @, URL prefixes, casing, so x.com/VitalikButerin and @vitalikbuterin hit the same cache key.
  4. Cache lookup: results persist for 24 hours in Supabase. A hit returns instantly and costs nothing.
  5. On miss: fetch the profile and up to 50 recent tweets (retweets filtered), run a web search for real-world context, then ask Claude Haiku to classify the account, returning strict JSON: account type, niche, and a 1–10 "who are you" score.
  6. Scoring: the model below.
  7. Persist and stream: the result lands in the cache and the public live feed, and the final value streams back over the same SSE connection driving the thinking UI.

The scoring engine

The valuation is a multiplicative model with additive, capped bonuses:

subtotal = base(followers)   // tiered, like tax brackets
         × engagement        // 0.5–2.5×, likes/follower ratio
         × quality           // 0.5–1.5×, age + ratio + verification
         × niche             // 1.0–3.0×, crypto > AI > tech > general
         × whoAreYou         // 1.0–10×, LLM judgment of stature

value = subtotal + builderBonus + influencerBonus
                 + verifiedBonus + monetizationEstimate

Two design decisions matter most:

  • Follower value is progressive, not linear. The first thousand followers are worth $0.01 each; followers past a million are worth $1.00 each. Reach compounds, and the model respects that.
  • Bonuses are capped relative to base value: a builder bonus can never exceed 10× base. Without this, small accounts with impressive bios ballooned into absurd valuations. The cap is what keeps results believable, and believable results are what people share.

What I'd highlight

The system is designed around unit economics: each fresh lookup costs about a cent in API calls, so the 24-hour cache, the rate limiter, and Turnstile aren't defensive afterthoughts; they're what makes the product viable at ~$180/month at 10K users. Design, engineering, and cost structure were one conversation.