A bot checker answers one question at platform scale: does this account behave like a human or like a farm — and every platform exposes enough signal to score the question without ever seeing the account's internals. Account age versus activity volume (accounts with three years of tenure and four posts read dormant-or-buyer, not organic; accounts with 10,000 followers and six days of tenure read bought), follower/following ratios against cohort norms (human accounts follow a few hundred and are followed back at declining ratios; bot networks invert this), engagement-rate math (likes and comments as a percentage of follower count, compared against the account's own historical rate and platform-cohort baselines), posting-cadence entropy (humans post in irregular clusters; automation posts on metronome schedules), and profile-completeness patterns (default avatars, handle-rewrites, bio-similarity clusters across followed accounts). This is bot-checker making decoded: the signal taxonomy per platform class, the scoring model that combines weak signals into usable classification, the mass architecture (API-tier discipline, pagination, rate-limit survival), and the output classes that downstream consumers — marketing hygiene, fraud analysis, network-mapping — actually parse.
ROUTE MAP (PLAIN ENGLISH)
The tool's core is a feature-extraction pipeline per account: fetch the account's public profile and recent-activity surface (API tier permitting), extract behavioral features (the signal taxonomy below), score against a weighted model, and classify (bot-likely, human-likely, suspicious-needs-review, inaccessible) with the contributing signals recorded per account so the classification is auditable rather than a black-box score. The platforms differ in data accessibility (some expose rich public activity APIs, some gate behind authenticated tiers with rate limits measured in hundreds-per-hour, some restrict public data access aggressively post-regulation) but the signal *categories* hold across platforms: age-activity coherence, network-structure ratios, engagement-rate math, cadence entropy, and profile-similarity clustering — each platform instantiates them with its own data fields and its own cohort baselines.
The scoring discipline is what separates useful checkers from theater. Weak signals combine — no single feature (default avatar, low posts, high follow-ratio) classifies anything alone; each feature contributes a weighted score component, the total crosses classification thresholds calibrated against labeled sample sets (known-bot-farm accounts versus known-human accounts per platform); and the weights are platform-specific (Instagram's engagement-rate economics differ from Twitter's, Discord's account-age signals differ from TikTok's — a universal-weight model misclassifies on every platform by fitting none); the calibration datasets are the checker's real moat, built from labeled samples (publicly-flagged bot networks, farm-account disclosures, organic-account controls) and refreshed as platform bot-farms evolve their tactics against exactly these detection features.
STEP 1 - THE SIGNAL TAXONOMY
STEP 2 - THE SCORING MODEL
STEP 3 - THE MASS API ARCHITECTURE
STEP 4 - OUTPUT CLASSES AND CONSUMERS
WORKED EXAMPLE - A TWITTER/X BATCH
Batch: 5,000 account handles, authenticated-tier access (moderate rate budget — 2,500 requests/hour across the credential pool). Extraction per account: profile metadata (creation-date, follower/following counts, avatar-status, bio-text), follower reservoir-sample (200-follower sample per account within rate budget), recent-activity window (last 50 posts with timestamps and engagement counts). Feature scoring on one worked account: account age 41 days, followers 14,200, following 38 (network-structure slightly human-leaning), follower-sample default-avatar density 61% (strong bot-network signal, -0.35), engagement-rate 0.004% of cohort baseline for 14K-follower accounts (strong bought-follower signal, -0.4), cadence-entropy 0.12 (metronome posting every 118±3 seconds during active windows, -0.25), bio-template-match against 9 other accounts in batch (farm-template flag, -0.1); composite -1.1 crosses the bot-likely threshold (-0.7); record writes with every feature value and contribution visible. Batch tallies: 1,847 bot-likely (median engagement-rate 0.006% of baseline — the bought-follower economy visible in aggregate), 2,203 human-likely, 691 suspicious (review queue — mostly odd-but-possibly-organic cadence cases), 259 inaccessible (private accounts). Cluster rollup: three interconnected bot-clusters surfaced (accounts in each other's follower samples at 40%+ density, shared bio-templates, correlated creation-date bursts within 72-hour windows) — the farm-map output that turned 1,847 individual classifications into three operationally actionable network views; wall time 2.4 hours at the rate budget, review-queue adjudications queued for the next calibration pass.
WORKING SEQUENCE
QUICK ANSWERS
RELATED
The tool's core is a feature-extraction pipeline per account: fetch the account's public profile and recent-activity surface (API tier permitting), extract behavioral features (the signal taxonomy below), score against a weighted model, and classify (bot-likely, human-likely, suspicious-needs-review, inaccessible) with the contributing signals recorded per account so the classification is auditable rather than a black-box score. The platforms differ in data accessibility (some expose rich public activity APIs, some gate behind authenticated tiers with rate limits measured in hundreds-per-hour, some restrict public data access aggressively post-regulation) but the signal *categories* hold across platforms: age-activity coherence, network-structure ratios, engagement-rate math, cadence entropy, and profile-similarity clustering — each platform instantiates them with its own data fields and its own cohort baselines.
The scoring discipline is what separates useful checkers from theater. Weak signals combine — no single feature (default avatar, low posts, high follow-ratio) classifies anything alone; each feature contributes a weighted score component, the total crosses classification thresholds calibrated against labeled sample sets (known-bot-farm accounts versus known-human accounts per platform); and the weights are platform-specific (Instagram's engagement-rate economics differ from Twitter's, Discord's account-age signals differ from TikTok's — a universal-weight model misclassifies on every platform by fitting none); the calibration datasets are the checker's real moat, built from labeled samples (publicly-flagged bot networks, farm-account disclosures, organic-account controls) and refreshed as platform bot-farms evolve their tactics against exactly these detection features.
STEP 1 - THE SIGNAL TAXONOMY
- Age-activity coherence: account creation-date against activity volume and follower acquisition curve (10,000 followers accrued in a week versus accrued over three years — the curve's shape classifies; sudden acquisition cliffs are bought-follower signatures); dormancy-to-activity transitions (years-old accounts suddenly posting at 10x historical rate read compromised or sold); account-age against platform-cohort (accounts created inside a burst-window — bot-farm onboarding clusters create timestamp-adjacent accounts at volume, detectable in aggregate even when each account looks individually plausible).
- Network structure: follower/following ratio against cohort norms (human accounts on social platforms typically follow under a few hundred with asymmetrical follower counts; ratios inverted or near-1:1 at high counts read follow-back-farm membership); follower-quality sampling (a random sample of the account's followers — high default-avatar density, high age-activity incoherence in the sample propagates the classification: accounts followed by bots with high probability are themselves in bot networks); follow-churn patterns (rapid follow/unfollow cycling visible in activity history where the platform exposes it — follow-for-follow automation's fingerprint).
- Engagement-rate math: likes-plus-comments as a percentage of follower count, compared against the account's own historical engagement rate and the platform-cohort baseline for the account's size class (a 50,000-follower account with 3 likes per post runs orders of magnitude below cohort baseline — bought followers do not engage, which is the single most reliable bought-follower signal available from public data); engagement-source sampling where visible (comment-section bot-signatures — emoji-spam accounts, copy-paste comment strings across many accounts' posts).
- Cadence entropy: posting-interval distribution (humans cluster posts irregularly — bursts and silence; automation shows low-entropy regular intervals — every 47 minutes, every 2 hours on the dot); content-similarity scanning where the activity surface exposes it (reposted-text clusters, identical caption templates across an account's posts — content-farm signatures); time-zone coherence (posting timestamps clustered in a single foreign timezone relative to the account's claimed geography — farm-floor schedules leaking through).
- Profile completeness and similarity: default-avatar flags, handle-rewrite history where visible (bot networks rotate handles to dodge bans — frequent rewrites on aged accounts read farm-operated), bio-text similarity clustering (identical or template bios across a follow-set — farm-onboarding templates), display-name pattern-matching (name-format clusters like "First Last 4-digits" that pattern across followed accounts).
STEP 2 - THE SCORING MODEL
- Weighted feature combination: each extracted feature contributes a signed score component (toward-bot or toward-human) weighted by its platform-specific discriminative power (calibrated on labeled sets — features that separate bot from human cleanly in calibration carry more weight); the weighted sum crosses classification thresholds (bot-likely above the high threshold, human-likely below the low, suspicious in between — the middle class exists because real accounts with odd-but-organic patterns should not be misclassified as bots by threshold-gaps).
- Platform-specific calibration: Instagram weights engagement-rate and follower-quality-sampling heavily (bought followers' non-engagement is the platform's strongest public signal); Twitter/X weights network-structure and cadence-entropy higher (retweet-farm and follow-bot signatures dominate); TikTok weights content-similarity and cadence (content-farm signatures); Discord weights account-age and verification-tier (fresh-account raid patterns); the weights file per platform ships as data, not code — recalibration as tactics shift without recompiling the extractor.
- Audit trail per classification: the output record carries each feature's extracted value and its score contribution — a bot-likely classification shows exactly which signals drove it (engagement-rate at 0.002% of cohort baseline contributed -0.4, follower-sample default-avatar density contributed -0.3, cadence entropy contributed -0.2), which lets downstream consumers weight the tool's verdict against their own context and lets maintainers debug miscalibration cases directly against the feature values.
- Threshold economics: false-bot classifications (humans flagged) and false-human classifications (farms passed) cost differently per consumer (marketing hygiene tolerates different asymmetry than fraud analysis) — the thresholds ship per-consumer-profile rather than one global operating point, and the calibration report shows the ROC tradeoff so the profile choice is informed rather than guessed.
STEP 3 - THE MASS API ARCHITECTURE
- API-tier mapping per platform: the data each signal needs, and which API tier exposes it — profile metadata (age, follower counts, avatar) usually sits on public or light-auth tiers; activity history and engagement details often sit on authenticated tiers with rate limits in the hundreds-to-thousands-per-hour band; the architecture's first design decision: which signals survive on the accessible tier (the checker's honest signal-subset for restricted platforms) versus which require the authenticated tier (full-signal mode for platforms where API access permits).
- Rate-limit survival: per-platform request budgets (tracked against the platform's published and observed limits — the observed limits often differ from documentation), token-bucket pacing per credential, and backoff discipline on 429-class responses (exponential with the platform's retry-after honored where present); multi-credential rotation for throughput beyond single-token budgets (each credential its own bucket, pool-aware scheduling); the rate-limit budget is the batch-planning input: accounts-per-hour per platform comes directly from the accessible tier's limit, not from the checker's compute capacity.
- Pagination and sampling discipline: follower-sampling pulls a random sample (reservoir sampling over the follower list's pagination) rather than the first page (first-page bias — the first followers are often the account's organic-era follows, misrepresenting the bot-network density further down the list); activity-window sampling pulls a fixed recent window (last N posts) with the account's historical window as a separate lighter pull where rate budget permits (the historical comparison is what makes engagement-rate and cadence-entropy honest per-account rather than one-snapshot guesses).
- Failure-mode taxonomy: platform-side access restrictions (private accounts, API-tier walls) classify inaccessible (not bot, not human — the tool could not see enough signal to score honestly, and the record says so); token-expiry and auth-failures park the batch for credential refresh, never classified per-account; platform-side blocks (429 storms that do not clear with backoff) rotate credentials and egress, with the run resumable from the last-completed account cursor.
STEP 4 - OUTPUT CLASSES AND CONSUMERS
- Record shape: account identifier, platform, classification (bot-likely/human-likely/suspicious/inaccessible), composite score, per-feature values and contributions (the audit trail), extraction timestamp, API-tier used, and sample-sizes where features sampled (follower-sample count, activity-window size — small samples carry wider error bars, and the record says so).
- Class files: bots.txt (bot-likely with score and top contributing signals), humans.txt, review.txt (suspicious-class — the queue for human or secondary-tool review), inaccessible.txt (private/API-walled — with the wall-type recorded for API-tier upgrade planning); downstream consumers filter on score-quantiles within classes (a marketing-hygiene consumer might drop only >0.8-confidence bots, a fraud-analysis consumer might review everything above 0.3) — the per-feature audit trail enables consumer-side thresholding without re-running extraction.
- Network-level outputs: the aggregate layer — follower-graph sampling rolls up into cluster views (accounts sharing follower-dense bot-clusters, accounts with high follower-sample default-avatar density interconnected), which is where the tool's value compounds beyond per-account verdicts: a single bot-likely classification is a data point; a cluster of inter-following bot-likely accounts with shared cadence-signatures is a farm map, and the aggregate analysis is what marketing-hygiene and fraud consumers increasingly pay for.
- Calibration feedback loop: review-class human-adjudications (confirmed-bot versus confirmed-human on sampled review cases) feed the next calibration pass — the model's platform-specific weights drift as bot-farms evolve tactics against current features, and the labeled-data refresh cadence (monthly per platform) is what keeps the classification surface honest against the farms' counter-adaptation.
WORKED EXAMPLE - A TWITTER/X BATCH
Batch: 5,000 account handles, authenticated-tier access (moderate rate budget — 2,500 requests/hour across the credential pool). Extraction per account: profile metadata (creation-date, follower/following counts, avatar-status, bio-text), follower reservoir-sample (200-follower sample per account within rate budget), recent-activity window (last 50 posts with timestamps and engagement counts). Feature scoring on one worked account: account age 41 days, followers 14,200, following 38 (network-structure slightly human-leaning), follower-sample default-avatar density 61% (strong bot-network signal, -0.35), engagement-rate 0.004% of cohort baseline for 14K-follower accounts (strong bought-follower signal, -0.4), cadence-entropy 0.12 (metronome posting every 118±3 seconds during active windows, -0.25), bio-template-match against 9 other accounts in batch (farm-template flag, -0.1); composite -1.1 crosses the bot-likely threshold (-0.7); record writes with every feature value and contribution visible. Batch tallies: 1,847 bot-likely (median engagement-rate 0.006% of baseline — the bought-follower economy visible in aggregate), 2,203 human-likely, 691 suspicious (review queue — mostly odd-but-possibly-organic cadence cases), 259 inaccessible (private accounts). Cluster rollup: three interconnected bot-clusters surfaced (accounts in each other's follower samples at 40%+ density, shared bio-templates, correlated creation-date bursts within 72-hour windows) — the farm-map output that turned 1,847 individual classifications into three operationally actionable network views; wall time 2.4 hours at the rate budget, review-queue adjudications queued for the next calibration pass.
WORKING SEQUENCE
Code:
bot checker: platform API-tier mapping (which signals accessible per tier) -> feature extraction: age-activity coherence, network ratios + follower reservoir-sample, engagement-rate vs cohort baseline, cadence entropy, profile similarity -> weighted scoring, platform-specific calibration (labeled sample sets, monthly refresh), per-feature audit trail -> classes: bot-likely/human-likely/suspicious/inaccessible -> rate-limit survival: token buckets per credential, 429 backoff, multi-credential rotation -> aggregate: follower-graph cluster maps (shared bot-cluster density, bio-templates, creation bursts) -> review-queue adjudications feed calibration loop
QUICK ANSWERS
- What does a bot checker actually check? Public behavioral signals — account-age versus activity volume, follower/following ratios against cohort norms, engagement-rate math (bought followers do not engage, the strongest public signal), posting-cadence entropy (humans post irregularly, automation runs metronomes), and profile-similarity clustering — combined via platform-specific weighted scoring into bot-likely/human-likely/suspicious classifications with the contributing signals recorded per account.
- Which signal is most reliable? Engagement-rate versus cohort baseline for the account's follower-count class — bought followers do not like or comment, so accounts running orders-of-magnitude below baseline engagement at high follower counts carry the bought-follower signature directly in public data; follower-sample default-avatar density is the close second (sampling the account's followers for bot-signatures — followed-by-bots propagates the classification).
- Why reservoir-sample followers instead of reading the first page? First-page bias — a follow-set's earliest followers are often the account's organic-era follows (or the farm's seeding-wave, depending on account history), misrepresenting the bot-network density that shows up deeper in the list; reservoir sampling over pagination gives a uniform random sample whose default-avatar and age-activity stats extrapolate honestly to the whole follow-set within known sampling error.
- How do API rate limits shape the architecture? The accessible tier's request budget (hundreds-to-thousands-per-hour per credential on most platforms) directly sets accounts-per-hour throughput — the architecture maps which signals survive on the accessible tier versus which need authenticated tiers, runs token-bucket pacing per credential with multi-credential rotation for scale, honors 429 backoff, and batch-plans from the rate budget rather than compute capacity (the compute is never the bottleneck; the platform's request budget always is).
- What is the suspicious class for? Accounts with odd-but-possibly-organic patterns that fall between classification thresholds — real humans with unusual cadence, dormant accounts reactivating, small accounts with atypical ratios — the middle class exists so threshold-gaps do not misclassify ambiguous accounts as bots; the review queue's human-adjudications feed the next calibration pass, which is how the platform-specific weights stay honest as bot-farms evolve tactics against current features.
- Do platform differences matter in the model? Entirely — Instagram's engagement-rate economics, Twitter's network-structure and cadence signatures, TikTok's content-farm similarity signals, Discord's fresh-account raid patterns each carry different discriminative power, so weights ship per-platform as recalibratable data rather than one universal model; a universal-weight checker misclassifies everywhere by fitting none of the platforms' actual signal distributions.
RELATED