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.jsonl

Testing 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.jsonl

Grounding 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.jsonl

Fine-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.jsonl

Teaching 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.

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.