promptdojo_promptdojo_promptdojo_promptdojo_promptdojo_promptdojo_promptdojo_promptdojo_promptdojo_promptdojo_promptdojo_

Data as the product — step 1 of 4

The rows are the product

QLoRA will faithfully reproduce whatever you put in examples.jsonl. If a third of the rows are unreviewed model output, the adapter learns that third. Human review is not a nicety on top of the dataset. It is the dataset.

A row in this lab looks like:

{
  "company_id": "acme-pay",
  "doc_id": "job-118",
  "input": "job=pay-checkout-test; log=AssertionError: cart total",
  "label": "product-bug",
  "reviewer": "sam",
  "reviewed_at": "2026-09-18"
}

company_id and doc_id exist so splits can be leak-safe. reviewer exists so an empty string is visible. A row with "reviewer": "pending" is not a training row yet.

Checklist before a row may enter train:

  • The label is one of the three, and you would defend it to the person who owns that CI job.
  • The input is a real log shape (or a fixture you marked as synthetic), not a paraphrase that accidentally names the eval companies.
  • You have rights to keep the text. Client logs, customer PII, and "I exported prod" dumps stay out unless counsel already said yes.
  • The base-model card was checked. Qwen2.5-1.5B-Instruct is the default; the card, not this paragraph, is the license.

The starter file in specialist-adapter-receipt/examples.jsonl is a fixture you can audit. Add your own reviewed rows beside it. Do not invent a thousand synthetic labels and call it a corpus.