n8n-io/n8n · error · Error

No examples matched filters (${filterSummary}) in dataset "$

Error message

No examples matched filters (${filterSummary}) in dataset "${datasetName}" (scanned ${scanned})

What it means

After loading a local dataset and applying filters (by `notionId`, `technique`, `doSearch`, `dontSearch`), the harness found zero matching examples even though the dataset itself is non-empty. The message reports the active filter summary and how many examples were scanned, so the user can tell whether the filter is too narrow or simply wrong.

Source

Thrown at packages/@n8n/ai-workflow-builder.ee/evaluations/harness/runner.ts:390

	for await (const example of lsClient.listExamples(listArgs)) {
		scanned++;
		if (filters && !exampleMatchesFilters(example, filters)) continue;
		matches.push(example);
		if (maxExamples && matches.length >= maxExamples) break;
	}

	if (filters && matches.length === 0) {
		const filterSummary = [
			filters.notionId ? `id:${filters.notionId}` : undefined,
			filters.technique ? `technique:${filters.technique}` : undefined,
			filters.doSearch ? `do:${filters.doSearch}` : undefined,
			filters.dontSearch ? `dont:${filters.dontSearch}` : undefined,
		]
			.filter((v): v is string => v !== undefined)
			.join(', ');

		throw new Error(
			`No examples matched filters (${filterSummary}) in dataset "${datasetName}" (scanned ${scanned})`,
		);
	}

	if (!filters && maxExamples && matches.length === 0) {
		throw new Error(`No examples found in dataset "${datasetName}"`);
	}

	return matches;
}

async function resolveLangsmithData(params: {
	dataset: string;
	langsmithOptions: LangsmithRunConfig['langsmithOptions'];
	lsClient: {
		readDataset: (args: { datasetName: string }) => Promise<{ id: string }>;
		listExamples: (args: { datasetId: string; limit?: number }) => AsyncIterable<Example>;
	};

View on GitHub (pinned to 5ac6606e81)

Solutions

  1. Relax the filter: drop the most restrictive clause and re-run to find which filter is excluding everything.
  2. Verify the exact stored values (case, punctuation) in the dataset and align your filter flags to them.
  3. Run once with no filters to confirm the dataset is non-empty and to see the available technique/id values.

Example fix

// before
run --dataset mine --filter-technique chains --filter-do-search 'slack'
// after (no examples tagged 'chains'; drop it)
run --dataset mine --filter-do-search 'slack'
Defensive patterns

Strategy: validation

Validate before calling

// before running, confirm the filter will match at least one example
function previewFilterMatch(dataset: Example[], filters: Filters): number {
  return dataset.filter((e) => matchesFilters(e, filters)).length;
}
const count = previewFilterMatch(localDataset, filters);
if (count === 0) throw new Error(`filter matches 0 of ${localDataset.length} examples; relax filters`);

Prevention

When it happens

Trigger: Calling `resolveAndEnrichLangsmithData` (or the local-dataset equivalent) with a filter combination that no example satisfies — e.g. `--filter-technique chains` when no example is tagged `chains`, or a `--do-search` substring that matches nothing. `matches.length === 0` with `filters` set.

Common situations: Filter values copied from another dataset; case/whitespace mismatch (the comparison is exact substring on stored fields); a technique/id renamed in the dataset; combining multiple filters so nothing passes all of them.

Related errors


AI-assisted analysis of n8n-io/n8n@5ac6606e81 (2026-08-12). Data as JSON: /api/errors/13a7a55134aa019a. Report an issue: GitHub.