TS-moBERTo-150M / README.md
Lukitaduarte's picture
Card: every TS model trains on typestrict.ai
3dd1fad verified
|
Raw History Blame Contribute Delete
40.5 kB
---
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}
}
```