← anamaya.fyi 2023 · rebuilt

Was this written by a machine?

Paste anything. The model scores it, and then shows you every word that moved the score — because it is a sum of word weights and nothing else. It runs in this tab; the text is never sent anywhere.

Loading the model…

The number you should not trust

99.9% accuracy here means the dataset was easy, not that the problem is solved. The two classes came from two sources with different registers, and a linear model separates those almost perfectly. Point it at anything else and it comes apart — press Austen, 1813 above and watch it call Pride and Prejudice machine-written with about 95% confidence. No detector should ever be used to accuse anyone of anything, and this is why.

Length is doing most of the work

The same book, scored in passages of different lengths. Every one of these is Jane Austen, and the model's verdict reverses entirely depending on how much of her it is shown at once — because a short passage has too few features for the L2 normalisation to mean anything, and whatever is left gets amplified.

Passage lengthMean p(machine)Flagged as machine
40 words0.72210 of 12
80 words0.4705 of 12
150 words0.2862 of 12
300 words0.2332 of 12
600 words0.1230 of 12
1,200 words0.0160 of 12

Measured on Pride and Prejudice (1813), twelve passages at each length. This is the sort of thing an accuracy figure on a held-out split will never tell you, and the reason the offline number and the deployed behaviour are two different measurements.

What it actually learned

The strongest features are function words, not ideas. That is the tell: it is reading register — sentence shape, connective density, formality — rather than meaning.

Pushes towards machine

Pushes towards human

Why this and not the original model

The 2023 version ran roberta-base-openai-detector behind a Plotly Dash app. That model is around half a gigabyte, which is not something you hand a browser, so a faithful port was never on the table. A linear model over word features is — and it has a property the transformer does not: every decision decomposes into per-word contributions, so the page can show its working instead of asking for trust.

The arithmetic has to match the library it was fitted with, or the numbers here are decoration. Forty held-out texts scored in scikit-learn ship with the page, and it re-scores them on load and reports the largest disagreement — that is the line above.