Skip to content

Intents and routing

The Understand model classifies each request into one intent. A deterministic router then decides what happens. The router is pure and unit-tested, so every rule is predictable and the model never grants itself permission.

Intent Meaning
question Wants information about code, a ticket or workspace status. Includes “tell @Ana what changed today”.
code_task Wants code written, changed, fixed, reviewed or tested.
pm_action Wants something done in Linear or ClickUp.
run_action Wants a saved action run: a build, check, upload, ship or release.
chit_chat A greeting, thanks or acknowledgement.
ignore Not addressed to Relay.
  1. ignore and chit_chat → ignore.
  2. A thread message nobody addressed to Relay, with confidence below the threshold → ignore. Conversation between people stays between people.
  3. The model asked a clarifying question → clarify.
  4. Confidence below the threshold (default 0.6) → clarify.
  5. question → answer, unless it needs a repo and none matched (→ clarify).
  6. code_task → plan for approval, unless no repo matched (→ clarify).
  7. run_action → run action, unless no saved action matched (→ clarify).
  8. pm_action:
    • any delete → pm_write (needs approval);
    • other changes, when the request came to you through your own connection → pm_write (they’d be made in your name);
    • other changes → pm_do (done directly);
    • otherwise → pm_read.

Posting in the conversation the request came from is just the reply, so it never counts as a write.

Once Relay replies in a Slack thread, it reads every later message there, even without a mention. It replies only when it has something worth saying: the message is addressed to it, answers its question, asks something it can answer, or corrects something it said. When unsure, it stays quiet.

Settings → Workflow → Ask when unsure sets the threshold, from 0 to 1 (default 0.6). Raise it to make Relay ask more often; lower it to make it act more readily.