For the complete documentation index, see llms.txt. This page is also available as Markdown.

Judges

Judges are stacks of Evaluators with their own high-level intent.

Generating a Judge

Scorable can generate a complete judge — including all its evaluators — from a plain-language description of what you want to measure.

CLI

scorable judge generate --intent "I am building a customer support chatbot. Evaluate that responses are helpful and follow our refund policy."

Attach a PDF policy document so the generated evaluators can check compliance against it:

# Upload and generate in one step
scorable judge generate \
  --intent "Evaluate responses against the attached policy." \
  --file ./policy.pdf

# Or reuse a previously uploaded file
scorable judge generate \
  --intent "Evaluate responses against the attached policy." \
  --file-id <file_uuid>

Python SDK

from scorable import Scorable

client = Scorable(api_key="$MY_API_KEY")

# Upload a policy document first
file_id = client.files.upload("./policy.pdf")

# Generate a judge that uses it
result = client.judges.generate(
    intent="Evaluate responses against the attached policy.",
    file_id=str(file_id),
)
print(result.judge_id)

If the intent is ambiguous the API returns missing_context_from_system_goal — a list of fields that would improve the judge. Re-run with --extra-contexts (CLI) or extra_contexts (SDK) to fill them in.

You can see the overview of your Judges in the app:

Execute via OpenAI-compatible Endpoint

Bring your own key. The OpenAI-compatible endpoints (/openai/chat/completions, /openai/responses, /refine/openai/chat/completions, /refine/openai/responses) proxy the model call through Scorable, so they require a customer-managed provider key. Connect a key for the requested model's provider in Organization Settings → Providers; otherwise the request is rejected with 403 byok_required. The non-proxy execution endpoints below are unaffected.

cURL

Python

Execution Metadata

Similar to evaluators, you can pass metadata to judge executions to improve traceability and evaluation context.

  • user_id: Identify which end-user triggered the evaluation.

  • session_id: Group evaluations by conversation session.

  • system_prompt: Provide the original system context to the judge.

  • tags: Free form tags for more powerful filtering and more actionable insights.

Example (Python SDK):

File Inputs

Judges support the same file_ids parameter as evaluators. Upload a file first via POST /v1/files/, then pass the returned ID(s) to the judge execution. PDFs are extracted to text context; images are passed as visual inputs to vision-capable models.

See Evaluators — File Inputs for the full upload flow and examples.

Multi-Turn Conversations

Judges can also evaluate multi-turn conversations to assess agent behavior across an entire interaction. You can provide message history containing the full interaction, including tool calls.

Results are attributed to the turn that caused them rather than to the conversation as a whole — see Evaluators — Results are per turn.

Example (Python SDK):

Last updated