Train

Filter the corpus before it is trained on.

Filtering runs at ingestion instead of as a scheduled batch, so it never gets skipped.

Where you are today

Filtering runs last, if it runs at all.

Corpus filtering is a multi-day batch on a large CPU fleet, so it waits until the data has landed and gets skipped when the schedule slips.

What was in the training set becomes a question you answer from memory, not from a record.

What changes with NOL8

The batch becomes a stage in the move.

The same list-shaped work runs inline, as the corpus moves instead of after it lands.

Throughput, not latency, is the argument at this phase. Nothing waits for a scheduled window.

What NOL8 filters for

Your own lists, matched exactly as the corpus moves.

Opt-out and rights lists

Content that must not be trained on, removed before it is.

Exact dedup

Duplicates removed in a single pass.

Eval-set decontamination

Evaluation data kept out of the training set.

Known-bad strings

Pattern matches removed at ingestion.

Your data pipeline stays as it is

Between the corpus and the trainer.

NOL8 is a stage inside the move, and the filtered corpus is what your trainer sees.

If NOL8 already checks prompts at inference or agentic tool calls, there is nothing new to deploy for training. It is the same plane.

What was removed, and why, is on the record, so what was in the training set is something you can query.

Common questions

Because NOL8 filters the corpus as the data moves, so it does not occupy a large CPU fleet for days. At train the argument is throughput against a multi-day batch; latency is the argument at serve and act.

No. NOL8 is a stage inside the move, not a replacement for it.

NOL8 matches against your own lists: opt-out and rights lists, exact dedup, eval-set decontamination and known-bad strings. Your policy set is the next benchmark.

Uncertainty sucks.

Stop estimating. Your rules, your payloads, your P99.