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
Uncertainty sucks.
Stop estimating. Your rules, your payloads, your P99.