Skip to content

Selected Smart

AUTO picks the best-fit model per intent — but only from a pool you choose.

Selected Smart is a routing policy with policy_type: "auto". From the model pool in its entries, it uses the same intent classification and score table as Benchmark Smartto pick one best-fit model. You keep the “only models I approve” control while still getting automatic selection.

create an auto policy
curl https://apirouter.pleum.ai/v1/routing-policies \
  -H "Authorization: Bearer plm_..." \
  -H "Content-Type: application/json" \
  -d '{
    "slug": "my-auto-pool",
    "display_name": "My Auto Pool",
    "policy_type": "auto",
    "entries": [
      {"model": "gpt-5.3-codex"},
      {"model": "claude-sonnet-4-6"},
      {"model": "gemini-2.5-pro"}
    ]
  }'

How it works#

On each request the intent is classified and the highest-scoring model inside the pool is moved to the front. The rest keep their original entry order and serve as fallbacks on failure. If the score table has none of your pool's models, the user-defined entry order is respected as-is.

The pool is the policy's entries array (1–10 models). Virtual models (benchmark_smart, perfect, …) are not allowed as entries — they must be real models.

If the front-runner fails (disabled, upstream error), it moves to the next model in the pool. Total attempts are hard-capped (default 6) to prevent cost runaway.

Evolution path#

Today it's benchmark-score based. As traffic statistics accumulate, it evolves to statistics + benchmark — automatically, inside the same auto type. You don't need to recreate your pool.

For a global AUTO over the whole catalog, call the Benchmark Smartvirtual model directly. If you just want plain sequential or weighted fallback without a pool-scoped pick, use the policy's fallback / weighted types.

call your auto pool
curl https://apirouter.pleum.ai/v1/chat/completions \
  -H "Authorization: Bearer plm_..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "policy/my-auto-pool",
    "messages": [
      {"role": "user", "content": "Write a Python async retry decorator."}
    ]
  }'