Dataset insights

Overview

Reads the statistics of a dataset and writes a short report saying what they mean for training: what is wrong, what follows from it, and what is still unknown. Each finding gets a severity and is backed by a chart, a table, or images from the report.

Annotation quality charts the same numbers. What it cannot do is judge them, because the judgement depends on the dataset: a 6:1 frame threatens small objects, a 16:9 frame is ordinary. This node makes that call per run instead of baking it into a template. Connect the reports of other analysis nodes, such as Annotation quality, Image quality, Find annotation gaps, Similar pairs, Label diagnostics or Embedding anomalies, to Findings from other nodes, and their findings are ranked and written up in the same report.

Currently supports only image datasets. The badge shows how many findings the report holds.

Dataset Annotation quality Dataset insights

Prerequisites

RequirementWhat you need
Anthropic API keyA key stored as an OvalBee secret of the Anthropic type. The report text is written by an Anthropic model, billed to that key.
Analysis reports (optional)Reports from other analysis nodes that ran on the same dataset, for Findings from other nodes.

How it works

1

Measures the dataset’s annotations, reusing whatever the shared statistics store already holds — the same store Annotation quality uses, so nothing is computed twice.

2

Turns the statistics into findings. The questions are generated from the shape of the data, so a dataset with no tags is never asked about tags. Findings from the connected reports are added to the list.

3

Renders every finding that has a visual form into a chart, table, or image gallery.

4

Asks the model to rank every finding by severity, then to write the report around those files in that order. It writes prose and references, never a number into a data file.

5

Checks the report and sends it back for a rewrite when something fails, for example a number that no finding supports. Drops the unused charts, then uploads.

FAQ

Statistics measured from the dataset, such as counts, class and tag names, and the findings and text of the connected reports. Images are never sent.

The report is checked before it is published. When the model’s text still fails the check after three attempts, the run fails rather than publish a wrong report. A failed Anthropic call, such as a rejected key, a model the key cannot use, or a rate limit, also stops the run.

Claude Opus 5 is the default. A smaller model costs less and is usually enough.

Only findings the node can read are folded in. A report whose findings cannot be read is skipped and shows a dash in the sources table, while a 0 there means that node ran and found nothing.

Inputs

Dataset
datasetRequired

Dataset to analyse. Its images and annotations are measured, and the report is written about it. Key: DATASET.

Findings from other nodes
report

Reports from other analysis nodes to fold into the findings list. Reports that carry no findings are skipped. Values come from DATASET. Key: REPORT_IDS.

Anthropic credentials
secretRequired

Your Anthropic API key, stored as a secret. It writes the report text - only the statistics measured here and the findings of the connected reports are sent, never your images. Allowed credential types: anthropic. Key: ANTHROPIC_SECRET.

Model
selectDefaults to claude-opus-5

Which model writes the report. A smaller one costs less and is usually enough. Key: LLM_MODEL.

Options:

  • Claude Opus 5 (claude-opus-5)
  • Claude Sonnet 5 (claude-sonnet-5)
  • Claude Haiku 4.5 (claude-haiku-4-5)

Outputs

Report
report

Asset ID containing the dataset insights report. Shown as an artifact. Key: REPORT_ID.

Headline
string

Number of findings in this report, shown as a badge. Shown on the node as a badge. Key: HEADLINE.

Report

The report opens on an Overview tab with metric cards and every finding in severity order: Critical stops training until it is fixed, Warning blocks something you are about to do, Notice is real and bounded, and Passed was checked and is not a problem. Each finding has its own section with the evidence behind it and a line saying why it got its level. Findings that come only from a connected report get a tab named after that node, and a Questions tab can appear when a finding depends on how the dataset will be used. A table lists where the findings came from.

JSON config

Machine-readable node interface for automation and advanced usage.

{
"name": "Dataset insights",
"description": "Turns the dataset's statistics into findings written in plain language, each one backed by a chart in the report.",
"category": "Datasets",
"namespace": null,
"templateKey": "dataset_ops/dataset_insights",
"version": "v1",
"inputs": [
{
"key": "DATASET",
"label": "Dataset",
"type": "dataset",
"description": "Dataset to analyse. Its images and annotations are measured, and the report is written about it.",
"required": true,
"default": null,
"visibleWhen": null,
"options": {
"creatable": false
}
},
{
"key": "REPORT_IDS",
"label": "Findings from other nodes",
"type": "report",
"kind": "dataset_intelligence_findings_v1",
"description": "Reports from other analysis nodes to fold into the findings list. Reports that carry no findings are skipped.",
"required": false,
"default": null,
"visibleWhen": null,
"options": {
"minItems": 0,
"ref": "DATASET"
}
},
{
"key": "ANTHROPIC_SECRET",
"label": "Anthropic credentials",
"type": "secret",
"description": "Your Anthropic API key, stored as a secret. It writes the report text - only the statistics measured here and the findings of the connected reports are sent, never your images.",
"required": true,
"default": null,
"visibleWhen": null,
"options": {
"types": [
"anthropic"
]
}
},
{
"key": "LLM_MODEL",
"label": "Model",
"type": "select",
"description": "Which model writes the report. A smaller one costs less and is usually enough.",
"required": false,
"default": "claude-opus-5",
"visibleWhen": null,
"options": {
"options": [
{
"value": "claude-opus-5",
"label": "Claude Opus 5"
},
{
"value": "claude-sonnet-5",
"label": "Claude Sonnet 5"
},
{
"value": "claude-haiku-4-5",
"label": "Claude Haiku 4.5"
}
]
}
}
],
"outputs": [
{
"key": "REPORT_ID",
"label": "Report",
"type": "report",
"description": "Asset ID containing the dataset insights report.",
"artifact": true,
"badge": false,
"badgeOpens": null,
"hidden": false
},
{
"key": "HEADLINE",
"label": "Headline",
"type": "string",
"description": "Number of findings in this report, shown as a badge.",
"artifact": false,
"badge": true,
"badgeOpens": null,
"hidden": false
}
],
"widgets": {
"widget": {
"id": "report-preview",
"settings": {
"reportAsset": {
"type": "variable",
"value": "self.outputs.REPORT_ID"
},
"name": {
"type": "input",
"value": "Open insights"
}
}
}
}
}