Typed-decision model · Russian

Decisions, not text

An open Russian decision model. It returns a choice, a yes or no, or a score on a scale, with calibrated confidence. MIT licensed, runs on CPU inside your perimeter.

82%Accuracy, Russian
0.018Calibration ECE
307Mparameters, on CPU
Ru-Jev · decision
score
Great service, fast, highly recommend.
Sentiment on a 0..2 scale
positive1.82

Three decision types

One model, three answer shapes

  • boolean

    Yes or no

    Probability of true for a question about the text. You set the threshold.

    is the text toxic?
    → yes  0.85
  • choice

    Choice

    One option from a defined set, with a probability for each.

    billing / support
    → billing  0.79
  • score

    Score

    A value on an ordered scale, with a distribution over levels.

    sentiment 0..2
    → 1.82

How it works

Three steps to a decision

  1. 01

    Request

    You send the text and a question with options. The text stays inside your perimeter.

    state: "Great service, fast"
    questions: { sentiment }
  2. 02

    Decision on CPU

    A compact encoder computes the answer on a plain CPU, with no GPU and no external API.

    encoder 307M · MIT
    25 ms on CPU
  3. 03

    Confidence

    You get the option and its probability. Confident cases go through automatically, uncertain ones go to a human.

    score: 1.97
    confidence: 0.98

Drop-in compatible

Same request format. Only the address changes

The service runs on your own host. An app built for a closed decision model switches to Ru-Jev by changing the base URL.

uvicorn serve.app:app --port 8080

POST http://localhost:8080/v1/systemone

{
  "model": "ru-jev-latest",
  "state": "Отличный сервис, всё быстро, рекомендую.",
  "questions": {
    "ton": {
      "type": "score",
      "criteria": ["негативный", "нейтральный", "позитивный"]
    }
  }
}

Full reference: every field, the three question types, confidence thresholds and error codes

{
  "answers": {
    "ton": {
      "type": "score",
      "score": 1.97,
      "probabilities": { "0": 0.008, "1": 0.009, "2": 0.982 }
    }
  },
  "providerMetadata": { "ru_jev": { "confidence": { "ton": 0.982 } } }
}

Why on-prem

Where a closed API cannot go

Closed decision models run only through an external API from the US. A bank or a government office cannot send data there. Ru-Jev installs inside the perimeter.

  • Open and commercial. Weights under MIT. Embed it in a product and deploy on-prem without restrictions.
  • On CPU. A compact encoder, no GPU needed. A short decision takes 25 ms on an Apple M4 with four threads.
  • Calibrated. A confidence on every decision. Review load drops without losing control.
  • Russian first. Benchmark and training in Russian, the multilingual base also handles other languages.

How you name the options

Name the options in your own words

The model reads the option text rather than a label it memorised. Below is the same thousand routing questions and the same eighteen categories every time. Only the wording changes. Each question offers five candidates out of the eighteen categories; the right column is the same measure with all eighteen in the question.

of 5of 18
English keyweather · training style
0.962
0.900
Russian wordпогода · training style
0.960
0.892
Descriptive sentencecheck tomorrow's forecast
0.958
0.878
Russian phraseпрогноз погоды
0.957
0.885
Department nameметеослужба
0.869
0.733
Jargonвэзер
0.855
0.640

A dot marks wordings that appear in no training mix. The English key and the Russian word are here as controls. They are training styles, all eighteen of their labels occur in training verbatim, and there is nowhere for them to move. Three of the eighteen jargon names coincide with what the transliteration rule produces and reach training as a first word. On the fifteen that do not, which is the honest measure of generalisation, the figure is 0.838 out of five candidates and 0.595 out of eighteen. The department names have no exact match in training; 2 of the 18 labels have a prefix relation.

Jargon the model never saw

v1.1one answer in three is wrong
0.624
v1.3fifteen categories, unfamiliar words
0.838

The earlier version had learned the exact wordings its training data used. Rename a category and it started getting the answer wrong while staying confident. Across all eighteen jargon names it reported 0.754 mean confidence against 0.633 accuracy, a gap of 0.121. Every fixed option set now ships in several wordings, so the model has to read an option instead of recognising it, and the gap is down to 0.030.

Confidence threshold

Decide how much goes through without a person

A calibrated probability is worth something only if you act on it. Set a threshold: anything above it goes through, the rest goes to a human. Move the slider.

80% answered automaticallyto a human 20%

Measured on the v1.3 validation split, 13,373 decisions. The temperature was fitted on the other half, so this is what to expect on new data of the same kind rather than a fit to these rows.

0.892Accuracy on those answered
108Errors per 1000 decisions

Questions

The essentials

Is this a fork of Jev?

No. Jev's weights are closed and its terms forbid training on its outputs. Ru-Jev is trained independently on open, human-labelled datasets: the scoring head from random initialisation, the mmBERT-base backbone fine-tuned with it. It is not affiliated with TypeSafe AI.

Does it really run on CPU?

Yes. At its core is a compact encoder of 307 million parameters, not a large language model. Measured on an Apple M4 with four threads: 25 ms for a short request, 31 ms for a choice of three, 131 ms for a full 256-token context. A server CPU will give different figures.

Can it be used commercially?

Yes. MIT licensed. The training data is chosen to permit commercial use and on-prem deployment.

Paper

How to cite

The preprint sets out which label wordings the augmentation helps with and which it does not. The code, the per-row scores and the scripts are archived separately, under a DOI of their own.

arXiv:2611.08439 · preprint
10.5281/zenodo.23986846 · code archive, always the latest version

@misc{beskorovainyi2026rujev,
  title         = {Label-Wording Augmentation in a Typed-Decision Encoder: Gains on Unfamiliar Words, Not on Abbreviations or Codes},
  author        = {Beskorovainyi, Vladimir},
  year          = {2026},
  eprint        = {2611.08439},
  archivePrefix = {arXiv},
  primaryClass  = {cs.CL},
  url           = {https://arxiv.org/abs/2611.08439}
}

@software{beskorovainyi2026rujevcode,
  title     = {Ru-Jev: open typed-decision model (v1.3) — code, per-row results and evaluation scripts},
  author    = {Beskorovainyi, Vladimir},
  year      = {2026},
  version   = {1.3.0},
  publisher = {Zenodo},
  doi       = {10.5281/zenodo.23986846},
  url       = {https://doi.org/10.5281/zenodo.23986846}
}

This DOI always resolves to the latest version of the code. Cite 10.5281/zenodo.23986847 for the exact version behind the paper.

Put a Russian decision model inside your own perimeter