Developers / JevModel
Multi-Label Text Classification: One Choice, Several Yes/No Questions, or a Second Pass
When one text belongs to several classes, compare a single Choice, up to eight Noul questions, a second request, and a generative label list. JevModel Choice returns exactly one label.
Last updated:
Quick answer: Choice picks one label; independent tags are separate yes/no questions
- Single-label (multi-class) classification picks exactly one class. Multi-label classification allows several classes to be true together, such as billing and performance in the same message.
- A JevModel Choice returns one label from 2 to 12 options, with a probability for each. It does not return a set. To mark several independent facts, send up to eight Noul questions in the same request and threshold each yes probability on its own.
- A generative model can emit a JSON list, and you must reject names you did not define. A Hugging Face zero-shot pipeline can set multi_label; those scores are NLI entailment signals, not a calibrated accuracy. More than eight tags, or a parent-then-child taxonomy, needs another request.
When is a text multi-label instead of multi-class?
Read the action, not the model brochure. “I was charged twice and the export now takes two minutes” is both a billing issue and a performance issue. If the next step is “hand this to the one team that should answer”, you want a single primary label: see intent-classification and text-classification-api. If the next step is “tag every applicable theme so a weekly report does not drop one of them”, you want multi-label. Forcing a Choice hides one of the two facts. This page owns that contract. It does not replace the single-request how-to, and it does not restate Make’s “assign only one category” switch — that control lives in Make, described in make-categorize-text. Customer feedback that only needs the main theme plus a priority stays on customer-feedback-classification.
How to classify text with the JevModel APIIntent Classification for Product & Support Text: Rules, LLMs, and Typed APIsCustomer Feedback Classification: One Theme, a Priority Score, and Why Sentiment Is Not EnoughMake.com Categorize Text: AI Toolkit vs HTTP → Jev for Typed Labels and Confidence ThresholdsFour ways to record more than one label
Pick the shape your warehouse can store. The table is a contract map, not a ranking. No option removes the need to count false tags on your own labeled rows.
| Dimension | One Choice | Several Noul questions | Second pass or a paid Flow | JSON list or HF multi_label |
|---|---|---|---|---|
| What comes back | Exactly one label, plus a probability per option | A yes probability per question, from 0 to 1 | Another typed answer for the child set or the next branch | A list of names, or an NLI score per candidate |
| Do the labels compete? | Yes. They share one distribution | No. Each question is its own yes or no | Only inside that request | Depends on the prompt or the pipeline flag |
| Limit on this API | 2 to 12 options in that question | 1 to 8 questions in the request, Noul included | Each call still has the 8,000-character validated budget | Not a JevModel response shape |
| Typical mistake | A mixed text is shoved into one class | Overlapping questions double-count the same fact | A lost response is retried without checking history | An unknown name is stored as if it were in the taxonomy |
How do you tag several facts with Noul?
Write each Noul as one proposition: “Is a billing issue present?” Give criteria.true and criteria.false as short descriptions, 2 to 350 characters each, and instructions of 8 to 600 characters. Question ids follow the same rule as Choice: a leading letter, then lowercase letters, digits, and underscores, at most 40 characters. Do not ask two questions that mean the same fact, such as billing and invoice, or a true count will double. Skip a catch-all question unless someone will read it; a low probability is already a reason to abstain. The field noul is the probability of yes, from 0 to 1. There is no separate confidence field. A value near 0.5 is uncertain: send that tag to a person. Do not treat a high value on eight questions as eight confirmed tags until you measure false positives per tag. One request may mix one Choice (the primary route) and several Noul tags, as long as the total is 1 to 8 questions. Eight Noul questions are still one run. The example below is a request shape, not a recorded result. Thresholds come from your labels, not from the sample numbers you might imagine. See question-types and confidence-and-abstention.
Choice, Score, and NoulJev probability, confidence and human-review thresholdsJevModel API: request and responsecurl --fail-with-body https://jevmodel.app/api/v1/systemone \
-H "Authorization: Bearer $JEVMODEL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"state":"I was charged twice and exporting a report now takes two minutes.","questions":{"billing":{"type":"noul","instructions":"Is a billing or charge issue present in this text?","criteria":{"true":"The text mentions charges, invoices, refunds, or payment.","false":"The text does not mention a billing issue."}},"performance":{"type":"noul","instructions":"Is a performance or speed problem present in this text?","criteria":{"true":"The text describes slowness, timeouts, or a speed regression.","false":"The text does not describe a performance problem."}}}}'How do parent and child labels stay inside the limits?
Do not flatten thirty labels into one Choice. The maximum is twelve, and a flat list that long makes the descriptions overlap. First request: a parent Choice that includes an explicit review option. Second request: only the child criteria for the parent that was chosen, and only when that parent’s confidence clears a threshold you measured. Otherwise a person picks the child. Each call is billed on its own. There is no idempotency key, so write the request into your history before you retry a lost response. If you need more than eight Noul tags, split them into two requests with the same state and disjoint question ids, and store both answers under a row id you generate. The two calls do not see each other. A Decision Flow can draw that branch in the console, but running a flow is for paid plans only: subscribe or buy a token pack. Flows do not use the daily free runs. See decision-flows. Every validated request, including the questions, must fit in 8,000 characters.
AI Decision Flows with Jev and human reviewZero-Shot Text Classification in 2026: LLM Prompts vs Hugging Face vs a Typed APIJevModel pricing and free Jev runsHow do you evaluate multi-label output?
Do not collapse the result into one accuracy number. A comment with two true tags counts twice. For each tag, count false positives and false negatives on a held-out set, or report precision and recall per tag if you already compute them. A model that never predicts a rare tag can look strong on a single average and still drop that tag every week. Console Batch exports row-level answers and does not compute these counts; join them in your own script. Score a JSON list and a Hugging Face multi_label run on the same rows if those are the alternatives. Hugging Face scores are NLI entailment signals; reject any generated name that is not in your taxonomy before the join. The zero-shot path is zero-shot-text-classification. The held-out split and the habit of re-checking after a criteria change are evaluation. Free verified accounts share 5 successful runs per UTC day across Playground, each Batch row, and the API. A second pass is a second run.
Evaluate a Jev workflowBatch text classification with the JevModel APIZero-Shot Text Classification in 2026: LLM Prompts vs Hugging Face vs a Typed APIWhat will this API not return?
It will not return an open list of tags you did not name. It will not read images, audio, or attachments. It is not a trained multi-label head you can download, and the product is not open source. Choice will not emit two winning labels from one question. Noul probabilities on different questions are not parts of one distribution, so they do not need to sum to 1, and they also must not be averaged into a single confidence. A generative JSON repair step is your code, not a field on this response. If the text is a raw email thread, clean it with the steps in email-classification before you ask several tag questions. If you only needed the primary product theme, go back to customer-feedback-classification rather than tagging every synonym.
Is Jev open source?Is Jev a Multimodal / Downloadable Model? What JevModel Actually IsEmail Classification with AI: Rules, LLM Prompts, or a Typed Decision API for Inbound MailCustomer Feedback Classification: One Theme, a Priority Score, and Why Sentiment Is Not EnoughHow to classify text with the JevModel APIChoice, Score, and NoulZero-Shot Text Classification in 2026: LLM Prompts vs Hugging Face vs a Typed APIJev probability, confidence and human-review thresholdsAI Decision Flows with Jev and human reviewIntent Classification for Product & Support Text: Rules, LLMs, and Typed APIsFrequently asked questions
Does Choice support multi-label output?
No. One Choice returns one label. The probabilities describe how the options competed inside that question. Independent tags belong on separate Noul questions, or on a later request.
Do Noul probabilities across questions sum to 1?
No. Each Noul is the probability that its own proposition is true. Two high values can both be right. Do not normalize them into one distribution, and do not average them into one confidence score.
How many labels can I ask for in one call?
One Choice holds 2 to 12 options and still returns a single winner. Noul holds one proposition per question. The request holds 1 to 8 questions in total. Beyond that, send another request with the same state and the remaining ids.
Should parent-child labels use a Decision Flow?
Only if you want the branch drawn in the console and you are on a paid plan. A flow needs a subscription or a token pack. It does not use the daily free runs. Two ordinary API calls, with your own row id, do the same handoff without a flow.
JevModel is independent and not affiliated with TypeSafe AI.