Download a fill-in template
Copy the case object for each question and replace every REPLACE_WITH value.
Download the worked example
A complete example using fictional training data, with provenance and review metadata.
The template is valid JSON with unfinished content. The worked example teaches the format; it is not an approved benchmark or a real product datasheet. Keep new cases marked
draft until their facts and answers have been reviewed.Start with the file structure
The outer object containsqa_pairs, an array of case objects. One object inside that array becomes one question in an evaluation run.
qa_pairs for the next question; do not create a new top-level key for each question. Save the file as UTF-8 with a .json extension.
The fields in each case
These are the recommended fields for a hand-authored dataset. The importer also accepts
query in place of question, expected_output in place of answer, and meta in place of _meta. Choose one naming convention throughout a file. If both versions are present, the importer prefers a non-empty query, a non-null expected_output, and an object-valued meta; conflicting copies can therefore hide an edit.
question: the input to Herman
Write the question as a buyer, processor, or engineer would ask it. Name the grade or document when the answer depends on it. Include units and operating conditions when they are part of the request. Keep each case focused on one task. A request for a hardness value and its test conditions is one task; asking for that value and an unrelated commercial recommendation should usually become two cases. Avoid putting the expected answer into the question.answer: the reference response
Write what a correct response should say, using the supplier page or uploaded document as the source. Preserve units, ranges, test methods, and conditions. Do not fill missing product-specific values with general materials knowledge. The reference answer is authored before the run. It is different from the actual output, which is the answer Herman generates during the run. Do not paste a generated response intoanswer unless it has been independently verified.
For a fuller material-selection answer, use a direct answer followed by these sections where the dataset’s review process requires them: KEY MATERIAL FACTS, MECHANISM REASONING, APPLICATION REQUIREMENTS, EVALUATE FOR, and CERTIFICATIONS TO VERIFY. In a JSON string, encode line breaks as \n. Keep supplier claims distinguishable from your own technical reasoning.
relevant_facts: the claims being checked
Each string should express one independently checkable claim. In the example, hardness, test method, and test temperature are separate claims so a response can be assessed on each one.- Aim for 2 to 8 meaningful facts per case. Do not pad a simple question to reach a count.
- Include the qualifiers needed to make a claim correct: the grade, units, thickness, color, or test conditions, as applicable.
- Do not combine several unrelated standards or properties into one string.
- Keep the list complete: a response satisfying every fact should satisfy the intended technical question.
answer. The fact list guides its technical-correctness subscore; the reference answer also supports the broader completeness and reasoning assessment. If the list is absent or empty, technical correctness falls back to the reference answer.
Changing relevant_facts changes what counts as correct. Treat that as a new dataset revision and rerun the baseline before comparing results.
type_of_question: the question format
Useshort_answer for the normal reference-answer workflow. A Numerical case should state the expected quantity, units, and relevant conditions clearly. For MCQ, include the choices and a reference identifying the correct option; setting the type alone does not create options or select a scoring metric. The importer supports a choices object alongside question and appends its labeled options to the prompt.
_meta: identity, coverage, and review
Metadata makes a case traceable. These fields are authoring and review conventions; a successful upload does not prove that the sources are correct or that review has happened.
Keep
status meaningful: the importer does not automatically exclude draft cases. Select or export approved cases before using a dataset as a benchmark.
Confidence and claim provenance
For a dataset that will be maintained or audited, add the following fields. The worked example download shows them together.published means the supplier or document states the fact. absence means you checked the source and the relevant information is not published there. reasoning identifies your own materials-science explanation. judgment identifies an interpretive or commercial assessment.
The three arrays must stay aligned: relevant_facts[0], fact_basis[0], and fact_sources[0] describe the same claim. Add, remove, or reorder their entries together.
As a review convention, use high when every graded claim is directly supported or its absence verified on one source; use medium for cases spanning sources or including technical reasoning; and use low when a graded claim lacks adequate support. Fix or remove low-confidence cases before approval.
Cases for individual uploaded documents
Adddocument_id to identify the uploaded file and corpus_checked_on to record when you last checked the question against the full document collection. Use 1 to 3 focused questions per document, each anchored to facts specific to it.
A single source_pages entry records one source, but does not prove that another document cannot answer the question. Check the rest of the corpus explicitly, and repeat that check when documents are added. Use directly published claims for these retrieval tests.
Optional file-level evaluation settings
The simplest file only needs theqa_pairs wrapper. The current file importer also recognizes optional metrics and judge_config fields next to it. These set defaults for evaluation; they are not case metadata.
metrics is an array of recognized metric IDs. judge_config can be a configured preset name, such as "default", or an object with a default preset and metric-specific overrides. It selects the evaluator used to score responses, not the model answering the questions. Run settings can override dataset defaults. Leave these fields out if you will configure scoring when starting the run.
How the fields connect to the scores
Putting a URL in
_meta documents your source; it does not supply retrieved context to the runtime metrics. Those metrics need the relevant evidence from the run. A dataset with questions but no reference answers can therefore produce some scores while being unsuitable for TCC.
Check the file before using it
- Confirm it parses as JSON and contains a non-empty
qa_pairsarray of objects. - Give every case a non-empty question and a stable, unique
internal_ref. - Include a verified, non-empty reference answer for every case intended for TCC.
- Check every numeric value, unit, standard, and qualification against its source.
- Keep facts atomic and keep the provenance arrays the same length and in the same order.
- Remove all template placeholders, duplicate questions, and accidental answer hints.
- Check category spelling, source locations, confidence notes, and review status.
- Have another reviewer inspect the content. JSON parsing and upload acceptance only verify part of the job.
herman_eval_supplier_20261022_v1.json. Keep the case IDs stable across revisions. Record substantive changes to questions, reference answers, or facts before using the new file for score comparisons.
Training source
This fictional source is included only to make the worked example self-contained:
The numbers describe an invented teaching example. Replace this row and its source references with a verified supplier document when building a real dataset.