VerifAI Scan · engine v4.2
AI-generated text detector
Upload a document and our engine estimates the probability it was written by an AI. Private analysis: processing happens on your device.
- Extracting text from the document
- Segmenting into sentences
- Comparing against the reference corpus
- Computing perplexity and burstiness
- Generating verdict
Detection report
Flagged passages
None of that was real.
This report is 100% random. Your file never left your browser: it was not read, not uploaded, not analyzed. The progress bar was an artificial delay and the percentage came from Math.random(). Hit “Analyze again” on the same file and you will get a different verdict. That is the whole point.
Read why I built this →How it really works
Why this page proves something
It looks like a product: you upload a file, watch a progress bar, and get a report with its percentage. But it analyzes nothing. The file is never read and never leaves your browser, the delay is artificial (and longer for a bigger file, so it seems to be working hard), and the verdict comes from a random number generator.
That's exactly the article's point: if you can't audit the process, you have no way to tell a real analysis from this. An online black box could hand you this very report and you wouldn't notice the difference.
And to be fair: maybe a real service does have an actual language model behind it. I'm not denying that. But that doesn't save it, because current evidence tells us an LLM is a non-deterministic entity (the same input can yield different verdicts on each run) and unviable for this kind of analysis. A genuine model on the other end doesn't turn its output into a reliable measurement.
The entire “engine,” uncut, is this:
// Looks like a real detector endpoint. It claims to analyze your document...
async function analyze(file: File): Promise<Report> {
// ...but it never reads the file. It just waits, scaled to the size,
// so a bigger upload "feels" like more work was done.
await waitProportionalTo(file.size);
// And the verdict? Pure chance.
const aiProbability = Math.round(Math.random() * 100);
return {
aiProbability,
verdict: aiProbability >= 65 ? "likely AI" : "likely human",
confidence: 50 + Math.round(Math.random() * 49),
};
}