> ## Documentation Index
> Fetch the complete documentation index at: https://docs.withmethod.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Classify steps

> Pick an option, answer yes or no, or give a level, with probabilities.

A `classify` step answers one question about its inputs with a classifier model (Jev). It returns probabilities, so a later script can apply a threshold. A classify step has exactly one of three forms. The shipped `support-triage` example uses all three:

```yaml theme={null}
  team:
    name: Choose the team
    in: {subject: ticket.subject, body: ticket.body}
    do:
      kind: classify
      question: Which team should handle the main request in this support ticket?
      options:
        billing: Billing - invoices, charges, refunds, and plan changes.
        technical: Technical - errors, outages, and problems using the product.
        account: Account - sign-in, users, and access.
        unclear: Unclear - the ticket does not say enough to choose, or no listed team fits.
    out: team

  refund:
    name: Check for a refund request
    in: {body: ticket.body}
    do:
      kind: classify
      question: Does the customer ask for money back?
      answer: yes_no
    out: refund

  urgency:
    name: Score the urgency
    in: {subject: ticket.subject, body: ticket.body}
    do:
      kind: classify
      question: How urgent is this support ticket for the customer?
      levels: [low, normal, high, urgent]
    out: urgency
```

| Form | `do` | Output value |
| - | - | - |
| choice | `options: {ID: description}` (2 to 255 options) | `{choice: ID, probabilities: {ID: p}}` |
| yes/no | `answer: yes_no` | `{answer: boolean, probability: p}`, where p is the probability of yes |
| level | `levels: [NAME, ...]` (2 to 10 names, lowest first) | `{level: NAME, score: number, probabilities: {NAME: p}}`, where score is the expected level index (0 is the first level) |

`out` is one name. Later steps read its fields, for example `team.choice`, `team.probabilities.billing`, or `refund.probability`.

## Rules

* Give the step a name, a question, and at least one input through `in` or `each`. The question and the option descriptions are literal text.
* Inputs are JSON data. A file needs an earlier step that reads it.
* A classify step cannot declare `changes`.
* Add an option for unclear inputs, and decide in a script what to do with a low probability. In the example, `route` uses the team only when it is not `unclear` and its probability is at least 80%.
* Counting, math, and date comparisons belong in a script, not in a question.

## Where it runs

Classification goes through your Method account and uses the same model credit as hosted models. The run's `usage.cost_usd` includes it. With `method config model-key`, classify steps on this computer call OpenRouter with your own key. Requests are private: no training and zero data retention. See [Privacy](/guides/privacy). A request that the service briefly cannot answer gets three attempts.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.