Skip to content
Sırdaş

Training datasets · 100% local

From a folder of PDFs to an audited dataset. Without uploading anything.

Fine-tuning a model or building a RAG on client documents means building a dataset, and today that means uploading the PDFs to a service or wiring a Python pipeline designed for terabytes of web text. Sırdaş runs the whole chain in your browser or your terminal: convert, redact, deduplicate, split by document and export in the format your trainer expects.

The whole chain, without leaving your machine

PDF converters end at Markdown and corpus curators start at JSONL. The bridge between them, with provenance, per-document splits and a redaction trail, is what we built.

  1. PDF · DOCX · HTML
  2. Markdown
  3. Redact
  4. Dedupe
  5. Split by document
  6. JSONL

Four mistakes almost nobody avoids

Each one has literature documenting it. Each one has a step in the pipeline that fixes it.

01

Duplicates: the model memorizes instead of learning

Over 1% of what a model trained on public corpora emits is verbatim training text. A folder of contracts on the same template is the extreme case.

Deduplication cuts memorized text tenfold and needs fewer training steps for the same quality.

What we do

MinHash + LSH over 5-grams, 128 signatures, threshold 0.8, final check with exact Jaccard.

Lee et al., ACL 2022
02

Contamination: the metric stops measuring

If a fragment of the evaluation set is in the training set, the score measures memory, not learning. Llama 3 published benchmarks contaminated up to 98%.

GPT-3 set the method: 13-gram overlap, discarding n-grams that appear in more than 10 documents.

What we do

sirdas contamination, 13-grams by default, and the literal matching fragment in the report so the finding can be checked.

Brown et al., GPT-3, appendix C
03

Leakage through chunking: the silent one

Chunk first and split later, and two fragments of the same contract land one in train and one in test. The metric improves, and lies.

Kapoor and Narayanan count 329 papers affected by leakage across 17 fields.

What we do

The split is always by document, stable (same seed, same split), and adding a document never moves the ones already there.

Kapoor and Narayanan, 2022
04

Personal data the model ends up reciting

Names, phone numbers and emails that appeared in a single corpus document were extracted from GPT-2. Larger models are more vulnerable.

Nobody detects generic identifiers reliably: StarCoder's human annotators reached 53%. Our redaction is rule-based and can fail too.

What we do

Redaction on by default, with a count of replacements and a warning if you turn it off. Reversible with the mapping, which stays with you.

Carlini et al., USENIX 2021

Out in the format your trainer expects

Every trainer expects a different schema and the error shows up late. Field names are verified against the official docs.

FormatWho consumes itFields
textContinued pretraining (TRL)text
chatTRL, Unsloth, OpenAI fine-tuningmessages[{role, content}]
prompt-completionTRLprompt, completion
alpacaAxolotl, LLaMA-Factory, Unslothinstruction, input, output
sharegptChat trainersconversations[{from, value}]
langchainChains and vector storespage_content, metadata
llamaindexTextNode with stable idid_, text, metadata
embeddingsPinecone, Qdrant, pgvector, Chromaid, text, metadata
train / validation / testAnything, with a Hugging Face card (--hf)three files + README.md
RLVR (sirdas rl)GRPOTrainer and verifiable rewardsprompt, ground_truth

In the browser or in your terminal

The web tool is for a folder. For thousands of documents the CLI does the same on your machine, with --json output for scripts.

See the CLI

Convert, redact, dedupe and split. With --hf you get train/validation/test and the Hugging Face card.

npx sirdas dataset docs/*.pdf --format chat --split --hf -d dataset/
npx sirdas dataset contracts/*.docx --format alpaca --strip-boilerplate -d ds/

What we won't build

And why. Anything that requires sending your documents to a model contradicts the reason this product exists.

What already exists, and what doesn't

There is a clear dividing line: converters end at Markdown and curators start at JSONL.

ToolLocalDedupContaminationPIIExports for training
unstructured, Docling, marker, nougat
LlamaParseno, cloud
datatrove (HF)yes, Pythonregex
dolma (AI2)yes, Python + Rustregex
NeMo Curatoryes, Python + CUDAPresidio
text-dedupyes, Python
Sırdaşbrowser / Nodeyes, reversible

jsonlkit.com already does deduplication, PII masking and leak detection in the browser; what it lacks is PDF ingestion. The techniques (MinHash, LSH, n-grams, group splits) have been published for years: what is new is that they run on your PDFs with nothing to install and the file never leaving your machine. Full research, with sources, in the document linked below.

Read the full research (with sources)

Worth reading before you start

The three articles that explain, with citations, what almost everyone gets wrong the first time.

Blog

Questions

Do I need to install Python or Node?
Not for the web: drop the PDFs and download the JSONL. The CLI needs Node 20 and runs with npx, nothing else to install.
How many documents can the browser handle?
It depends on your machine's memory; a folder of dozens of PDFs is fine. For thousands, the CLI does the same on your machine, without uploading anything.
Does it generate questions from my documents?
No. That would require sending your text to a model. What it does generate without a model are verifiable-reward pairs from tables (sirdas rl), with a single answer printed on the page.
Can I review before downloading?
Yes. You see the first lines of the JSONL, the tokens, the median per record, how many personal data items were replaced and how many duplicates were dropped.
What about scans?
Run them through the local OCR in PDF to Markdown first, which also runs on your device. Then they enter the dataset like any other.
Is it free?
Yes, for people. Companies pay for team console, shared templates, self-hosting and a data processing agreement.

Drop your folder of PDFs.

Out comes a JSONL you can audit, with your data exactly where it was: on your machine.

Build a dataset now