Read this before creating, renaming, or syncing any model file.
The filename (without .md) is the canonical slug used in three places:
benchgen.com/models/{org-slug}/{model-slug}model: fieldleaderboard/{benchmark}--{model-slug}.mdAll three must match exactly. A mismatch creates broken links on every leaderboard entry for that model.
The platform derives the URL slug from api_name via:
api_name → lowercase → remove () → replace non-alphanumeric with hyphens → trim hyphensThe filename must equal this derived slug. Verify with:
# Quick check for a single model
echo "GPT-4o (May 2024)" | tr '[:upper:]' '[:lower:]' | sed 's/[()]//g' | sed 's/[^a-z0-9]/-/g' | sed 's/-\{2,\}/-/g' | sed 's/^-\|-$//g'Example: api_name: Llama 3.1 70B Instruct → llama-3-1-70b-instruct → file must be llama-3-1-70b-instruct.md
-instructIf the hf_id or official name ends in -Instruct or -Instructed, the filename slug must include -instruct.
Check the HuggingFace model card or official release post — not just the short marketing name.
| ❌ Wrong | ✅ Correct |
|---|---|
llama-3-1-70b.md | llama-3-1-70b-instruct.md |
qwen2-5-7b.md | qwen2-5-7b-instruct.md |
phi-3-5-mini.md | phi-3-5-mini-instruct.md |
mistral-small-3-24b.md | mistral-small-3-24b-instruct.md |
If the official name includes an active-params suffix like (550B A55B) or A22B, include it in the slug.
| ❌ Wrong | ✅ Correct |
|---|---|
nemotron-3-ultra-550b.md | nemotron-3-ultra-550b-a55b.md |
nemotron-3-super-120b.md | nemotron-3-super-120b-a12b.md |
qwen3-235b.md | qwen3-235b-a22b.md |
Exception: Always verify the live platform URL before adding any suffix. Some models drop architecture suffixes in their actual platform slug. Open https://benchgen.com/models/{org}/{slug} in a browser to confirm.
| Org | ✅ Use | ❌ Don't use |
|---|---|---|
| Alibaba / Qwen Team | alibaba | alibaba-cloud-qwen-team, Alibaba Cloud |
| Meta | meta | meta-ai, MetaAI |
google | google-deepmind, GoogleAI | |
| OpenAI | openai | open-ai |
| Anthropic | anthropic | |
| Mistral | mistral | mistral-ai |
| Microsoft | microsoft | |
| NVIDIA | nvidia | nvidia-ai |
| DeepSeek | deepseek | deep-seek |
| Moonshot | moonshot | moonshot-ai |
Run this checklist every time:
ls models/{slug}.md — must not existhf_id: if it ends in -Instruct or -Instructed, the slug must include -instruct(A22B), include it in the slugapi_name so the derivation rule round-trips to exactly the intended slughttps://benchgen.com/models/{org-slug}/{model-slug} — if the page exists, your slug must match it exactlyentity_id written by the sync script before leaderboard entries can include model_entity_id.BENCHGEN_USER_TOKEN JWT expires in ~24 hours. If you get 401 Unautorizate, fetch a fresh token from DevTools → Network → any knowledge-api request → Request Headers → authorization value.entity_id by hand — the sync script writes it automatically.Run before any batch create or rename operation:
node --input-type=module << 'EOF'
import { readFileSync, readdirSync } from "fs";
for (const f of readdirSync("models").filter(f => f.endsWith(".md") && f !== "_TEMPLATE.md")) {
const slug = f.replace(".md", "");
const src = readFileSync(`models/${f}`, "utf8");
const apiName = (src.match(/^api_name:\s*(.+)$/m)?.[1] || "").trim().replace(/^["']|["']$/g, "");
if (!apiName) continue;
const derived = apiName.toLowerCase().replace(/[()]/g, "").replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
if (derived !== slug) console.log(`MISMATCH: file=${slug} api_name="${apiName}" derived=${derived}`);
}
EOFSee benchmarks/configs/BENCHMARK_WORKFLOW.md for the full end-to-end workflow.
This model isn’t on any benchmark leaderboard yet.