Questions
Triage sees the item’s title, its data and the text of its blocks, with sensitive values left out.instructions gives it context. Refer to fields of your data by name in the questions.
noul(prompt, criteria?)answers yes or no as a probability between 0 and 1.choice(options, prompt)picks one option. Options are a list, or an object of option to description; describing options helps a lot.score(levels, prompt)rates the item against your levels, lowest first. The answer is a number from 0 (the first level) to the last level’s position, weighted by how sure it is: with["low", "medium", "high"], 1.7 leans high.
a.category above is "spam" | "harassment" | "fine". a.confidence is the lowest confidence across the choice and score answers.
Rules
Rules run in your app, top to bottom. The first rule whosewhen matches decides, and then is one decision or a list:
setState(state)moves the item. Moving it to a closed state counts as handled by triage.tag(name)tags it.run(action, input?)runs an action. Only actions that are harmless or markedautomatable: truecan be run, never ones that need an approval;pult checkcatches the rest.
Watching, then acting
A rule withoutlive: true only watches. Pult records what it would have done and compares that with what your team actually does with the item: an agreement when they end up in the same place, a disagreement when they don’t. Each rule’s agreement rate shows under Rules in the inbox. Turn a rule live once it has earned it.
When a live rule closes an item and someone moves it back, that’s recorded as an override and counts against the rule.