Why this exists

What Ingot can see,
and what it cannot.

A tool that reports “no match” has said one of two very different things. We looked for your words and did not find them. Or: we could not have found your words.

Both are true sentences. Only the first is a result. This page is the list of every way the second one can happen, because a tool that blurs them is more dangerous than one that finds nothing at all — it turns a limit of the software into a reassurance about the world.

runs on your machine · no upload · no retention · no API key
The product today

Contamination leads because it is not an inference

A shared 10-gram — ten identical words in a row — between a benchmark and a corpus is a fact you can display side by side. Authorship is a statistical claim about a distribution. Both are worth building; only one of them can be handed to a skeptic who then agrees.

SHIPPED

Contamination scanning

Index the benchmark, stream the corpus once, show every match with its surrounding text. 7.0 MB/sec end to end on real gzipped corpus shards, in the browser or on the command line.

SHIPPED · LIMITED

Batch provenance

Human-authored or machine-generated, measured against named reference corpora. Honest detection floor is 50% contamination, and the four reasons are known.

NEXT

The public registry

Which benchmarks appear in which public corpora, reproducible from the same files, growing more discriminating with every corpus added.

Coverage

Six ways a clean result can mean “we could not look”

Every one of these is a limit Ingot knows about and reports. The failure this project actually fears is the limit nobody wrote down. Full detail, with the measurements, in docs/coverage.md.

1 · SCRIPT

Languages written without spaces

Ingot matches word n-grams, and finding a word means knowing where it ends. Chinese, Japanese, Thai, Lao, Khmer, Burmese and Tibetan are written without spaces between words, so that rule does not apply to them. The consequence is not degraded accuracy, it is total: a several-hundred-character Japanese essay tokenizes to one token, produces no 10-gram, and cannot be matched against anything. Reports name these items separately from short ones, and say the scan could not look rather than that it looked and found nothing. Korean is not affected — modern Korean puts spaces between words.

2 · LENGTH

Anything shorter than ten words

A text shorter than n tokens produces no n-gram at all. At the default n=10, a nine-word sentence cannot be matched by construction. Every report names these items rather than counting them as checked.

3 · QUOTE STYLE

Short text whose apostrophes were changed

The tokenizer keeps the ASCII apostrophe inside a word and treats the typographic one as a separator, and over 126,578 C4 documents, 39.1% use a word-internal curly apostrophe, 30.0% an ASCII one. Normalising smart quotes is what every CMS and scraper does. The damage is local, so length decides it: verbatim copies still found after re-quoting are 68.0% at 10–24 tokens and 100% above 25.

4 · THE CORPUS

What the dataset's own cleaning already removed

C4 is not the April 2019 web crawl. It is what survived a documented cleaning pass over it — a blocklist, a rule discarding any page containing a curly brace as code, a terminal-punctuation requirement, a five-line minimum. Text that was crawled and then discarded is absent for reasons that have nothing to do with who trained on it, and a report that stayed quiet about that would be lying with a true sentence.

5 · THE CRAWL

Pages the crawler never fetched

A page CommonCrawl never collected cannot be in any corpus derived from it. Two rules learned the hard way: a domain check can rule a platform out but can never clear a person, because a crawled host is not a crawled writer. And the index is sorted by URL, so sampling only its first page is biased toward whatever sorts first.

6 · VERBATIM

Paraphrase, translation, heavy editing

The exact tier finds verbatim overlap. A paraphrase is not verbatim and it will not be found. A second tier exists for edited copies, needs the source text, and reports why it is unavailable rather than reporting zero. Its measured recall is published, and it is not 100%.

The rule this exists to enforce: before any report goes out, its null results have to survive one question — could this scan have found the thing it says it did not find? If the answer is no, the report says so in the same place and the same size as the result. A caveat in a footnote under a green checkmark is a way of being technically honest and practically misleading.

Discipline

What Ingot refuses to do

Each of these was a bug first, caught by running the experiment and reading the output instead of trusting it.