How scoring works
Every account in a scan (and every Watch actor) gets a 0–100 risk score from transparent heuristics on public profile fields. Points add up; the result is clamped to 0–100. Nothing is a black-box model and nothing “proves” that someone is a bot.
Risk bands
The portal groups scores into three bands used by filters, the verdict card, and Graph Health:
| Band | Score | How to treat it |
|---|---|---|
| High risk | ≥ 70 | Strong stack of risk signals — prioritize for review or Cut, but still read the flags |
| Review | 35–69 | Mixed or incomplete evidence — human judgment before labeling |
| Low risk | < 35 | Fewer risk signals on public metrics — still not a “verified human” stamp |
How a score is built
- Start at 0.
- Evaluate each rule below on public metrics (followers, following, tweet count, account age, bio, username, verification). Matching rules add points and a short flag label.
- If the account is verified (blue / business / government style identity) and the score is already > 0, apply a −10 verification credit.
- Round and clamp to 0–100.
Optional Deep check (Starter+ plans, 2 credits) re-runs the same model with recent post samples so one extra rule — link density — can fire. Graph scans alone do not load posts.
Signal rules (what each flag means)
Marketing copy groups these into six signal families. The table is the product rule set as implemented today (points and thresholds):
| Family | Flag label | When it fires | Points |
|---|---|---|---|
| Follower / following ratio | low follower ratio | Followers ÷ following < 0.1 and following > 400 | +30 |
| Age vs volume | new+high volume | Account age < 200 days and tweet count > 3 000 | +25 |
| burst posting | Tweets per day > 80 and age < 365 days | +20 | |
| Aggressive following | aggressive following | Following > 4 × followers and following > 800 | +20 |
| mass following | Followers < 20 and following > 1 500 | +18 | |
| Bio signals | empty bio | Blank bio and following > 600 | +10 |
| spammy bio | Bio matches promo/spam keyword hits (see below) | +10 to +25 | |
| Username patterns | generated username | Looks auto-generated (long digit runs — see below) | +12 |
| Posts (Deep check only) | link spam | In the sampled posts, > 60% contain a URL | +15 |
| Identity credit | verified | Account marked verified and score already > 0 | −10 |
Spammy bio keywords
The bio is lowercased and checked for promo-style substrings. Each hit increases the spammy-bio score; points are min(25, 10 + 5 × hits). Examples of terms that count (not exhaustive of every false positive — read the whole bio):
free · signal · alpha · promo · dm for · crypto · airdrop · nft · giveaway · click here · follow back · 100x · whitelist · telegram · discord.gg · onlyfans · link in bio · earn money · passive income
Generated username heuristic
Designed to catch throwaway-style handles without flagging ordinary alts:
- Pure digit handles with 6+ digits (e.g. 482910)
- Letter/underscore prefix with at least two letters, then a 6+ digit trailing run (e.g. long auto suffixes) — short human suffixes like four digits are intentionally not enough
How this maps to “six signal groups”
Public landing copy summarizes families rather than every rule name:
- Follower / following ratio — low follower ratio
- Account age vs post volume — new+high volume
- Average / burst posting rate — burst posting (tweets per day)
- Aggressive following — aggressive following + mass following
- Bio signals — empty bio + spammy bio
- Username patterns — generated username
Deep check’s link spam is an extra post-content signal on top of those six profile families.
Using scores in the portal
- Band chips (All / High / Review / Low) and advanced score ranges filter the snapshot only — no re-fetch of X.
- Verdict card summarizes high-risk % and offers count-aware actions (review high-risk → review queue → export cut list).
- Dispositions (Keep / Review / Cut) are your decisions — independent of the score. A low-score account can still be Cut; a high-score account can be Keep.
- Rescan selected re-runs the same model for a handful of accounts (2 credits / press) without using a monthly scan.
- Deep check is per-account, plan-gated; Free has 0 deep checks per month.
About the illustrations: Figures in Docs are synthetic UI mockups (SVG diagrams with demo handles such as @demo_promo_bot). They are not screenshots of a live account or production data. Labels and layout approximate the portal for teaching; your product UI may differ slightly by plan and viewport.