Skip to content

Jev: Classify

Classifies a text into one of the categories you define and returns the category, the confidence and the probabilities of all of them. If confidence falls below the threshold, the category becomes uncertain (or the text you choose) and the original category is kept in raw_category: ideal for sending those cases to human review.

The node has one output port per category (in the order you define them) plus Uncertain, for whatever falls below the threshold: connect each port to its target without needing a Switch. If you prefer a single output, connect only the normal one and route yourself with a Switch node on \{\{jev.category\}\}.

You can add extra parallel questions (for example urgency or frustration) to the same call; they come out in jev.extra.

Describe each category contrastively (what it covers and what it does not) and avoid overlapping categories: classification quality depends mostly on that.

ParameterTypeRequiredDescription
credentials_idcredentialsYesTypeSafe credential (API key).
modelselectYesJev model. jev-latest is an alias that moves to new models on release (today jev-1.13.0); in production pin jev-1.13.0 or jev-1.14.0.
state_modeselectYesWhat is evaluated: text (a text), object (object with named fields, recommended) or all (all data reaching the node).
statetextareaNoText or JSON object to evaluate. Supports \{\{field\}\} variables.
long_contextbooleanNoLong context (experimental): raises the text limit from 64k to 262k tokens. It is slower and less accurate; use it only when the text does not fit otherwise.
output_keytextNoKey in the data where the result is stored. Default jev; the rest of the data is kept.
instructionstextareaNoWhat is being classified, e.g. “Which team should handle this”.
categoriesjsonYesMap {name: description} or list [{name, description}] (up to 255). The description may be an object {covers, excludes, examples}.
min_confidencenumberNoMinimum confidence (0 to 1) to accept the category. Default 0.5.
uncertain_labeltextNoCategory to return when confidence is not reached. Default uncertain.
extra_questionsjsonNoExtra questions (same format as Jev: Ask). They cannot be named category.

Requires a TypeSafe credential (credentials_id) holding the api_key from the TypeSafe console (TYPESAFE_API_KEY). The key is yours: TypeSafe bills the usage, not Floogos. In the credential, the Test button calls GET /v1/models (no tokens spent).

The result is added to the input data (it does not replace it): the ticket or form stays available downstream. Read it as \{\{jev.field\}\}.

{
"nextModule": "next-node",
"data": {
"...": "input data, untouched",
"jev": {
"category": "technical",
"raw_category": "technical",
"confidence": 0.82,
"uncertain": false,
"probabilities": {
"billing": 0.09,
"technical": 0.82,
"sales": 0.09
},
"extra": {
"urgente": {
"type": "noul",
"probability": 0.9,
"confidence": 0.8,
"answer": "yes"
}
},
"model": "jev-1.13.0",
"usage": {
"input_tokens": 150,
"output_tokens": 6
},
"cost_usd": 0.000006
}
}
}

Ports route_0 … route_N (one per category, in the order of categories) and route_uncertain. If you connect no port and use the normal output, the node continues through it (nextModule). jev.route says which one it exited through.

Categories:

{
"billing": { "covers": "Payments, invoices, refunds", "excludes": "Bugs in the invoicing screen" },
"technical": "Bugs, errors or integration problems",
"sales": "Pricing, plans or account questions"
}

The node shows four ports: billing, technical, sales and Uncertain. Connect each one to its team’s channel and Uncertain to human review.

  • Privacy: the text you evaluate leaves Floogos for TypeSafe, a third party. Per their documentation it is not used for training, and zero retention exists only on their Enterprise plan. Do not send data you cannot share; filter first with the Jev: Verify rules node (pii) if needed.
  • Language: Jev performs best in English; other languages, Spanish included, work with lower accuracy. Test with your own data before automating, and write instructions in English if results are unreliable.
  • Variables: the engine substitutes \{\{field\}\} in the configuration before running the node. The node does not substitute again, so user text containing braces travels as-is.
  • Cost: 0.042 $ per million input tokens; output is free. jev.cost_usd is a per-run estimate.
  • Errors: missing_credentials, validation (configuration or 422), auth_error (401), rate_limited (429), overloaded (529), state_too_large, jev_error and connection_error. 429, 529, 5xx and network drops retry automatically (up to 3 times with growing delay); the rest do not.
  • Confidence: confidence is not an accuracy guarantee: calibrate thresholds with your own cases and start conservative. Do not automate destructive actions.