Skip to content

Published by DecisionNode (Bynn Intelligence, Inc.). Not affiliated with, endorsed by or operated by TypeSafe AI. About this site

Jev, compared

Jev use cases, and the same decisions on DecisionNode

Five decisions that sit between an input and an action, each with the exact request DecisionNode takes and what comes back. The text requests run on Jev too.

Facts checked

Support triage

Route a ticket, rate its urgency and decide whether a person should take it, before any reply is written.

POST /v1/decide

{
  "model": "decisionnode-1.0",
  "state": "We were charged twice for the October invoice (INV-20931). The second charge pushed our card over its limit and our team seats were suspended this morning. Please refund the duplicate and restore access.",
  "questions": {
    "route": {
      "type": "choice",
      "instructions": "Which team should handle this ticket?",
      "criteria": {
        "billing": "Charges, invoices, refunds and plans",
        "bug": "Something in the product is broken",
        "account": "Login, seats and permissions",
        "feature_request": "Asks for something the product does not do"
      }
    },
    "urgency": {
      "type": "score",
      "instructions": "How urgent is this ticket?",
      "criteria": [
        "routine: no deadline",
        "soon: within a few days",
        "today: blocks work today",
        "critical: outage or data loss"
      ]
    },
    "refund": {
      "type": "truth",
      "instructions": "Is the customer asking for money back?",
      "criteria": {
        "true": "Asks for a refund or a credit",
        "false": "Any other request"
      }
    },
    "escalate": {
      "type": "truth",
      "instructions": "Should a person handle this now instead of an automated reply?"
    }
  }
}

What comes back

route
choice, one of 4 options with a probability for each
urgency
score on 4 levels, with probabilities and a confidence
refund
yes/no, one probability from 0 to 1
escalate
yes/no, one probability from 0 to 1

Runs on Jev too: the yes/no questions use Jev's noul type.

Agent tool-call guardrail

Check a tool call an agent is about to make against what the user asked for, and block the destructive ones.

POST /v1/decide

{
  "model": "decisionnode-1.0",
  "state": {
    "user_request": "Clean up the test accounts we created for the demo last week.",
    "proposed_tool_call": {
      "tool": "sql.execute",
      "database": "production",
      "query": "DELETE FROM accounts WHERE created_at < '2026-10-01';"
    }
  },
  "questions": {
    "verdict": {
      "type": "choice",
      "instructions": "Should the agent run `proposed_tool_call`?",
      "criteria": {
        "allow": "Safe, and does what the user asked",
        "ask_human": "Plausible, but needs a person to confirm",
        "block": "Unsafe, or does more than the user asked"
      }
    },
    "risk": {
      "type": "score",
      "instructions": "How much damage could `proposed_tool_call` do?",
      "criteria": [
        "read only",
        "reversible change",
        "hard to reverse",
        "destructive"
      ]
    },
    "in_scope": {
      "type": "truth",
      "instructions": "Does `proposed_tool_call` do only what `user_request` asks for?"
    }
  }
}

What comes back

verdict
choice, one of 3 options with a probability for each
risk
score on 4 levels, with probabilities and a confidence
in_scope
yes/no, one probability from 0 to 1

Runs on Jev too. Prompt injection is the suite where the two differ most: 0.764 for DecisionNode MoE against 0.600 for Jev.

Model routing

Send each prompt to the cheapest model that can handle it, and flag the ones that need fresh data.

POST /v1/decide

{
  "model": "decisionnode-1.0",
  "state": "Write a Python function that converts ISO 8601 durations such as P3DT4H into seconds, with unit tests.",
  "questions": {
    "route": {
      "type": "choice",
      "instructions": "Which model should answer this prompt?",
      "criteria": {
        "small": "Short factual answers, rewording, simple classification",
        "large": "Multi-step reasoning, long documents, careful writing",
        "code": "Writing, fixing or reviewing code"
      }
    },
    "difficulty": {
      "type": "score",
      "instructions": "How hard is this prompt to answer well?",
      "criteria": [
        "trivial",
        "easy",
        "moderate",
        "hard"
      ]
    },
    "needs_web": {
      "type": "truth",
      "instructions": "Does a good answer need current information from the web?"
    }
  }
}

What comes back

route
choice, one of 3 options with a probability for each
difficulty
score on 4 levels, with probabilities and a confidence
needs_web
yes/no, one probability from 0 to 1

Runs on Jev too.

Content moderation

Decide what happens to a comment, with separate signals for promotion and scams.

POST /v1/decide

{
  "model": "decisionnode-1.0",
  "state": "Great thread. If anyone wants the same results, message me on Telegram @fastgains_crypto. I double your deposit in 24 hours, guaranteed.",
  "questions": {
    "action": {
      "type": "choice",
      "instructions": "What should happen to this comment?",
      "criteria": {
        "keep": "Fine as posted",
        "label": "Allowed, with a warning label",
        "remove": "Breaks the community rules"
      }
    },
    "promotion": {
      "type": "truth",
      "instructions": "Is the comment promoting an offer outside this platform?"
    },
    "scam": {
      "type": "truth",
      "instructions": "Does the comment show signs of a financial scam?"
    }
  }
}

What comes back

action
choice, one of 3 options with a probability for each
promotion
yes/no, one probability from 0 to 1
scam
yes/no, one probability from 0 to 1

Runs on Jev too. If comments carry images, only DecisionNode can read them: Jev takes text only.

LLM answer judge

Grade a generated answer against the passage it was meant to use, as a cheap check before it reaches a user.

POST /v1/decide

{
  "model": "decisionnode-1.0",
  "state": {
    "question": "How long is the refund window for annual plans?",
    "retrieved_passage": "Annual plans can be refunded in full within 30 days of purchase. After 30 days, refunds are prorated for the unused months.",
    "answer": "You can get a full refund on an annual plan within 14 days."
  },
  "questions": {
    "grounded": {
      "type": "truth",
      "instructions": "Is every claim in `answer` supported by `retrieved_passage`?"
    },
    "relevance": {
      "type": "score",
      "instructions": "How well does `retrieved_passage` answer `question`?",
      "criteria": [
        "off topic",
        "related, but does not answer",
        "partly answers",
        "fully answers"
      ]
    },
    "grade": {
      "type": "choice",
      "instructions": "Grade `answer` against `retrieved_passage`.",
      "criteria": {
        "correct": "Matches the passage",
        "partly_correct": "Right in part, wrong or missing in part",
        "incorrect": "Contradicts the passage"
      }
    }
  }
}

What comes back

grounded
yes/no, one probability from 0 to 1
relevance
score on 4 levels, with probabilities and a confidence
grade
choice, one of 3 options with a probability for each

Runs on Jev too.

Decisions only DecisionNode can take: images

Jev reads text only. DecisionNode takes up to 16 images and up to 4 videos as frames in the same request as the state, for checks like “does the listing photo match the item”, “is the receipt total legible” or “is smoke visible on this camera”. On the Photos suite, DecisionNode MoE scores 0.918 and Flash 0.900.

DecisionNode's documentation on images

Run your own decisions on DecisionNode

Send text, JSON or images with typed questions and get probabilities back. Free tier: 50 Flash and 20 MoE requests a day.

Try DecisionNode