# Ask the AI judge in a flow

Use the AI: yes or no and AI: route by meaning nodes to branch a flow on what a message means.

Updated 23 September 2026

## Before you start

You’ll need the **Judge & route nodes** AI feature on your channel — check [Your plan](https://bloopbot.com/docs/what-your-plan-includes) from the Flows page. Without it, both nodes below appear in the node library dimmed with a **Not included in your plan** badge; you can look, but you can’t add one to a flow. You’ll also want some comfort with [building on the canvas](https://bloopbot.com/docs/flow-basics), since both nodes live there, not in Simple view.

## “AI: yes or no” — branch on a plain-English question

Search the node library for **AI: yes or no** and drop it into a flow, wired the same way any condition is — between a trigger and the action it should gate.

1. In **Question**, write a plain-English yes/no question about the incoming chat message, e.g. “Is this viewer asking for tech help with their PC?” Anything you type is expanded first, so `$(...)` tokens work here too.
2. Optionally fill in **What counts as yes** and **What counts as no** to spell out edge cases — the more precisely you describe the boundary, the more reliable the answer. Leave both blank for a plain reading of the question.
3. Set **True above** (default `0.7`) — how confident the judge has to be that the answer is “yes” before the flow follows the **true** path. Below it follows **false**.
4. Set **Unsure band around 0.5** (default `0.1`) — how close to “as likely as not” counts as genuinely unsure, checked before true/false even applies. Set it to `0` to turn this off.
5. Connect the **true**, **false** and **unsure** outputs to whatever should happen for each.

The judged probability is available to later steps from the **Insert…** menu, under this step’s name as **Probability of yes**, or you can [drag a data wire](https://bloopbot.com/docs/data-wires) from the step’s tray — handy for a chat message that quotes how confident the bot was. Pick it from that menu rather than typing it.

> **It answers the question you wrote**
>
> Spell out the boundary cases. “Is this viewer being rude?” and “Is this viewer harassing someone by name?” are different questions, and the judge answers exactly the one you asked.

## “AI: route by meaning” — pick one of several branches

Search for **AI: route by meaning** for a message that could mean one of several things — a support-style “which of these is this about?” flow, for example.

1. In **Options**, add 2 to 8 rows: a short label for the branch (e.g. “Song request”) and a description of what belongs in it (e.g. “The viewer wants a song played”). A **none of these** branch is added automatically — you never write it yourself.
2. Set **Confident above** (default `0.5`) — below this, the node follows **unsure** instead of guessing between two close options.
3. Connect each labelled output, plus **none** and **unsure**, to what should happen next.

Example: three branches — “Song request” (the viewer wants a song played), “Tech question” (the viewer is asking about the streamer’s setup) and “Shoutout” (the viewer wants another streamer shouted out) — each wired to its own reply. A message like “can you play some Bowie?” follows Song request; “nice merch, dude” follows none.

Confidence is available to later steps from the **Insert…** menu as **Confidence**, or as a [data wire](https://bloopbot.com/docs/data-wires) from the step’s tray.

Each row gets its own output the moment you add it — two options means two branch handles, eight means eight, each labelled with the name you typed. Renaming a branch only changes its label; the connection you already drew stays exactly where it is. Delete a row and its handle goes with it: any connection still leaving it is drawn coral and dashed on the canvas to show it goes nowhere. The flow still opens and still saves — you’ll get a warning naming the node — and a run simply treats that branch as a dead end.

## What happens when the judge can’t answer

Both nodes fail to their safest path automatically — no error, no stalled flow.

- **AI: yes or no** follows **unsure**.
- **AI: route by meaning** follows **unsure** too, never a guessed branch.
- This happens whenever the channel doesn’t hold the feature, the AI judge is unreachable or times out, or — for the route node — no option clears the confidence floor. Open the flow’s **Run log** after a real run; the detail line says which of these happened.

> **Budget**
>
> A single run can ask the AI at most six times across all of its AI steps (a Test fire never asks the AI at all — it always answers “unsure”, so a dry run cannot fake a real judgment). The ceiling is that high because one flow may chain several AI steps; it is there so a long chain cannot run away with a viewer waiting on the reply.

## Troubleshooting

- Node greyed out in the library? Your channel doesn’t currently include the Judge & route nodes feature — check [Your plan](https://bloopbot.com/docs/what-your-plan-includes).
- Always follows unsure? Save first — an unsaved question never reaches the judge. Then check the Run log’s detail line for the reason.
- Test fire never shows true/false/a labelled branch? That’s expected — Test fire always takes the unsure path for these nodes so a dry run can’t fabricate a judgment. Trigger the flow for real, or use the Run log from a live run.
- Getting the wrong branch consistently? Tighten the option descriptions — the judge answers the question and criteria exactly as written, and a vague description is read as vaguely as it sounds.
