The model in this demo never decides anything. It reads an entity's record and answers a few narrow questions in a closed vocabulary; PingAuthorize decides, on the bank's rules and purpose map. That shape suits a small model, and it suits a newer kind of model even better: one that answers typed questions with probabilities instead of writing text.
The demo runs a small open model, Ministral 3B, through Ollama, inside the private network. This page sets out what the model has to do, and how a typed decision model, TypeSafe AI's Jev, would do the same jobs. Jev is in early access and was not available to this demo when the page was written, so nothing here has been run on it; its figures are the vendor's, and are marked as such. The adapter is built and waits on access.
1What the model has to do
Four jobs, all with a fixed set of answers. The rules read the answers; the model never sees the task it is judged for, only the words.
Place the record
Which BIAN Service Domain and operation its words describe, out of the 31 Service Domains in play, or "unclear". This is where the ontology does the work: the vocabulary is closed, so the answer is a code, not an opinion.
Say whom it serves
The customer, the bank, or other organisations. Data going out to partners, brokers or agencies is the one that matters, and it must be shown in the words.
Point at what gives it away
An activity the codes don't declare, use for other organisations, or text aimed at the checker: each with the words that show it. A claim the words don't support is dropped.
Answer two questions on fit
Outside the purpose map only: would the origin's task need this, and does it serve another purpose? The model may deny; it can never permit. Unsure is held for the customer.
2Two ways to do it
The same four jobs, done by the model the demo runs today and by a typed decision model. measured means measured on this demo's own small evaluation set, on a laptop; vendor means taken from TypeSafe's published documentation.
| Small open model: what runs today | Typed decision model: Jev | |
|---|---|---|
| What it is | Ministral 3B, open weights, run with Ollama beside the policy engine and the federation's resolver. | Jev 1.13, TypeSafe AI's first "System One" model: closed weights, served from their API, in early access.vendor |
| How it answers | Generates JSON to a schema, at temperature zero with a fixed seed. Two prompts: read one record; compare two profiles. | Typed questions with no generated text: a Choice from a set of options, a Score on ordered levels, or a Noul, a yes/no. Every option gets a probability and every answer a confidence.vendor |
| The BIAN vocabulary | An enum of the 31 Service Domains in the output schema, with a glossary and worked examples in the prompt. | A Choice with each Service Domain as an option and its one-line definition as the option's description. Up to 255 options per question, so the full BIAN landscape would be a two-level choice: business area, then domain.vendor |
| Evidence | Quotes the words. A quote that is not really in the record, or is a paraphrase, is dropped by a near-verbatim check. | Picks the numbered sentence that shows it. Verbatim by construction: there is nothing to check. |
| When it is unsure | An "unclear" answer is held, and so is a yes whose own reason argues against it. | A low confidence, or a probability spread flat across options, is held. The threshold is a policy setting, not a prompt. |
| Speed | A warm read takes about 1.7 s and a comparison about 1.1 s on a laptop; slower on a CPU-only host, which is why the demo warms its caches.measured | 70 ms to 500 ms end to end, with many questions answered in one request.vendor |
| Where the words go | Nowhere. The model runs inside the private network. | To TypeSafe's API. In this design that is public federation metadata: entity records, never customer data. TypeSafe publishes a data processing agreement, a commitment not to train on customer data, and zero data retention for enterprise customers.vendor |
| Cost | A CPU service, or a GPU for speed. | US$0.042 per million input tokens; output tokens are free.vendor |
| Reproducibility | The model's content digest is pinned and logged; the evaluation set got the same answer on every run.measured | Versioned model identifiers, such as jev-1.13.0; the vendor says similar inputs get similar answers.vendor |
| Known weak spots | Open-ended judgements of fit, which is why fit comes from the bank's purpose map; and sensitivity to how a summary is worded.measured | Reads instructions literally; no arithmetic or counting; adversarial content in the state; English first. The pre-screen for text aimed at the checker stays either way.vendor |
3One request, typed answers
With a typed model the record is the state and the jobs are questions, all asked at once. The record's sentences are numbered in code, so evidence is a sentence number rather than a quote.
Scroll sideways to see the whole diagram.
{
"state": {
"declared": ["Initiate Payment Order Initiation",
"Execute Payment Rail"],
"sentences": {
"1": "Get each bill payment to the biller by
the fastest safe route.",
"2": "Routes customers' bill payments to the
fastest available payment rail and
confirms settlement.",
"3": "Fast, reliable routing for bill payments."
}
},
"questions": {
"service_domain": {
"type": "choice",
"criteria": {
"Payment Rail": "Moves payments over a scheme
or network: routing, clearing, settlement.",
"Payment Order Initiation": "Sets up and
submits a customer's payment order.",
… 29 more Service Domains, each defined
"unclear": "Too vague or too broad to place."
}
},
"third_party_evidence": {
"type": "choice",
"instructions": "Which sentence shows data
going out to other organisations?",
"criteria": { "1": null, "2": null, "3": null,
"none": null }
},
"too_broad": { "type": "noul",
"instructions": "Does it claim it can do any task?" }
}
}
- IllustrativeThis is the shape of a request in TypeSafe's published API, not a request that has been run. The definitions shown are shortened.
- The same catalogueThe 31 Service Domains, their operations and the one-line definitions are the demo's BIAN catalogue, unchanged. Only the adapter between the judge and the model changes.
- Evidence by sentence"Which sentence shows it?" with "none" as an option replaces "quote the words". The answer is a sentence number, so it is in the record by construction.
- Hold by confidenceThe demo holds an entity when the model's answer is "unclear" or contradicts its own reason. With probabilities, the hold is a threshold the bank sets: a Choice whose top option is under, say, 0.7, or a yes/no near 0.5, is held.
4What would change, and what would not
Would change
- The adapter behind the judge: prompts become question maps, and the model's prose reasons become probabilities and chosen sentences. That adapter now exists in the demo, tested against a stand-in for the API; switching to it is a configuration change, once an API key is in place.
- Where the words go. For that mode, the record leaves the network for TypeSafe's API; the entity records are public federation metadata, so nothing about a customer does.
- The hold rule: a confidence threshold in policy instead of rules reading the model's text.
- Speed, if the vendor's figures hold: a read in well under a second, without the warm-up the CPU-only model needs.
Would not
- Who decides: PingAuthorize, on the bank's rules and purpose map.
- The federation: the BIAN-coded records, the vouched mission and purpose statement, and the
describespolicy the resolver applies. The resolver would call the model the same way. - The model may deny, never permit; outside the map, unsure is held.
- The pre-screen for text aimed at the checker, which runs before any model.
- The evaluation: the same records and pairs, run on both, before either number is quoted.
5What this page does not claim
- Jev has not been run on this demo's records. Every figure for it is the vendor's, from their documentation on the date this page was written, and may change.
- The demo's own figures come from 18 records and 15 origin-and-candidate pairs, written by the same people as the prompts and the purpose map. They show the mechanism works; they are not an error rate. That needs a larger, blind-labelled set.
- A calibrated probability is still a model's opinion. A threshold decides how much doubt to tolerate; it does not make the reading right.
- The BIAN definitions used as option descriptions are this demo's own one-line summaries of BIAN v14.0.0 Service Domains, not BIAN's text.
6Sources
- Introducing System One models and Jev, TypeSafe AI
- Choice, Noul and Confidence, TypeSafe docs
- Models: price, rate limits, context length; API reference
- Jev 1.13 jaggedness: the vendor's own list of weak spots
- Legal: data processing, no training on customer data, zero data retention
- BIAN Service Landscape v14.0.0
- Ollama, which runs the demo's model

