Before you start
You’ll need the Judge & route nodes AI feature on your channel — check Plan & billing. Without it, AI: yes or no, AI: route by meaning and AI: answer from your FAQ 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. AI: which one they meant can always be added, and settles exact answers without the AI (see below). You’ll also want some comfort with building on the canvas, since these 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.
- 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. - 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.
- Set True above (default
0.7) — how likely a “yes” has to be before the flow follows the true path. - Set Unsure band around 0.5 (default
0.1) — how close to “as likely as not” counts as genuinely unsure. While the band is on, an answer that leans yes but falls short of True above also follows unsure, so false always means a clear no. With the defaults, 0.7 and up follows true, 0.4 to 0.7 follows unsure, and 0.4 or lower follows false. Set it to0for a plain split: true above the bar, false below it. - 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 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.
“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.
- 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”). The judge reads both, so give each branch a label that says what it is rather than “A” or “Option 1”. A none of these branch is added automatically — you never write it yourself.
- Set Confident above (default
0.5) — below this, the node follows unsure instead of guessing between two close options. - 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 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.
“AI: which one they meant” — match a viewer’s words to your options
Search for AI: which one they meant when a viewer answers in their own words and your flow needs to know which of a few options they chose: “the blue one” for a team, “tacos please” for lunch, “the big apple” for a trivia answer. It works out the match; it never writes anything back.
- In What they said, keep
$(query)(everything the viewer typed after the command), or pick another value from the Insert… menu. - In Options, write one option on each line, up to 50. Write each the way a viewer would say it (“Team Blue”, “New York City”). A
$(...)on a line, such as a variable, is filled in each time the flow runs, and a line that comes out empty is dropped. - Optionally open More options and move Sure enough above (default
0.6): the AI’s pick has to be at least this sure to count. A number picks that option (on by default) lets a viewer say just2for the second line; turn it off when the options are answers rather than choices. - Connect matched to what should happen for a match and, if you want to answer a miss, none.
The step settles the easy cases itself, without asking the AI and on every channel, and only these:
- The answer is exactly one of your options. Capital letters, accents, punctuation and a leading “the”, “a” or “an” don’t matter, so
eiffel toweris The Eiffel Tower. - The answer is just a number, such as
2, and picks the option on that line of your list. This needs A number picks that option on, at least two options, and no digit in any option, so a list like “World War 1” and “World War 2” never reads1as a position. - You have two or more options, and the answer is a short one (six words at most) with no “not”, “but”, “instead” or similar, where every word that matters is in one option and only that one. “The red one” picks Team Red from Team Red, Team Blue and Team Green. “Hate red” does not, because “hate” is not in any option, and neither does “George Bush” for George Washington.
Anything else goes to the AI, which chooses one of your options or none of them. It is asked whether the viewer’s words name the same thing as an option, so “the right answer” or “whichever” picks nothing. Without the Judge & route nodes feature the AI part is skipped and the step follows none. The Its position in the list value is the line the option is on in your list as you wrote it.
Later steps can read The option they meant, Its position in the list (1 is the first) and How sure it was from the Insert… menu, or as a data wire. Exact matches count as fully sure.
The Trivia: answers in plain words template in the AI helpers pack puts the step to work: open Variables and change the value of trivia_answer to the right answer, and a viewer typing !answer the big apple is congratulated by name when the answer is “New York City”. The reply names the winner and says only that the guess is correct, and the template then replaces trivia_answer with a dash, so nobody can paste the answer and the next question needs a new value. A wrong guess gets no reply, so nothing is given away. In this template a number is never read as a position, so !answer 1 is only ever a guess.
“AI: answer from your FAQ” — reply with your own words
Search for AI: answer from your FAQ to let chat get an answer to a question without a command: “when do you stream?”, “what’s your Discord?”. The AI never writes the reply. It chooses which of your entries answers the question and checks that the entry really does; the reply is the text you wrote.
- In The question, keep
$(message): the viewer’s whole chat message. - In Questions and answers, add a row for each thing viewers ask, up to 40: the question as a viewer would ask it (“When do you stream?”), then the answer to send (“Monday to Thursday at 7pm Eastern.”).
$(...)in an answer is filled in when it is sent. - Leave Answer from my chat commands too on to include your plain commands. A command counts only when anyone can use it, it takes no extra word after its name, and its flow is nothing but an optional cooldown and one chat message, like a
!discordthat says “Join us: …”. A command that checks who is asking or what they typed, such as a password, a level or a role, is left out so its reply is never given to everyone, and so is a command that does anything else, such as entering a giveaway or sending a second message. A reply may use$(user)and$(channel)but nothing else. Its reply becomes an answer, and the flow’s description tells the AI what it is for. - Connect answered to a Chat message whose text is the step’s The answer, ready to send (pick it from Insert…), set to send as a reply. none means nothing answered the question: leave it unwired and the bot stays quiet.
The Answer common questions template in the AI helpers pack builds all of this for you: a chat message passes a free check first (it has to look like a question: a ? or a word like “when” or “how”, at least eight characters, and not a command), then a cooldown of one answer per viewer a minute and one per channel every 15 seconds, then this step, then the reply. Install it, open the step and add your own questions and answers.
It only answers when it is sure. The AI has to pick an entry with confidence at least Sure enough above (default 0.6) and judge that the entry fully answers the question, so “how many hours a week do you stream?” does not get a schedule that only gives days. When a question shares nothing with a long list of entries, the AI isn’t asked at all. Later steps can also read Which entry it came from and How sure the AI was it picked the right entry.
What happens when the judge can’t answer
All of these 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.
- AI: which one they meant and AI: answer from your FAQ follow none, never a guessed option or entry.
- This happens whenever the channel doesn’t hold the feature, the AI judge is unreachable, times out or doesn’t answer the question, or — for the route, pick and FAQ nodes — nothing clears the confidence bar. Open the flow’s Run log after a real run; the detail line says which of these happened.
Troubleshooting
- Node greyed out in the library? Your channel doesn’t currently include the Judge & route nodes feature — check Your plan.
- AI: which one they meant follows none on an answer you’d expect to match? Check the line in the Run log: it says whether the AI wasn’t available or how sure it was. Write the options the way a viewer would say them, and lower Sure enough above a little if it is almost sure.
- AI: answer from your FAQ stays quiet? The question may not look like one to the template’s free check, an entry may only partly answer it, or your channel may not hold Judge & route nodes. Add the question as its own row, worded the way viewers ask it.
- 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 (or none) path for the AI nodes so a dry run can’t fabricate a judgment. The exception is AI: which one they meant: an exact match, a number or a word that fits one option follows matched in a Test fire, because the step settles those without the AI. Trigger the flow for real, or use the Run log from a live run, to see the AI’s own picks.
- Getting the wrong branch consistently? Tighten the option labels and descriptions — the judge answers the question and criteria exactly as written, and a vague description is read as vaguely as it sounds.
Was this guide helpful?
Thanks. Your answer helps us decide which guides to improve.