Methodology — open, inspectable, imperfect

ScanForAI runs the open-source aiscan engine; everything below is its actual scoring logic.

Every formula below ships in the source. If you can't inspect a detector's method, you can't contest its output; here you can do both.

Tier 1 — stylometric heuristics

Each signal maps a measurement to 0..1 (1 = machine-leaning) and carries a weight (its reliability). The overall score is the weighted average, ×100. Signals abstain (weight 0) when the text is too short to judge.

The four shape signals were derived in July 2026 from a 349k-word fiction corpus that passed every signal above and still tripped perplexity-class detectors — the surviving tells were all sentence-shape tells, not word choice.

Tier 2 — local model perplexity (weight 6.0)

A small open model runs on our own hardware and measures per-token surprisal. Machine text is unusually predictable — a low, flat surprisal stream — which is the GLTR/GPTZero family of evidence. Predictability carries the signal (a light uniformity term rides along). Input is capped at 1,024 tokens. No third-party AI APIs are called, ever.

Genre gating

Most tells are genre-dependent. Corpus calibration (July 2026) showed several signals mean opposite things in different registers: aphorism density flags persuasive AI but is normal literary voice; simile density is higher in human fiction than in current AI fiction; contraction rate is tuned for fiction and mis-reads formal exposition. The scanner therefore classifies each input (fiction / expository / promotional / mixed, from pronoun, tense, dialogue, second-person and imperative density) and lets genre-sensitive signals abstain or re-baseline where they are not diagnostic — rather than punish a strong human voice. The detected genre is returned in every result. Lexicon and typography signals are genre-robust and are never gated.

Design rule: a genre gate may only make a signal quieter where the corpus shows a false positive; it never raises an accusation. Per-genre calibration tables are a work in progress as the harvest corpus grows.

Honest limitations

Independent evaluations are welcome — the scoring engine is a small, readable Python package with zero dependencies in its heuristic tier.