Skip to content

Give each routine step the right model โ€‹

One routine, three steps, three different models โ€” a heavyweight for the thinking, a cheap-and-fast one for the grunt work. You pay premium prices only where they actually buy you something.

  • What you'll build โ€” A multi-step custom routine where each step runs on the model you pick: a strong model for the step that needs real reasoning, a lighter, cheaper one for the bulk step. You'll do it in the built-in YAML editor on the agent's Tasks tab, using the model field from the Routine YAML reference.
  • Who it's for โ€” Anyone running a routine often enough that per-step model choice moves the bill โ€” and anyone who wants a stronger model on the one step that keeps getting it wrong.
  • Time & plan โ€” About 15 minutes. Any plan with an agents budget. Nothing to connect โ€” this is about the routine itself. Each step bills on whatever model it runs on.

You don't have to touch YAML to get this

You can also just tell your Personal Assistant: "make a routine that researches a topic on a strong model, then summarizes it on a cheap one." It writes the same thing. This guide is the hands-on path โ€” open the editor and pin the models yourself โ€” for when you want exact control.

The idea in one table โ€‹

By default every step runs on its agent's usual model โ€” you never have to think about it. Pinning a model is an override you reach for deliberately:

Step doesโ€ฆReach forโ€ฆWhy
Hard reasoning, research, judgmentA strong model (claude-opus, gpt-5)Worth the cost where quality compounds
Bulk drafting, reformatting, summarizingA light model (gemini-flash, a mini)Fast and cheap; the heavy model is overkill here
Everything in betweenLeave it unpinnedThe agent's default is already tuned

A pinned model must be able to use tools

Routine steps call tools โ€” search, browsing, your connected data. So the model you pin must be tool-capable. General-purpose models are all fine; models aimed only at reading images or churning bulk text are rejected on Save, with the valid names listed. (Name a model by its catalog alias โ€” claude-sonnet, gpt-5, gemini-flash โ€” not a marketing name.)

Steps โ€‹

1. Open the YAML editor on an agent's Tasks tab โ€‹

Open Agents โ†’ open the agent that should own this routine (your Personal Assistant is a fine home) โ†’ its Tasks tab. Then either:

  • Start fresh: click + New routine. It seeds a starter template already homed on this agent โ€” you'll overwrite it.
  • Edit an existing custom routine: click its Edit button. (Built-in routines have no Edit button โ€” that's how you know they're read-only.)

A custom routine card with a Run button and an Edit button that opens the YAML editor

The editor is a real text editor with syntax highlighting and inline errors. It scrolls top-to-bottom: your YAML first, then the Automations panel, then Save.

The inline routine editor โ€” the spec YAML up top, Automations panel below

2. Write the routine with per-step models โ€‹

Here's a complete, valid three-step routine โ€” research on a strong model, a competitor scan on a mid model, and a cheap final summary. Paste it in and adjust:

yaml
name: topic-deep-dive
display_name: Topic deep-dive
description: Research a topic deeply, scan competitors, then write a tight summary.
archetype: personal-assistant       # home agent โ€” whose Tasks tab this lives on
model: claude-sonnet                 # default model for every stepโ€ฆ
run_message: The topic to dig into.

steps:
  - title: Research the topic
    model: claude-opus               # โ€ฆbut this step gets the heavy model
    prompt: |
      Research {input} thoroughly using web search and reading pages.
      Gather the key facts, the main players, and the open questions.
      Cite sources.

  - title: Scan competitors
    prompt: |
      Based on the research below, find how our main competitors handle
      this and where the gaps are:
      {previous}
      # no model here โ†’ falls back to the routine-level claude-sonnet

  - title: Write the summary
    model: gemini-flash              # cheap + fast for the easy last step
    prompt: |
      Summarize everything below into five tight bullets and one
      "so what for us" line:
      {previous}

Three things this shows:

  • {input} is the run message (what you type in the Run box, or the run_message default). {previous} is the previous step's output โ€” that's how each step builds on the last.
  • model works at two levels. A routine-level model sets the default for every step; a step-level model overrides it just for that step.
  • First match wins: the step's own model โ†’ else the routine's model โ†’ else the step agent's default. A routine with no model anywhere behaves exactly as it always did.

3. (Optional) Send a step to a different agent, too โ€‹

Model isn't the only per-step knob โ€” each step can run on a different agent. A step's archetype picks who runs it; omit it and the step uses the routine's home agent. Model and agent are independent, so you can, say, run a catalog step on the Sales Platform Wizard while a research step runs on the Personal Assistant:

yaml
  - title: Pull our prices
    archetype: platform-assistant    # the Sales Platform Wizard, good with your catalog
    prompt: List our current products and prices from the connected catalog.

  - title: Compare on the web
    archetype: personal-assistant    # good at web research
    model: gpt-5
    prompt: |
      Compare these against competitors online:
      {previous}

Name an agent by its slug or its display name. The commonly available ones:

SlugDisplay name
personal-assistantPersonal Assistant
platform-assistantSales Platform Wizard
bulk-text-workerBulk Text Worker
content-directorContent Director
site-builderSite Builder

4. Save โ€” and let it validate โ€‹

Press Save. MyChatBot validates the whole spec at once:

  • Valid โ†’ the routine is saved and the card refreshes.
  • Invalid โ†’ a red "This routine has problems:" box lists every problem together (an unknown model alias, a model that can't use tools, a step that references a missing agent), and the editor stays open with your text intact. Fix and Save again.

5. Check the card says what you expect โ€‹

Back on the Tasks tab, the routine card's "Runs onโ€ฆ" line reflects the model each step actually uses โ€” so when you've pinned models, that's what shows, not the agent's default. It's your at-a-glance confirmation the pins took.

Sample it before you schedule or trigger it โ€‹

Press Run on the card, send a topic, and watch the steps tick off in the live activity panel โ€” each step's per-step model is what bills it, so this first run is also your cost check. When the output and the spend look right, wire it to a schedule or a trigger from the Automations panel right below the editor.

Billing follows the model you pick

A heavier model costs more per step; a lighter one costs less. Each step bills on whatever model it ran on โ€” so pinning a cheap model on the bulk step is exactly how you keep a frequently-run routine affordable. See Usage & billing.

Make it yours โ€‹

  • Pin the whole routine, not the steps. If every step should run on one non-default model, set a single routine-level model and skip the per-step ones.
  • Stop early when there's nothing to do. Add an early_exit so a routine that finds no work bails out gracefully instead of burning steps โ€” see Early exits.
  • Gate the step that acts. Any step that sends, publishes, or changes live data needs an approval gate โ€” add approval: true to it.
  • Prefer chatting? Everything here is describable in plain language to your Personal Assistant, which writes the same YAML. Open the routine's โ‹ฎ โ†’ Edit with assistant and say what should change.

See also โ€‹