Best LLMs for Thematic Topic Discovery
Discovers a coherent set of themes from a batch of content summaries or factual claims and assigns source items to those themes. Illustrative uses include discovering themes across customer feedback, sales notes, software incidents, market evidence, research interviews, investiga
Run this task on Fronset — request an invitation
Models
Frontier on this task: NVIDIA Nemotron-3 Ultra 550B at 8.19 / 10. Quality bar at 90%: 7.37.
point-estimate floor (CI low) · upper CI (less certain) · Bars sorted by blended cost; best-value model first. Greyed rows are MEDIUM+ models whose point estimate does not clear the bar.
| Model | Quality score | CI low | Cost / 1k runs | vs best value |
|---|---|---|---|---|
| GLM-5.3 Flash | 8.13 / 10 | 7.82 | $42.34 | best value |
| NVIDIA Nemotron-3 Ultra 550B | 8.19 / 10 | 7.81 | $47.76 | 1.1x more expensive |
| Tencent Hy4 Preview | 7.87 / 10 | 7.52 | $89.82 | 2.1x more expensive |
| Thinking Machines Inkling | 7.79 / 10 | 7.35 | $98.77 | 2.3x more expensive |
| Meta Muse Spark 1.3 | 7.40 / 10 | 7.03 | $112.03 | 2.6x more expensive |
| Moonshot Kimi K3 | 7.65 / 10 | 7.30 | $269.78 | 6.4x more expensive |
| GLM-5.3 | 7.88 / 10 | 7.63 | $453.88 | 11x more expensive |
| Qwen 3.8 Max | 6.95 / 10 | 6.51 | $268.00 | 6.3x more expensive |
| Qwen 3.8 Flash | 6.61 / 10 | 6.27 | $39.43 | 7% cheaper |
| Gemini 3.8 Flash | 6.89 / 10 | 6.42 | $30.53 | 28% cheaper |
| Grok 4.7 | 7.03 / 10 | 6.84 | $174.69 | 4.1x more expensive |
| DeepSeek V4.1 Flash | 7.06 / 10 | 6.86 | $8.64 | 80% cheaper |
| Thinking Machines Inkling Small | 6.60 / 10 | 6.16 | $54.62 | 1.3x more expensive |
| Xiaomi MiMo V2.6 Pro | 7.18 / 10 | 6.89 | $9.70 | 77% cheaper |
| GPT-6 Sol | 6.45 / 10 | 6.09 | $66.32 | 1.6x more expensive |
| NVIDIA Nemotron-3 Super 120B | 6.76 / 10 | 6.32 | $12.26 | 71% cheaper |
| GPT-6 Luna | 6.22 / 10 | 5.81 | $3.34 | 92% cheaper |
| Claude Haiku 5.5 | 6.66 / 10 | 6.39 | $5.67 | 87% cheaper |
| Claude Opus 5.5 | 6.74 / 10 | 6.48 | $204.15 | 4.8x more expensive |
| Claude Sonnet 5.5 | 6.97 / 10 | 6.74 | $104.19 | 2.5x more expensive |
Cost breakdown
| Model | Quality | Confidence | Cost / 1k runs | Overpay | Mode |
|---|---|---|---|---|---|
| GLM-5.3 Flash ★ Z.AI | 8.13 / 10 CI [7.82, 8.44] | MEDIUM | $42.34 | best value | batch |
| NVIDIA Nemotron-3 Ultra 550B best OpenRouter | 8.19 / 10 CI [7.81, 8.56] | MEDIUM | $47.76 | 1.1x | batch |
| Tencent Hy4 Preview OpenRouter | 7.87 / 10 CI [7.52, 8.21] | MEDIUM | $89.82 | 2.1x | batch |
| Thinking Machines Inkling OpenRouter | 7.79 / 10 CI [7.35, 8.23] | MEDIUM | $98.77 | 2.3x | batch |
| Meta Muse Spark 1.3 OpenRouter | 7.40 / 10 CI [7.03, 7.78] | MEDIUM | $112.03 | 2.6x | batch |
| Moonshot Kimi K3 Moonshot AI | 7.65 / 10 CI [7.30, 8.01] | MEDIUM | $269.78 | 6.4x | batch |
| GLM-5.3 Z.AI | 7.88 / 10 CI [7.63, 8.13] | HIGH | $453.88 | 11x | 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: 58649 input tokens → 4988 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 thematic coherence, between-topic distinctness, corpus coverage, useful granularity, identifier preservation, stability across input modes, and absence of unsupported topic assertions.
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": {
"ContentTopicAssignmentOutput": {
"description": "Assignment of a single content item to a topic within a batch.",
"properties": {
"content_id": {
"description": "The ID of the retrieved content item being assigned",
"title": "Content Id",
"type": "integer"
},
"topic_id": {
"description": "The ID of the topic this content is assigned to (references TopicDefinitionOutput.topic_id)",
"title": "Topic Id",
"type": "integer"
}
},
"required": [
"content_id",
"topic_id"
],
"title": "ContentTopicAssignmentOutput",
"type": "object"
},
"TopicDefinitionOutput": {
"description": "Definition of a single topic discovered in a batch.",
"properties": {
"topic_description": {
"default": "",
"description": "Detailed description of what this topic covers and why these content items belong together",
"title": "Topic Description",
"type": "string"
},
"topic_id": {
"description": "Unique ID for this topic within the batch (starting from 1)",
"title": "Topic Id",
"type": "integer"
},
"topic_name": {
"description": "Concise, descriptive name for the topic (e.g., 'Market Analysis', 'Regulatory Changes')",
"title": "Topic Name",
"type": "string"
}
},
"required": [
"topic_id",
"topic_name"
],
"title": "TopicDefinitionOutput",
"type": "object"
}
},
"description": "Output from Phase 1 batch topic identification.\n\nEach batch of content items produces a list of topics and assignments.\nTopics are local to the batch and will be merged in Phase 2.",
"properties": {
"assignments": {
"description": "Mapping of each content_id to its assigned topic_id",
"items": {
"$ref": "#/$defs/ContentTopicAssignmentOutput"
},
"title": "Assignments",
"type": "array"
},
"topics": {
"description": "List of topics discovered in this batch",
"items": {
"$ref": "#/$defs/TopicDefinitionOutput"
},
"title": "Topics",
"type": "array"
}
},
"title": "BatchTopicResult",
"type": "object"
}Prompt templates
The published template for this task.
default ·
LLMB_THEMATIC_TOPIC_DISCOVERY_SYSTEM +
LLMB_THEMATIC_TOPIC_DISCOVERY_USER
(0 calls in window)
System prompt
Identify recurring substantive themes that help organize the supplied corpus. Cluster by shared meaning, mechanism, entity relationship, or analytical question rather than isolated keywords. Make topics distinct, use the caller’s analysis context to set useful granularity, preserve source identifiers, permit noise or unassigned items where the schema allows it, and do not invent facts in topic descriptions. 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 — analysis_template_description: {analysis_template_description}; content_summaries: {content_summaries}. Use only these inputs to complete the task defined by the system prompt.