Output schema · v2.0.0
What comes out of a run
Whatever you put in — a PDF, a spreadsheet, a recording, a web page — a run returns the same thing: a JSONL file, one training example per line, in the shape you asked for. Every line can be traced back to the exact place in your source that it came from.
Every export includes
- The dataset — JSONL, one example per line, in one of the four shapes below.
- A quality report — duplicates, personal data, weakly grounded rows, scored 0–100.
- A data card — Markdown, describing how the set was built and what its limits are.
- A checksum manifest — so you can prove later that a file has not changed.
- The canonical JSON — everything above plus the full detail, in one file.
- CSV and Parquet on request; an EU AI Act Article 10 record where applicable.
The four shapes
You do not have to pick one from memory — the middle panel recommends a shape from what you say you want, and you can override it. These are the real rows, copied from what the exporter emits.
eval
dataset.eval.jsonlTesting whether a model is right.
You have a document and you need questions with known-correct answers, each pointing at the passage that settles it.
{
"record_id": "seg_004:eval:0",
"question": "What is the first-response SLA for a P1 incident?",
"reference_answer": "One hour, and a P1 requires an incident commander.",
"evidence": [
{ "segment_id": "seg_004", "anchor_ids": ["anc_p12c880"] }
],
"criteria": ["factual_correctness", "source_faithfulness", "completeness"],
"metadata": {
"difficulty": "easy",
"synthetic": false,
"split": "test",
"dataset_version_id": "dsv_01j9x"
}
}rag
dataset.rag.jsonlGrounding a model at query time.
You are building retrieval and need passages that carry their own citation, so an answer can always be traced to the page it came from.
{
"chunk_id": "chunk_seg_004",
"text": "P1 incidents carry a one-hour first-response SLA…",
"title": "Incident Response Handbook",
"source_id": "src_handbook",
"segment_id": "seg_004",
"evidence_anchor_ids": ["anc_p12c880"],
"section_path": ["Severity levels"],
"metadata": {
"split": "train",
"modality": "text",
"includes_generated_visual_description": false
}
}sft
dataset.sft.jsonlFine-tuning a model's behaviour.
You want the model itself to answer in a particular way, learned from your own material.
{
"messages": [
{ "role": "user", "content": "What is the first-response SLA for a P1 incident?" },
{ "role": "assistant", "content": "One hour, and a P1 requires an incident commander." }
]
}OpenAI's fine-tuning format rejects any key it does not recognise, so the provenance for these rows cannot ride inside them. It ships beside them in dataset.sft.provenance.jsonl, joined by custom_id — the training file stays loadable as-is, and nothing is lost. ShareGPT and Alpaca shapes are exported too where eligible.
multimodal
dataset.multimodal.jsonlTeaching a model to read images and video frames.
Your source has visual content that matters, not just words.
{
"messages": [
{ "role": "user", "content": [
{ "type": "text", "text": "What does this diagram show?" },
{ "type": "image", "asset_id": "ast_p12img", "alt_text": "Escalation path, on-call to secondary" }
] },
{ "role": "assistant", "content": [{ "type": "text", "text": "The escalation path…" }] }
],
"metadata": {
"dataset_version_id": "dsv_01j9x",
"segment_id": "seg_011",
"evidence_anchor_ids": ["anc_p12img"],
"split": "train"
}
}What every row can prove
The ids in those rows are not decoration. Each one resolves to a record in the canonical JSON:
- source_id
- Which of your files it came from, with that file’s checksum and the licence you declared for it.
- evidence_anchor_ids
- The exact location inside that file — a page number, a start and end timestamp, a character range, or a region of an image. A character-range anchor also stores a checksum of the text it points at, so a quote that no longer matches its source is detectable rather than merely suspected.
- field_lineage
- For each field, where it came from: extracted from your source, computed deterministically, model-generated, or human-verified — with the model and prompt hash recorded when a model was involved.
- synthetic
- Whether a model wrote this example. Generated text is never silently mixed into extracted text, and anything generated keeps a reference to the source segment that grounds it.
This is the part that is difficult to add afterwards. A dataset assembled by hand can usually tell you which document a row came from; being able to point at the sentence, months later, and show whether a model touched it, is what an audit actually asks for.
For machines
The contract is versioned and published. Validate against it in your own pipeline rather than trusting this page.
- /api/schema — the canonical dataset as JSON Schema.
- /api/schema?contract=all — every export contract, including each JSONL shape above.
- /llms.txt — a plain-language brief for AI agents.
Those return raw JSON Schema. It is long and it is meant to be read by a validator, not by a person — this page is the version for people.