Best LLMs for Short Post Batch Relevance Scoring
Scores a batch of short-form posts against a supplied topic, query, or scoring context, returning an item-level relevance score for each post. It is intended for compact posts such as those from X, Bluesky, Threads, or Mastodon rather than the broader retrieved content handled by
Run this task on Fronset — request an invitation
Models
Frontier on this task: MiniMax M3 at 7.29 / 10. Quality bar at 90%: 6.56.
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 |
|---|---|---|---|---|
| MiniMax M3 | 7.29 / 10 | 7.18 | $4.16 | best value |
| Xiaomi MiMo V2.6 Pro | 6.79 / 10 | 6.39 | $14.63 | 3.5x more expensive |
| Gemini 3.8 Flash | 6.81 / 10 | 6.32 | $35.72 | 8.6x more expensive |
| Claude Haiku 5.5 | 6.77 / 10 | 6.43 | $35.81 | 8.6x more expensive |
| GLM-5.3 Flash | 6.81 / 10 | 6.48 | $40.76 | 9.8x more expensive |
| GPT-6 Sol | 6.91 / 10 | 6.48 | $75.30 | 18x more expensive |
| Meta Muse Spark 1.3 | 6.95 / 10 | 6.54 | $121.32 | 29x more expensive |
| Moonshot Kimi K3 | 6.86 / 10 | 6.39 | $263.95 | 63x more expensive |
| Claude Opus 5.5 | 6.61 / 10 | 6.21 | $277.27 | 67x more expensive |
| Qwen 3.7 Plus | 5.83 / 10 | 5.33 | $15.84 | 3.8x more expensive |
| Qwen 3.8 Flash | 5.44 / 10 | 4.97 | $64.86 | 16x more expensive |
| GLM-5.3 | 6.42 / 10 | 6.02 | $404.61 | 97x more expensive |
| Qwen 3.8 Max | 6.01 / 10 | 5.55 | $270.72 | 65x more expensive |
| Claude Sonnet 5.5 | 6.22 / 10 | 5.85 | $137.95 | 33x more expensive |
Cost breakdown
| Model | Quality | Confidence | Cost / 1k runs | Overpay | Mode |
|---|---|---|---|---|---|
| MiniMax M3 ★ best OpenRouter | 7.29 / 10 CI [7.18, 7.41] | RANKED | $4.16 | best value | batch |
| Xiaomi MiMo V2.6 Pro Xiaomi MiMo | 6.79 / 10 CI [6.39, 7.20] | MEDIUM | $14.63 | 3.5x | batch |
| Gemini 3.8 Flash Gemini | 6.81 / 10 CI [6.32, 7.31] | MEDIUM | $35.72 | 8.6x | batch |
| Claude Haiku 5.5 Anthropic | 6.77 / 10 CI [6.43, 7.10] | MEDIUM | $35.81 | 8.6x | batch |
| GLM-5.3 Flash Z.AI | 6.81 / 10 CI [6.48, 7.13] | MEDIUM | $40.76 | 9.8x | batch |
| GPT-6 Sol OpenAI | 6.91 / 10 CI [6.48, 7.33] | MEDIUM | $75.30 | 18x | batch |
| Meta Muse Spark 1.3 OpenRouter | 6.95 / 10 CI [6.54, 7.35] | MEDIUM | $121.32 | 29x | batch |
| Moonshot Kimi K3 Moonshot AI | 6.86 / 10 CI [6.39, 7.33] | MEDIUM | $263.95 | 63x | batch |
| Claude Opus 5.5 Anthropic | 6.61 / 10 CI [6.21, 7.01] | MEDIUM | $277.27 | 67x | 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: 88906 input tokens → 1532 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 the correctness and direction of each delivered post-level relevance score, meaningful discrimination between posts with different topical fit, calibration and internal consistency across the batch, independence between posts, and resistance to keyword, popularity, author, and position bias. Penalize all-identical or otherwise degenerate scores when the posts visibly differ. Treat output completeness, identifier validity, score bounds, and schema conformance as deterministic validation rather than semantic judge criteria.
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": {
"RelevanceScoreItem": {
"description": "Generic relevance score item for any source/target pair.",
"properties": {
"id": {
"description": "ID of the item being scored",
"title": "Id",
"type": "string"
},
"relevance_score": {
"description": "Relevance score 0.0-1.0",
"maximum": 1,
"minimum": 0,
"title": "Relevance Score",
"type": "number"
}
},
"required": [
"id",
"relevance_score"
],
"title": "RelevanceScoreItem",
"type": "object"
}
},
"description": "Generic LLM output for relevance scoring.",
"properties": {
"items": {
"items": {
"$ref": "#/$defs/RelevanceScoreItem"
},
"title": "Items",
"type": "array"
}
},
"required": [
"items"
],
"title": "RelevanceScoreResult",
"type": "object"
}Prompt templates
The published template for this task.
default ·
LLMB_SHORT_POST_BATCH_RELEVANCE_SCORING_SYSTEM +
LLMB_SHORT_POST_BATCH_RELEVANCE_SCORING_USER
(0 calls in window)
System prompt
Score every short-form post in the supplied batch for substantive relevance to the supplied scoring context. Interpret compressed language, abbreviations, hashtags, mentions, link text, and reply or thread fragments using only the context present in the input. Do not penalize a post merely for brevity, and do not reward keyword overlap without semantic relevance. Score each post independently; ignore popularity, engagement metrics, author identity, and batch position unless the scoring context explicitly makes one relevant. Do not let one post influence the score of another. Preserve each post identifier exactly, return one result for every input post, and apply the relevance scale consistently across the batch. 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 — scoring_context: {scoring_context}; posts: {posts}.
Relevance scale — score every item on exactly these levels, and report relevance_score as the chosen level divided by the highest level:
{relevance_levels}
Use only these inputs to complete the task defined by the system prompt.