Text Classification
Transformers
ONNX
Safetensors
English
Portuguese
modernbert
feature-extraction
typestrict
decision-model
typed-decisions
encoder
decision-index
cpu
text-embeddings-inference
Instructions to use typestrict/TS-moBERTo-150M with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use typestrict/TS-moBERTo-150M with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="typestrict/TS-moBERTo-150M")# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModel tokenizer = AutoTokenizer.from_pretrained("typestrict/TS-moBERTo-150M") model = AutoModel.from_pretrained("typestrict/TS-moBERTo-150M", device_map="auto") - Notebooks
- Google Colab
- Kaggle
File size: 40,521 Bytes
9817fc9 3dd1fad 9817fc9 3dd1fad 9817fc9 6f1fdea 9817fc9 6f1fdea 6e8dffa 6f1fdea 9817fc9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 | ---
license: apache-2.0
language:
- en
- pt
library_name: transformers
pipeline_tag: text-classification
base_model: Tropic-AI/moBERTo-orig-tokenizer
tags:
- typestrict
- decision-model
- typed-decisions
- encoder
- decision-index
- onnx
- cpu
---
<p align="center">
<a href="https://typestrict.ai"><img src="https://huggingface.co/typestrict/TS-moBERTo-150M/resolve/main/figures/banner.png" width="100%" alt="TS-moBERTo-150M by typestrict.ai"></a>
</p>
<p align="center">
<a href="https://typestrict.ai"><b>Train your own on typestrict.ai</b></a> |
<a href="https://docs.typestrict.ai/base-models">Docs</a> |
<a href="https://docs.typestrict.ai/agents">MCP for AI assistants</a> |
<a href="https://github.com/typestrict-lab/cli">CLI</a> |
<a href="https://huggingface.co/typestrict">All TS models</a>
<br>
<b>License</b>: <a href="https://huggingface.co/typestrict/TS-moBERTo-150M/blob/main/LICENSE">Apache 2.0</a> |
<b>Authors</b>: <a href="https://typestrict.ai">typestrict.ai</a>
</p>
# TS-moBERTo-150M
Our default base: one encoder that reads a question, a state and a set of options and returns a calibrated probability for every option, in English and Portuguese, fast enough for a CPU. It was published before as Dinah-1.
> [!TIP]
> **Train on it today** at [typestrict.ai](https://typestrict.ai): it is the default base of every new training.
- **Typed decisions**: `choice` (one option out of many), `noul` (is this statement true) and `score` (a value on an ordered rubric), each with the probability of every option and a confidence.
- **Small and fast**: 150M parameters, English and Portuguese, 8,192 tokens of context, with ONNX files that run on a CPU.
- **Open**: Apache-2.0 weights, trained only on data whose license allows it (listed below).
- **The base of every typestrict model**: send your data to [typestrict.ai](https://typestrict.ai) and get a model that answers your own question, measured against Jev on your held-out examples.
<p align="center">
<img src="https://huggingface.co/typestrict/TS-moBERTo-150M/resolve/main/figures/decision-index.png" width="100%" alt="Decision Index 0.3 of the TS models">
</p>
## 🧭 The TS family
Every TS model follows the same recipe on the same data, so trying another one is a new version of the same training.
<div class="dark:hidden" style="overflow-x:auto;">
<table align="center" style="display:table;width:auto;max-width:100%;margin-left:auto;margin-right:auto;border-collapse:collapse;">
<thead><tr><th scope="col" style="padding:12px;text-align:left;background:#1A1806;color:#FFD400;">Model</th><th scope="col" style="padding:12px;text-align:center;background:#1A1806;color:#FFD400;">Size</th><th scope="col" style="padding:12px;text-align:center;background:#1A1806;color:#FFD400;">Languages</th><th scope="col" style="padding:12px;text-align:center;background:#1A1806;color:#FFD400;">On typestrict.ai</th></tr></thead>
<tbody>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:700;background:#FFE766;"><a href="https://huggingface.co/typestrict/TS-moBERTo-150M">TS-moBERTo-150M</a></th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:700;background:#FFE766;">150M</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:700;background:#FFE766;">English and Portuguese</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:700;background:#FFE766;">Available, recommended</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;"><a href="https://huggingface.co/typestrict/TS-Ettin-150M">TS-Ettin-150M</a></th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">150M</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">English</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Available</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;"><a href="https://huggingface.co/typestrict/TS-Ettin-68M">TS-Ettin-68M</a></th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">68M</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">English</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Available</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;"><a href="https://huggingface.co/typestrict/TS-Ettin-32M">TS-Ettin-32M</a></th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">32M</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">English</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Available</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;"><a href="https://huggingface.co/typestrict/TS-Ettin-17M">TS-Ettin-17M</a></th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">17M</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">English</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Available</td></tr>
</tbody>
</table>
</div>
<div class="hidden dark:block" style="overflow-x:auto;">
<table align="center" style="display:table;width:auto;max-width:100%;margin-left:auto;margin-right:auto;border-collapse:collapse;">
<thead><tr><th scope="col" style="padding:12px;text-align:left;background:#FFD400;color:#1A1806;">Model</th><th scope="col" style="padding:12px;text-align:center;background:#FFD400;color:#1A1806;">Size</th><th scope="col" style="padding:12px;text-align:center;background:#FFD400;color:#1A1806;">Languages</th><th scope="col" style="padding:12px;text-align:center;background:#FFD400;color:#1A1806;">On typestrict.ai</th></tr></thead>
<tbody>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#FFD400;font-weight:700;background:#3D3300;"><a href="https://huggingface.co/typestrict/TS-moBERTo-150M">TS-moBERTo-150M</a></th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#FFD400;font-weight:700;background:#3D3300;">150M</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#FFD400;font-weight:700;background:#3D3300;">English and Portuguese</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#FFD400;font-weight:700;background:#3D3300;">Available, recommended</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;"><a href="https://huggingface.co/typestrict/TS-Ettin-150M">TS-Ettin-150M</a></th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">150M</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">English</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Available</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;"><a href="https://huggingface.co/typestrict/TS-Ettin-68M">TS-Ettin-68M</a></th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">68M</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">English</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Available</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;"><a href="https://huggingface.co/typestrict/TS-Ettin-32M">TS-Ettin-32M</a></th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">32M</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">English</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Available</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;"><a href="https://huggingface.co/typestrict/TS-Ettin-17M">TS-Ettin-17M</a></th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">17M</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">English</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Available</td></tr>
</tbody>
</table>
</div>
## 📊 Results
### Decision Index 0.3
The public index of the [Decision Index](https://github.com/apolinario/decision-index) 0.3, in our lab's run: the encoder alone, then with the code and calculator experts that ship with [TS-moBERTo-150M](https://huggingface.co/typestrict/TS-moBERTo-150M). Measured on public benchmarks, not on your task: a model trained on typestrict is measured on your own examples.
<div class="dark:hidden" style="overflow-x:auto;">
<table align="center" style="display:table;width:auto;max-width:100%;margin-left:auto;margin-right:auto;border-collapse:collapse;">
<thead><tr><th scope="col" style="padding:12px;text-align:left;background:#1A1806;color:#FFD400;">Model</th><th scope="col" style="padding:12px;text-align:center;background:#1A1806;color:#FFD400;">Encoder alone</th><th scope="col" style="padding:12px;text-align:center;background:#1A1806;color:#FFD400;">With code and calculator experts</th></tr></thead>
<tbody>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:700;background:#FFE766;">TS-moBERTo-150M</th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:700;background:#FFE766;">31.20</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:700;background:#FFE766;">33.89</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">TS-Ettin-150M</th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">31.96</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">34.78</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">TS-Ettin-68M</th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">27.61</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">30.46</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">TS-Ettin-32M</th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">19.70</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">22.45</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">TS-Ettin-17M</th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">15.76</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">18.52</td></tr>
</tbody>
</table>
</div>
<div class="hidden dark:block" style="overflow-x:auto;">
<table align="center" style="display:table;width:auto;max-width:100%;margin-left:auto;margin-right:auto;border-collapse:collapse;">
<thead><tr><th scope="col" style="padding:12px;text-align:left;background:#FFD400;color:#1A1806;">Model</th><th scope="col" style="padding:12px;text-align:center;background:#FFD400;color:#1A1806;">Encoder alone</th><th scope="col" style="padding:12px;text-align:center;background:#FFD400;color:#1A1806;">With code and calculator experts</th></tr></thead>
<tbody>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#FFD400;font-weight:700;background:#3D3300;">TS-moBERTo-150M</th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#FFD400;font-weight:700;background:#3D3300;">31.20</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#FFD400;font-weight:700;background:#3D3300;">33.89</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">TS-Ettin-150M</th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">31.96</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">34.78</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">TS-Ettin-68M</th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">27.61</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">30.46</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">TS-Ettin-32M</th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">19.70</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">22.45</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">TS-Ettin-17M</th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">15.76</td><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">18.52</td></tr>
</tbody>
</table>
</div>
The official run of the Decision Index kit on this model, published as [Dinah-1](https://huggingface.co/Lukitaduarte/dinah-1), scored **34.32**, with the raw results open for auditing in [Lukitaduarte/dinah-1-decision-index-results](https://huggingface.co/datasets/Lukitaduarte/dinah-1-decision-index-results).
### Held-out typed decisions
Held-out sets of 1,000 items each, accuracy:
<div class="dark:hidden" style="overflow-x:auto;">
<table align="center" style="display:table;width:auto;max-width:100%;margin-left:auto;margin-right:auto;border-collapse:collapse;">
<thead><tr><th scope="col" style="padding:12px;text-align:left;background:#1A1806;color:#FFD400;">Set</th><th scope="col" style="padding:12px;text-align:center;background:#1A1806;color:#FFD400;">Accuracy</th></tr></thead>
<tbody>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Typed decisions, English</th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">0.790</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Typed decisions, Portuguese</th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">0.780</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Chess puzzles</th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">0.585</td></tr>
</tbody>
</table>
</div>
<div class="hidden dark:block" style="overflow-x:auto;">
<table align="center" style="display:table;width:auto;max-width:100%;margin-left:auto;margin-right:auto;border-collapse:collapse;">
<thead><tr><th scope="col" style="padding:12px;text-align:left;background:#FFD400;color:#1A1806;">Set</th><th scope="col" style="padding:12px;text-align:center;background:#FFD400;color:#1A1806;">Accuracy</th></tr></thead>
<tbody>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Typed decisions, English</th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">0.790</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Typed decisions, Portuguese</th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">0.780</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Chess puzzles</th><td style="padding:10px 12px;text-align:center;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">0.585</td></tr>
</tbody>
</table>
</div>
## 🏃 Quickstart
The inference code ships in this repository (`dinah.py`). On a CPU, with the int8 ONNX file:
```bash
pip install huggingface_hub onnxruntime transformers numpy
```
```python
import importlib.util
from huggingface_hub import hf_hub_download
REPO = "typestrict/TS-moBERTo-150M"
spec = importlib.util.spec_from_file_location("dinah", hf_hub_download(REPO, "dinah.py"))
dinah = importlib.util.module_from_spec(spec)
spec.loader.exec_module(dinah)
model = dinah.DinahONNX.from_pretrained(REPO) # or dinah.Dinah for PyTorch
print(model.choice(
state="My card still has not arrived. How can I track the delivery?",
criteria={
"payment": "A problem with a payment or a charge",
"card_delivery": "Delivery or shipping of the card",
"cancel": "Cancel the card or the account",
},
instructions="What is the customer's message about?",
))
# What this model answers here: "card_delivery", probability 0.999, confidence 0.979
```
`noul` and `score` work the same way (`model.noul(...)`, `model.score(...)`); `model.predict([...])` answers a batch. This is the base model, before any training on your data: for your own decision, train it on [typestrict.ai](https://typestrict.ai).
## 🗂️ History
- Published on 2026-10-14 as [Dinah-1](https://huggingface.co/Lukitaduarte/dinah-1) (revision `b518a5e7`), renamed TS-moBERTo-150M on 2026-10-19.
- The weights are identical: the same SHA-256 for the encoder, the calculator expert and both ONNX files. Nothing was retrained.
- The results published for Dinah-1, such as the official Decision Index run (34.32), apply to this model.
- Use `typestrict/TS-moBERTo-150M` in new projects; the Dinah-1 repository stays online for citations and existing integrations.
## 🚀 Train your own on typestrict.ai
<p align="center">
<a href="https://typestrict.ai"><img src="https://huggingface.co/typestrict/TS-moBERTo-150M/resolve/main/figures/train-on-typestrict.png" width="100%" alt="Train a decision model on your data with typestrict.ai"></a>
</p>
TS-moBERTo-150M is a base: it already reads language and makes typed decisions. On [typestrict.ai](https://typestrict.ai) it learns **your** decision (your queues, teams, products, intents) from your data, and the result is measured against Jev, the market reference model, on examples held out from training. If it does not beat Jev, the credit comes back.
**In the web app**: upload a spreadsheet, a folder of documents or a public dataset at [typestrict.ai](https://typestrict.ai), review what the agent proposes, and train.
**From your AI assistant** (ChatGPT, Claude, Cursor, Codex, Copilot and others), with the remote MCP server:
```bash
claude mcp add --transport http typestrict https://api.typestrict.ai/mcp
```
**From a terminal or CI**, with the [typestrict CLI](https://github.com/typestrict-lab/cli):
```bash
curl -fsSL https://typestrict.ai/install.sh | sh && typestrict login
typestrict train tickets.csv --goal "Which team handles the ticket?" --base ts-moberto-150m --watch
```
The trained model comes as a small package (`decision_ai.json`, `tokenizer.json`, `onnx/model_8bit.onnx`) that runs on your own servers, in a container, or inside a Flutter app with [decision_ai](https://pub.dev/packages/decision_ai). Setup for every assistant: [docs.typestrict.ai/agents](https://docs.typestrict.ai/agents).
## 🗒️ Model details
<div class="dark:hidden" style="overflow-x:auto;">
<table align="center" style="display:table;width:auto;max-width:100%;margin-left:auto;margin-right:auto;border-collapse:collapse;">
<thead><tr><th scope="col" style="padding:12px;text-align:left;background:#1A1806;color:#FFD400;">Property</th><th scope="col" style="padding:12px;text-align:left;background:#1A1806;color:#FFD400;">TS-moBERTo-150M</th></tr></thead>
<tbody>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Parameters</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">150M</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Architecture</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Bidirectional encoder with a typed-decision head</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Starts from</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;"><a href="https://huggingface.co/Tropic-AI/moBERTo-orig-tokenizer">moBERTo</a> (Apache-2.0)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Languages</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">English and Portuguese</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Context length</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">8,192 tokens (longer examples are refused, never cut)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Question types</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;"><code>choice</code>, <code>noul</code>, <code>score</code>, with probabilities and a confidence</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Runs on</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">CPU (ONNX) or GPU (PyTorch)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">typestrict id</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;"><code>ts-moberto-150m</code></td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">License</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Apache-2.0</td></tr>
</tbody>
</table>
</div>
<div class="hidden dark:block" style="overflow-x:auto;">
<table align="center" style="display:table;width:auto;max-width:100%;margin-left:auto;margin-right:auto;border-collapse:collapse;">
<thead><tr><th scope="col" style="padding:12px;text-align:left;background:#FFD400;color:#1A1806;">Property</th><th scope="col" style="padding:12px;text-align:left;background:#FFD400;color:#1A1806;">TS-moBERTo-150M</th></tr></thead>
<tbody>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Parameters</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">150M</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Architecture</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Bidirectional encoder with a typed-decision head</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Starts from</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;"><a href="https://huggingface.co/Tropic-AI/moBERTo-orig-tokenizer">moBERTo</a> (Apache-2.0)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Languages</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">English and Portuguese</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Context length</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">8,192 tokens (longer examples are refused, never cut)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Question types</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;"><code>choice</code>, <code>noul</code>, <code>score</code>, with probabilities and a confidence</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Runs on</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">CPU (ONNX) or GPU (PyTorch)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">typestrict id</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;"><code>ts-moberto-150m</code></td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">License</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Apache-2.0</td></tr>
</tbody>
</table>
</div>
## 📚 Training data
Two stages (2,048 tokens, then 8,192) and an average of both, on the same mixture for every TS model. Each source with the license its own card declares; sources under CC BY-SA and CDLA-Sharing are used for training only and are not redistributed. The training blocks were checked against the Decision Index's public test rows (exact and near-duplicate removal, and 8-gram overlap for the newest blocks).
<div class="dark:hidden" style="overflow-x:auto;">
<table align="center" style="display:table;width:auto;max-width:100%;margin-left:auto;margin-right:auto;border-collapse:collapse;">
<thead><tr><th scope="col" style="padding:12px;text-align:left;background:#1A1806;color:#FFD400;">Area</th><th scope="col" style="padding:12px;text-align:left;background:#1A1806;color:#FFD400;">Sources</th></tr></thead>
<tbody>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Typed decisions</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">ZefanCai/Open-Jev (CC0-1.0), LocalLLaMA/typed-decisions (Apache-2.0), typed-decisions-pt translated with Qwen3-4B (Apache-2.0), tasksource/procedural-typed-decisions (Apache-2.0)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Intents and customer support</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">AmazonScience/massive (CC BY 4.0), Bitext customer support (CDLA-Sharing-1.0), BANKING77 (CC BY 4.0), CLINC150 (CC BY 3.0), FAQ_BACEN (Apache-2.0)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Inference and fact checking</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">WANLI (CC BY 4.0), SNLI (CC BY-SA 4.0), HoVer (CC BY-SA 4.0), FEVER-NLI (MIT; FEVER and Wikipedia CC BY-SA 3.0), ContractNLI (CC BY 4.0), bAbI-NLI (BSD), FaQuAD-NLI (CC BY 4.0), ExtraGLUE RTE and COPA in Portuguese (MIT)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Reasoning and knowledge</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">CommonsenseQA (MIT), Cosmos QA (CC BY 4.0), BoolQ (CC BY-SA 3.0), HellaSwag (MIT), WinoGrande (Apache-2.0), ARC train split (CC BY-SA 4.0), QASC (CC BY 4.0), StrategyQA (MIT), BIG-bench tasks without BBH (Apache-2.0), MMLU auxiliary train, ARC and OpenBookQA parts (MIT), GSM8K (MIT), CLadder (MIT)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Health, finance and law</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">PubMedQA (MIT), MedMCQA (Apache-2.0), twitter-financial-news-sentiment (MIT), financial-tweets-sentiment (MIT), NOSIBLE financial-sentiment (ODC-By), FinQA hallucination detection (MIT), pyRis/SEntFiN (MIT), CUAD (CC BY 4.0), jurisprudencias_br (CC BY 4.0), IBM Claim Stance (CC BY 3.0)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Sentiment, emotion and moderation</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">GoEmotions (Apache-2.0), Civil Comments (CC0-1.0), iSarcasmEval (MIT), B2W-Reviews01 (CC BY 4.0), multilingual-sentiments in Portuguese (Apache-2.0)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Retrieval and hallucination</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">ESCI (Apache-2.0), HaluEval (Apache-2.0), RAGTruth (MIT), CNN/DailyMail (Apache-2.0), SQuAD 2.0 (CC BY-SA 4.0)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Tools</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">glaive-function-calling-v2 (Apache-2.0), ToolACE (Apache-2.0), hermes-function-calling-v1 (Apache-2.0), nvidia/When2Call (CC BY 4.0)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Phishing</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">LLMGen-Phishing-Email-Dataset (Apache-2.0), aura-phishing-email-corpus, SpamAssassin part (CC BY 4.0)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Chess</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Lichess puzzles (CC0-1.0), google-deepmind/searchless_chess (Apache-2.0)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Humor</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">newyorker_caption_contest, matching task (CC BY 4.0)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">Made by us</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #E8E2C0;color:#1A1806;font-weight:400;">English to Portuguese translations with opus-mt-tc-big-en-pt (CC BY 4.0); synthetic phishing emails written with gpt-oss-120b, labels set by code (Apache-2.0); synthetic home-appliance households, RAG hallucination examples and programmatic skills (arithmetic, dates, units, sorting, graphs, code output), generated by our scripts (MIT and Apache-2.0)</td></tr>
</tbody>
</table>
</div>
<div class="hidden dark:block" style="overflow-x:auto;">
<table align="center" style="display:table;width:auto;max-width:100%;margin-left:auto;margin-right:auto;border-collapse:collapse;">
<thead><tr><th scope="col" style="padding:12px;text-align:left;background:#FFD400;color:#1A1806;">Area</th><th scope="col" style="padding:12px;text-align:left;background:#FFD400;color:#1A1806;">Sources</th></tr></thead>
<tbody>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Typed decisions</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">ZefanCai/Open-Jev (CC0-1.0), LocalLLaMA/typed-decisions (Apache-2.0), typed-decisions-pt translated with Qwen3-4B (Apache-2.0), tasksource/procedural-typed-decisions (Apache-2.0)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Intents and customer support</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">AmazonScience/massive (CC BY 4.0), Bitext customer support (CDLA-Sharing-1.0), BANKING77 (CC BY 4.0), CLINC150 (CC BY 3.0), FAQ_BACEN (Apache-2.0)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Inference and fact checking</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">WANLI (CC BY 4.0), SNLI (CC BY-SA 4.0), HoVer (CC BY-SA 4.0), FEVER-NLI (MIT; FEVER and Wikipedia CC BY-SA 3.0), ContractNLI (CC BY 4.0), bAbI-NLI (BSD), FaQuAD-NLI (CC BY 4.0), ExtraGLUE RTE and COPA in Portuguese (MIT)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Reasoning and knowledge</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">CommonsenseQA (MIT), Cosmos QA (CC BY 4.0), BoolQ (CC BY-SA 3.0), HellaSwag (MIT), WinoGrande (Apache-2.0), ARC train split (CC BY-SA 4.0), QASC (CC BY 4.0), StrategyQA (MIT), BIG-bench tasks without BBH (Apache-2.0), MMLU auxiliary train, ARC and OpenBookQA parts (MIT), GSM8K (MIT), CLadder (MIT)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Health, finance and law</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">PubMedQA (MIT), MedMCQA (Apache-2.0), twitter-financial-news-sentiment (MIT), financial-tweets-sentiment (MIT), NOSIBLE financial-sentiment (ODC-By), FinQA hallucination detection (MIT), pyRis/SEntFiN (MIT), CUAD (CC BY 4.0), jurisprudencias_br (CC BY 4.0), IBM Claim Stance (CC BY 3.0)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Sentiment, emotion and moderation</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">GoEmotions (Apache-2.0), Civil Comments (CC0-1.0), iSarcasmEval (MIT), B2W-Reviews01 (CC BY 4.0), multilingual-sentiments in Portuguese (Apache-2.0)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Retrieval and hallucination</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">ESCI (Apache-2.0), HaluEval (Apache-2.0), RAGTruth (MIT), CNN/DailyMail (Apache-2.0), SQuAD 2.0 (CC BY-SA 4.0)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Tools</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">glaive-function-calling-v2 (Apache-2.0), ToolACE (Apache-2.0), hermes-function-calling-v1 (Apache-2.0), nvidia/When2Call (CC BY 4.0)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Phishing</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">LLMGen-Phishing-Email-Dataset (Apache-2.0), aura-phishing-email-corpus, SpamAssassin part (CC BY 4.0)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Chess</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Lichess puzzles (CC0-1.0), google-deepmind/searchless_chess (Apache-2.0)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Humor</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">newyorker_caption_contest, matching task (CC BY 4.0)</td></tr>
<tr><th scope="row" style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">Made by us</th><td style="padding:10px 12px;text-align:left;border-bottom:1px solid #2E2B14;color:#E8E4CF;font-weight:400;">English to Portuguese translations with opus-mt-tc-big-en-pt (CC BY 4.0); synthetic phishing emails written with gpt-oss-120b, labels set by code (Apache-2.0); synthetic home-appliance households, RAG hallucination examples and programmatic skills (arithmetic, dates, units, sorting, graphs, code output), generated by our scripts (MIT and Apache-2.0)</td></tr>
</tbody>
</table>
</div>
## Links
- **typestrict.ai**: [typestrict.ai](https://typestrict.ai), the docs at [docs.typestrict.ai](https://docs.typestrict.ai) (for assistants: [llms-full.txt](https://docs.typestrict.ai/llms-full.txt))
- **Open source**: [CLI and MCP server](https://github.com/typestrict-lab/cli), [skills for AI assistants](https://github.com/typestrict-lab/skills), [decision_ai for Flutter](https://pub.dev/packages/decision_ai)
- **Contact**: [typestrict.ai/contact](https://typestrict.ai/contact)
## Citation
```bibtex
@misc{typestrict2026tsmoberto150m,
author = {{typestrict.ai}},
title = {TS-moBERTo-150M: a typed-decision encoder},
year = {2026},
url = {https://huggingface.co/typestrict/TS-moBERTo-150M}
}
```
|