Jev: Classify
Description
Section titled “Description”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.
Configuration
Section titled “Configuration”Parameters
Section titled “Parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
| credentials_id | credentials | Yes | TypeSafe credential (API key). |
| model | select | Yes | Jev 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_mode | select | Yes | What is evaluated: text (a text), object (object with named fields, recommended) or all (all data reaching the node). |
| state | textarea | No | Text or JSON object to evaluate. Supports \{\{field\}\} variables. |
| long_context | boolean | No | Long 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_key | text | No | Key in the data where the result is stored. Default jev; the rest of the data is kept. |
| instructions | textarea | No | What is being classified, e.g. “Which team should handle this”. |
| categories | json | Yes | Map {name: description} or list [{name, description}] (up to 255). The description may be an object {covers, excludes, examples}. |
| min_confidence | number | No | Minimum confidence (0 to 1) to accept the category. Default 0.5. |
| uncertain_label | text | No | Category to return when confidence is not reached. Default uncertain. |
| extra_questions | json | No | Extra questions (same format as Jev: Ask). They cannot be named category. |
Credentials
Section titled “Credentials”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).
Output
Section titled “Output”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.
Example
Section titled “Example”Ticket triage
Section titled “Ticket triage”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_usdis a per-run estimate. - Errors:
missing_credentials,validation(configuration or 422),auth_error(401),rate_limited(429),overloaded(529),state_too_large,jev_errorandconnection_error. 429, 529, 5xx and network drops retry automatically (up to 3 times with growing delay); the rest do not. - Confidence:
confidenceis not an accuracy guarantee: calibrate thresholds with your own cases and start conservative. Do not automate destructive actions.