ModelSpec · model decision prototype
Fictional sample data
{{ snapshot }}
Model decision engine

Which AI model fits your task, under your constraints, and why.

Describe the task or set conditions. ModelSpec filters {{ stats.models }} models across {{ stats.offerings }} provider offerings, ranks what is left on evidence, and shows the source of every number. Independent measurements sit next to lab claims.

A small classifier turns this into conditions you can see and edit. There is no chat.
Or start from a template
Or and add conditions one at a time.
Tokens per task
in out
Rank by (weights sum to 1)
Reading your task…
Read from your task: “{{ t.word }}” → {{ t.note }}
Edit condition{{ edit.title }}
{{ edit.note }}
Narrowing, in the order you set conditions{{ funnelSummary }}
  1. {{ f.n }} {{ f.label }} {{ f.delta }}
Next questions, most narrowing first
{{ q.q }}
No further question would narrow the field.
Couldn't load snapshot {{ snapshot }}.
The catalogue service didn't respond in 8 s. Your spec is kept in the link, so nothing is lost. Results below are hidden rather than shown stale.
Trade-off canvas
Qualifies · independent Qualifies · lab-reported only May qualify Excluded Interval
{{ t.label }}
{{ xh.label }}
{{ yh.label }}
{{ hover.name }} {{ hover.sub }} {{ hover.y }} {{ hover.x }} {{ hover.status }}
{{ emptyTitle }} {{ emptyBody }}
{{ n.name }} · {{ n.why }}
{{ t.label }}
↑ {{ yLabel }}{{ xLabel }} →
{{ stripTitle }}
{{ s.text }}
Not plotted, value unknown on this axis: {{ unplotted }}
Shortlist across trade-offs{{ shortSummary }}
May qualify · {{ mayCount }}Passes everything we know
None. Every remaining model is known on every condition.
{{ tableTitle }}
{{ r.rank }} {{ r.name }} · {{ r.lab }} {{ r.via }} {{ r.y }} {{ r.ci }} {{ r.provMark }} {{ r.cost }} {{ r.pin }} {{ r.pout }} {{ r.ttft }} {{ r.tps }} {{ r.ctx }} {{ r.weights }} {{ r.status }} {{ r.reason }}
Eliminations by condition
{{ g.label }} · {{ g.n }}
{{ g.names }}

{{ d.name }}

{{ d.sub }}
{{ b.text }}
{{ d.status }}{{ d.statusWhy }}
Provisional. {{ d.provText }}
Retired, in the live archive. {{ d.retText }}
Evidence too thin to separate these. {{ d.insepText }}
What each weight contributes
{{ c.label }}{{ c.value }}
{{ c.note }}
Outlined track = the weight you set. Filled = how much of it this model earns against the others that qualify. Conditions never add to this; they only filter.
Tipping point {{ tip.text }}
$ per task weight 0{{ tip.cur }}1
Evidence
{{ e.b }} {{ e.v }} {{ e.ci }} {{ e.cond }}
Facts
{{ f.k }}{{ f.v }}
What the lab didn't report {{ d.missing }}
Against your conditions · {{ d.offName }}
{{ k.icon }}{{ k.label }} {{ k.why }}
What each condition costs you
{{ c.label }}{{ c.pts }}
{{ c.note }}
Near misses
{{ n.name }} would qualify if you relaxed “{{ n.cond }}”: {{ n.why }}
No model is one condition away. Why not…
{{ wn.head }}{{ l }}
Offerings · same model, different terms{{ d.derivation }}
ProviderRegionsInput $/1MOutput $/1M$ per taskFirst tokenOutput tok/sRetentionAgainst your conditions
{{ o.provider }} {{ o.used }} {{ o.regions }} {{ o.pin }}{{ o.pout }}{{ o.cost }} {{ o.ttft }}{{ o.tps }}{{ o.ret }} {{ o.status }} {{ o.why }}
Select a model on the canvas, in the shortlist or in the table to see why it lands where it does.
Loading snapshot {{ snapshot }} · {{ stats.models }} models, {{ stats.offerings }} offerings
{{ prov.title }}
{{ r.k }}{{ r.v }}
Share or act on this decision{{ snapshot }}
{{ shareIntro }}
{{ shareCode }}
Same snapshot, same answer. Agents get a structured decision back.
One email per change. No digests, no marketing.
Policy clauseResultEvidence
{{ p.clause }}{{ p.result }}{{ p.ev }}
Unknowns stay unknown in the export.