How it works

Talk is cheap. Checks are permanent.

CapCheck scans an X profile's recent tweets, pulls out every concrete price prediction, resolves each one against real market data, and scores the account. No opinions โ€” just receipts.

What counts as a call

A gradable call has three things: an asset, a price target, and a deadline. If any of those are missing, the tweet is noise.

Gradable
"ETH to $5k by Dec 31"
"BTC reclaims 100k before Q2"
"SOL > $300 this cycle (EOY)"
Not gradable
"bullish ๐Ÿš€"
"BTC going parabolic"
"BREAKING: ETF inflows hit record"

How calls resolve

Each call gets a snapshot of the asset's price at the moment it was posted. On or after the deadline, we pull the historical price from CoinMarketCap (with a CoinGecko fallback) and compare against the target.

  • certifiedtarget was hit before the deadline.
  • capdeadline passed, target missed.
  • pendingdeadline still in the future.
  • unresolvableasset or timeframe can't be priced.

Cap score

Think of cap score as a "does following this person make or lose you money" number. It blends hit rate with average P&L across resolved calls โ€” a few lucky moonshots don't drag up a long tail of misses.

We don't publish a verdict until there are enough resolved calls to be honest. A single good call is a coin flip, not a track record.

Signal (anti-gaming)

Signal โ‰  endorsement. Signal measures how much to trust our measurement of this account โ€” not whether to trust the caller.

A handle can hit signal 100 and still verdict as cap. That means "we're confident in the measurement, and the measurement says their calls miss." It is not a contradiction.

Creating a fresh account and back-dating "predictions" is the obvious way to game any system like this. Signal penalizes that pattern:

  • New accounts (< 30 days) take a hit.
  • Low-follower accounts take a hit.
  • Predictions with a deadline less than an hour after the tweet are dropped โ€” that's not a call, that's a post-hoc screenshot.
  • We track calls that disappear between scans and flag the account if they do. Delete-your-bad-calls doesn't work here.

Share & embed

Every handle's verdict is available as a live SVG badge you can drop into an X bio, GitHub README, Substack footer โ€” anywhere <img> works. The badge updates itself when the verdict or hit rate changes.

verdict badge examplecapscore badge examplehit rate badge example

Scan any handle โ€” the full markdown/HTML snippets are right on their page. Prefer JSON? Every surface has a read-only endpoint under /api.

What CapCheck can't do

Private accounts โ€” if an account is followers-only, we can't see their tweets. No verdict possible.

News/sentiment accounts โ€” some popular accounts tweet constantly but never make falsifiable calls. They're not bad, they're just not gradable. We label these clearly instead of faking a verdict.

Chart TA โ€” "breaking out of the wedge" without a price target isn't a prediction we can grade. If they name a number, it's in.