Best LLMs for Capability Category Matching
Assigns a task or capability definition to a supplied category taxonomy or proposes a new category when the taxonomy has no adequate semantic match. Illustrative uses include categorizing software capabilities, AI use cases, service-desk automations, professional-service offering
Run this task on Fronset — request an invitation
Models
Frontier on this task: DeepSeek V4.1 Flash at 8.87 / 10. Quality bar at 90%: 7.98.
point-estimate floor (CI low) · upper CI (less certain) · Bars sorted by blended cost; best-value model first.
| Model | Quality score | CI low | Cost / 1k runs | vs best value |
|---|---|---|---|---|
| Xiaomi MiMo V2.6 Flash | 8.76 / 10 | 8.34 | $0.08 | best value |
| Claude Haiku 5.5 | 8.56 / 10 | 8.10 | $0.20 | 2.4x more expensive |
| Xiaomi MiMo V2.6 Pro | 8.83 / 10 | 8.46 | $0.24 | 2.9x more expensive |
| DeepSeek V4.1 Flash | 8.87 / 10 | 8.59 | $0.43 | 5.2x more expensive |
| Claude Sonnet 5.5 | 8.84 / 10 | 8.53 | $2.87 | 35x more expensive |
| Claude Opus 5.5 | 8.81 / 10 | 8.49 | $6.16 | 75x more expensive |
Cost breakdown
| Model | Quality | Confidence | Cost / 1k runs | Overpay | Mode |
|---|---|---|---|---|---|
| Xiaomi MiMo V2.6 Flash ★ Xiaomi MiMo | 8.76 / 10 CI [8.34, 9.18] | MEDIUM | $0.08 | best value | batch |
| Claude Haiku 5.5 Anthropic | 8.56 / 10 CI [8.10, 9.02] | MEDIUM | $0.20 | 2.4x | batch |
| Xiaomi MiMo V2.6 Pro Xiaomi MiMo | 8.83 / 10 CI [8.46, 9.20] | MEDIUM | $0.24 | 2.9x | batch |
| DeepSeek V4.1 Flash best DeepSeek | 8.87 / 10 CI [8.59, 9.15] | HIGH | $0.43 | 5.2x | batch |
| Claude Sonnet 5.5 Anthropic | 8.84 / 10 CI [8.53, 9.16] | MEDIUM | $2.87 | 35x | batch |
| Claude Opus 5.5 Anthropic | 8.81 / 10 CI [8.49, 9.12] | MEDIUM | $6.16 | 75x | batch |
Overpay shows how much more you pay than the best-value model that clears the quality bar (marked ★) — the best-value good-enough option. "16x" means you overpay 16× — 16× that reference for no quality benefit above the bar. Typical call shape for this task: 1720 input tokens → 301 output tokens, EMA-tracked from production traffic. Cost is the observed, all-in $ per 1,000 task runs: each model's own measured usage on this task — output verbosity, thinking/reasoning tokens, cache reads and writes, and the spend on its billed failures — priced at current list rates and adjusted by the billing overhead we actually reconcile against provider invoices. Models that answer tersely cost what they actually cost; models that think at length pay for it. Not comparable to providers' advertised $/1M list rates — this is what running the task costs, not a per-token price.
Evaluation rubric
Judge category-boundary correctness, reuse of the supplied taxonomy, resistance to caller/domain leakage, clarity of any proposed category, and absence of overlap.
Output schema
Every answer on this task is checked against this JSON Schema, whichever model wrote it. An answer that doesn't fit counts as a model failure, and the call is retried on another model.
{
"$defs": {
"NewCategoryData": {
"description": "Fields for a brand-new bench Category proposed by the LLM.",
"properties": {
"description": {
"description": "One-sentence description of the model skill this category covers, in the same style as the existing category descriptions.",
"title": "Description",
"type": "string"
},
"display_name": {
"description": "Full category name, e.g. 'Code Generation \u0026 Debugging'.",
"title": "Display Name",
"type": "string"
},
"short_name": {
"description": "Condensed name for heatmap column headers, e.g. 'Coding'.",
"title": "Short Name",
"type": "string"
}
},
"required": [
"display_name",
"short_name",
"description"
],
"title": "NewCategoryData",
"type": "object"
}
},
"description": "LLM output: assign the capability to an existing category, or create one.",
"properties": {
"action": {
"description": "Either 'assign' to use an existing category or 'create' to make a new one.",
"title": "Action",
"type": "string"
},
"category_slug": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Slug of the existing category, when action is 'assign'.",
"title": "Category Slug"
},
"new_category_data": {
"anyOf": [
{
"$ref": "#/$defs/NewCategoryData"
},
{
"type": "null"
}
],
"default": null,
"description": "New category details, when action is 'create'."
},
"reasoning": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Brief justification for the assignment or the new category.",
"title": "Reasoning"
}
},
"required": [
"action"
],
"title": "CategoryMatchingResult",
"type": "object"
}Prompt templates
The published template for this task.
default ·
LLMB_CAPABILITY_CATEGORY_MATCHING_SYSTEM +
LLMB_CAPABILITY_CATEGORY_MATCHING_USER
(672 calls in window)
System prompt
Classify the supplied task by the transformation it performs, not by its current caller, industry example, model, or output transport. Apply taxonomy_profile for category boundaries, creation policy, naming, and granularity. Prefer a suitable existing category; propose a new one only for a durable distinction. Return a proposal only and never mutate the caller’s taxonomy. Treat empty optional values as absent and return only the requested result. Your response must conform exactly to this output schema: {schema_json_string}.
User prompt
Inputs — slug: {slug}; display_name: {display_name}; existing_description: {existing_description}; prompt_dump: {prompt_dump}; categories_json: {categories_json}; taxonomy_profile: {taxonomy_profile}. Use only these inputs to complete the task defined by the system prompt.