---
title: "Jev in practice: tested for Penny, used in Twine"
description: "A look behind the scenes: how we tested Jev for our accounting
  agent Penny and now use it to send tasks in Twine to the right agent."
lang: en
canonical: https://www.en-twine.ai/en/blog/jev-in-practice-penny-twine/
updated: 2026-10-03T12:50:49.000Z
---
When we received early access to Jev, TypeSafe AI's judgement model (in Dutch: beslissingsmodel), we soon started brainstorming what this model could do. We looked for the small decisions we currently hand to a large language model unnecessarily.

We first tested Jev for our internal accounting agent Penny. We then built the model into Twine, our general business agent, as a router. That router sends tasks to the right agent. The two applications may seem different, but they revolve around the same question: can a model quickly choose from a fixed list and indicate when it is not confident enough?

The main lesson: the model only works when the list of options, the route for uncertain cases and the safety boundaries are defined in advance.

## First, testing with our accounting agent

In our design for Penny, accounting work consists of several steps. The agent reads a document, identifies the data and assembles a proposed accounting entry. That proposal combines several kinds of work. Reading amounts and writing an explanation are outside Jev's scope and remain with other parts of the agent. Choosing a general ledger account, VAT treatment or category is much more constrained.

For our test, Jev received the text of a purchase invoice, the relevant accounting rules and a fixed list of permitted answers for each decision. It chose an answer and returned a confidence score alongside it.

Above all, that setup produced a useful division of work. In the test, Jev handled the clearly defined choices. Other parts remained with a language model, fixed checks or a person. Fixed checks determine which proposals may proceed. Jev can never approve or post an accounting entry itself.

The practical lesson: a fast judgement model is useful when the list of options is right, the confidence score determines a real next step, and a language model or employee takes over as soon as the choice is not clear enough.

## Next, Twine's front door

Twine receives all kinds of tasks through Slack. One request calls for research, the next for code, a third for content to publish and a fourth for a brief internal action. Before work can begin, Twine therefore has to make two choices: which type of agent gets the task, and how much reasoning is needed?

Those are precisely the choices we now use Jev for. The model chooses one type of agent, such as research, code, content or general work. It also chooses a level: quick, standard or in-depth. The result consists of a route and a confidence score.

With sufficient confidence, the task goes straight to the chosen agent. If the score is too low, the task is unclear or no usable result comes back, the existing route through a language model takes over. Twine can then still ask for clarification.

The router only determines where the work starts. It grants no extra permissions and cannot bypass safety boundaries. The models, tools and permissions assigned to each type of agent remain defined in ordinary configuration. We also store the route choice and confidence score so we can later see where Jev chose incorrectly and refine the instructions.

## The list of options is a design decision

The hardest design questions concerned the list of options. Is content a separate type of agent or part of general work? When is a task in-depth? What happens to a request that calls for research first and code afterwards?

A judgement model forces you to define those choices in advance. For Twine, we therefore chose the immediate next step. A task such as "research this and then build it" goes to research first. Only when that work comes back is the build step assigned to the right agent.

The confidence score also needs to be translated into process rules. You need a threshold, a route for uncertain cases and a way to trace incorrect choices. Without those three elements, uncertainty simply moves to another part of the process.

## Where Jev stops, and what we plan next

Jev only chooses within the boundaries we have defined in advance. A language model writes the response to the user and handles the broader context. In the design for Penny, Jev never grants financial approval. In Twine, permissions and available tools are determined separately from the router.

Those clear boundaries are precisely what makes Jev suitable for both applications. Penny and Twine contain many small choices with a fixed set of possible answers: an accounting category in Penny, an agent type and reasoning level in Twine. A large language model is often more machinery than those choices need. In Twine, Jev now handles that selection work. For Penny, we have tested how that division of work holds up and are now building the Jev router.

We also plan to fine-tune [Laya, an open-source alternative](/en/blog/jev-rise-of-judgement-models/#hosted-or-self-hosted), on our own accounting history. That will let us investigate whether a local decision layer is a better fit for this work.

Want to understand more about how this type of model works and where its limits lie? Read our [explanation of judgement models and Jev](/en/blog/jev-rise-of-judgement-models/). For the broader division of responsibilities between models, agents and employees, see our [guide to AI agents for SMEs](/en/guides/ai-agents-smb/).