the dial.

Every model is a point on a graph: how good it is, and what it costs. Only the left edge becomes a dial — a model earns a level when nothing else is both better and cheaper.

There is no database and no login. The list lives in models-gdpval.json in a public repo. Edit it, commit, and every install picks the change up within the hour. No release.

the dial.

Pick who is signed in. Losing a provider is a different dial, not a filtered one: a model another vendor's was shadowing comes straight back.

levelelo$/taskprovidermodeleffort

Nothing plotted for those providers yet.

everything on the graph.

0 models. A model can sit here holding no level, because something else is better and cheaper — that is the graph doing its job, not a mistake.

levelprovidermodeleffortelo$/task

add one.

This writes nothing. It builds the entry so the three things that cannot be guessed are right — which CLI runs it, the exact model string, and an effort that CLI actually accepts — then you paste it into the file and commit.

Which CLI runs it.
Everything Claude Code accepts. Effort is a property of the provider, not the model.
Passed to the CLI verbatim. 0 names suggested from litellm for Claude Code — but type freely, because a CLI-only slug like gpt-5.6-sol or gemini-3.7-flash-high is in no catalogue.
From GDPval-AA v2. Leave blank and the model is recorded but stays off the dial.
Cost per GDPval task, from the same leaderboard.
{ "provider": "claude", "model": "…", "effort": "" }