Cost mode:

Category: Relevance, Classification & Matching · Rail: absolute · Typical I/O: 18319→5860 tokens

Models

Frontier on this task: GPT-5.6 Sol at 8.63 / 10. Quality bar at 90%: 7.76.

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 clears the bar but whose CI low does not.

ModelQuality scoreCI lowCost / 1k runsvs best value
DeepSeek V4 Flash8.21 / 108.06$4.27best value
DeepSeek V4 Pro8.14 / 107.96$10.452.4x more expensive
GPT-5.6 Luna8.00 / 107.57$11.462.7x more expensive
Qwen 3.7 Plus8.21 / 107.97$18.344.3x more expensive
Qwen 3.6 Plus7.81 / 107.55$19.544.6x more expensive
Gemini 3.1 Pro Preview7.98 / 107.79$26.376.2x more expensive
Kimi K2.67.97 / 107.68$42.7810x more expensive
GPT-5.6 Terra8.46 / 108.22$44.8911x more expensive
Gemini 3.5 Flash8.51 / 108.34$53.1312x more expensive
Grok 4.58.44 / 108.28$58.0814x more expensive
Meta Muse Spark 1.18.28 / 108.00$60.0414x more expensive
GPT-5.6 Sol8.63 / 108.37$67.2216x more expensive
GPT-5.58.11 / 107.79$87.7921x more expensive
MiniMax M36.59 / 106.40$8.211.9x more expensive
GPT-5.4 Mini5.35 / 104.87$9.792.3x more expensive
Gemini 3.1 Flash Lite6.78 / 106.43$4.361x more expensive
Claude Haiku 4.55.35 / 104.88$23.435.5x more expensive
Claude Sonnet 4.67.62 / 107.27$60.8214x more expensive
Tencent Hy36.71 / 106.25$8.352x more expensive

Cost breakdown

ModelQualityConfidenceCost / 1k runsOverpayMode
DeepSeek V4 Flash DeepSeek8.21 / 10 CI [8.06, 8.36]RANKED$4.27best valuebatch
DeepSeek V4 Pro DeepSeek8.14 / 10 CI [7.96, 8.32]RANKED$10.452.4xbatch
GPT-5.6 Luna OpenAI8.00 / 10 CI [7.57, 8.44]MEDIUM$11.462.7xbatch
Qwen 3.7 Plus Alibaba Cloud (DashScope)8.21 / 10 CI [7.97, 8.45]HIGH$18.344.3xbatch
Qwen 3.6 Plus Alibaba Cloud (DashScope)7.81 / 10 CI [7.55, 8.08]HIGH$19.544.6xbatch
Gemini 3.1 Pro Preview Gemini7.98 / 10 CI [7.79, 8.18]RANKED$26.376.2xbatch
Kimi K2.6 Moonshot AI7.97 / 10 CI [7.68, 8.26]HIGH$42.7810xbatch
GPT-5.6 Terra OpenAI8.46 / 10 CI [8.22, 8.69]HIGH$44.8911xbatch
Gemini 3.5 Flash Gemini8.51 / 10 CI [8.34, 8.68]RANKED$53.1312xbatch
Grok 4.5 xAI8.44 / 10 CI [8.28, 8.60]RANKED$58.0814xbatch
Meta Muse Spark 1.1 Meta8.28 / 10 CI [8.00, 8.57]HIGH$60.0414xbatch
GPT-5.6 Sol best OpenAI8.63 / 10 CI [8.37, 8.89]HIGH$67.2216xbatch
GPT-5.5 OpenAI8.11 / 10 CI [7.79, 8.43]MEDIUM$87.7921xbatch

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: 18319 input tokens → 5860 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.

Prompt templates

This is a pooled capability — 2 prompt families share it. The pair shown first is the most frequently used in production.

TOPIC_CLIENT_MATCHING_SYSTEM_PROMPT + TOPIC_CLIENT_MATCHING_USER_PROMPT (1667 calls in window)

System prompt

You are a topic grouping and matching specialist. Your task is to assign workflow topics (individual article topics) to broader client topic categories — either existing ones or new ones you define.

**Goal:**
Each workflow topic represents a specific article (e.g., "Q3 Revenue Beat", "Revenue Acceleration Outlook"). Client topics are broader persistent categories (e.g., "Revenue Trends") that group related articles together. Multiple workflow topics can — and should — share the same client topic when they cover similar themes.

**Matching to Existing Client Topics:**
- If an existing client topic covers the same broad theme as a workflow topic, assign it there
- Semantic similarity is what matters, not identical names
- "Revenue Growth Outlook" should match existing "Revenue Trends"
- "FDA Phase 3 Results" should match existing "Regulatory & Clinical"
- Be conservative: only match when the workflow topic genuinely belongs to that category

**Creating New Groups:**
- When no existing client topic fits, create a new group with a broader category name
- New group names should be BROADER than any individual workflow topic they contain
- Example: "Q3 Revenue Beat" + "Revenue Acceleration Outlook" → new group "Revenue Trends"
- Only merge workflow topics that genuinely overlap thematically — distinct topics should stay separate
- A new group can contain just one workflow topic if it doesn't relate to anything else
- Group descriptions MUST be under 500 characters (this is a hard technical limit)

**Output Rules:**
- Return one assignment per workflow topic (workflow_topic_id)
- Each assignment must have EXACTLY ONE of: existing_client_topic_id OR new_group_id (not both, not neither)
- Multiple workflow topics CAN share the same existing_client_topic_id or new_group_id
- Every new_group_id used in assignments must have a corresponding entry in new_groups
- new_groups list can be empty if all workflow topics match existing client topics

Output your response in the specified JSON format.

## Required Output Format
Your response MUST be a single, valid JSON object conforming to this schema:
```json
{schema_json_string}
```

User prompt

**Workflow Topics to Assign:**
{workflow_topics_json}

**Existing Client Topics:**
{existing_client_topics_json}

For each workflow topic, assign it to an existing client topic (by ID) or to a new broader group. Group similar workflow topics together under one category.

**JSON Output:** The required JSON output schema is provided in the system prompt.
JSON_REPAIR_SYSTEM + JSON_REPAIR_USER (1 calls in window)

System prompt

You are a JSON repair tool. The user gives you malformed or partial model output and a JSON Schema. Return ONLY a single valid JSON object that satisfies the schema, salvaging as much real content from the input as possible. Do not invent data for fields the input doesn't support — use the schema's allowed empty/null values. Output the JSON object only: no prose, no markdown, no code fences.

User prompt

JSON Schema:
{schema_json}

Malformed output to repair:
{raw_text}

Return only the corrected JSON object.