
Typed decisions — choice, score, noul — about any text or JSON state, from one encoder pass.
Every question of a call shares one encoding of the state. Code, benchmarks and training pipeline:
https://github.com/tomek7667/cbjev · project page: https://tomek7667.github.io/cbjev/
| checkpoint | path | encoder | use it for |
|---|---|---|---|
cbjev | repo root | ModernBERT-large (395M) | English |
cbjev-multilingual | multilingual/ | mmBERT-base (307M) | other languages (the Router picks it for you) |
Both are fine-tuned from the Apache-2.0 Laya checkpoints
(laya-typed-decisions and laya-multilingual) on 35 public datasets, in cbjev's shared layout, then calibrated
on a held-back dev split. They need the cbjev runtime; transformers alone will not run them.
pip install "git+https://github.com/tomek7667/cbjev"
import cbjev
agent = cbjev.load() # downloads this repo on first use
agent.predict({"body": "Billed twice for March. Refund today or we cancel."}, {
"team": {"type": "choice", "instructions": "Which team should handle this?",
"criteria": {"billing": "invoices, refunds", "technical": "bugs", "other": "anything else"}},
"churn": {"type": "noul", "instructions": "Does the customer threaten to cancel their subscription?"},
})

| cbjev | Laya (best checkpoint) | Jev (published) | |
|---|---|---|---|
| mean accuracy, 15 English suites | 0.741 | 0.710 | — |
| typed-decisions, 2,000 decisions | 0.783 | 0.768 | 0.727 |
| mean ECE (lower is better) | 0.117 | 0.125 | 0.246 |
| answer flips when options are reordered | 0.2 % | 7.8 % | 13 % |
| MASSIVE intent, 51 languages | 0.436 | 0.401 | — |
| 10 questions, 500-token document | 11.4 ms | 75.8 ms | — |
Not better everywhere: cbjev trails Laya's better checkpoint on AG News (−0.8), DAIR emotion (−2.5), prompt injection (−3.4) and support triage (−4.0), and Jev's published Banking77 (0.870 vs 0.620). Full tables: BENCHMARKS.md.
GPL-3.0-or-later. Fine-tuned from Apache-2.0 Laya checkpoints by Convai Innovations — see NOTICE.
2 commits

Typed decisions — choice, score, noul — about any text or JSON state, from one encoder pass.
Every question of a call shares one encoding of the state. Code, benchmarks and training pipeline:
https://github.com/tomek7667/cbjev · project page: https://tomek7667.github.io/cbjev/
| checkpoint | path | encoder | use it for |
|---|---|---|---|
cbjev | repo root | ModernBERT-large (395M) | English |
cbjev-multilingual | multilingual/ | mmBERT-base (307M) | other languages (the Router picks it for you) |
Both are fine-tuned from the Apache-2.0 Laya checkpoints
(laya-typed-decisions and laya-multilingual) on 35 public datasets, in cbjev's shared layout, then calibrated
on a held-back dev split. They need the cbjev runtime; transformers alone will not run them.
pip install "git+https://github.com/tomek7667/cbjev"
import cbjev
agent = cbjev.load() # downloads this repo on first use
agent.predict({"body": "Billed twice for March. Refund today or we cancel."}, {
"team": {"type": "choice", "instructions": "Which team should handle this?",
"criteria": {"billing": "invoices, refunds", "technical": "bugs", "other": "anything else"}},
"churn": {"type": "noul", "instructions": "Does the customer threaten to cancel their subscription?"},
})

| cbjev | Laya (best checkpoint) | Jev (published) | |
|---|---|---|---|
| mean accuracy, 15 English suites | 0.741 | 0.710 | — |
| typed-decisions, 2,000 decisions | 0.783 | 0.768 | 0.727 |
| mean ECE (lower is better) | 0.117 | 0.125 | 0.246 |
| answer flips when options are reordered | 0.2 % | 7.8 % | 13 % |
| MASSIVE intent, 51 languages | 0.436 | 0.401 | — |
| 10 questions, 500-token document | 11.4 ms | 75.8 ms | — |
Not better everywhere: cbjev trails Laya's better checkpoint on AG News (−0.8), DAIR emotion (−2.5), prompt injection (−3.4) and support triage (−4.0), and Jev's published Banking77 (0.870 vs 0.620). Full tables: BENCHMARKS.md.
GPL-3.0-or-later. Fine-tuned from Apache-2.0 Laya checkpoints by Convai Innovations — see NOTICE.
2 commits