AI is becoming an increasingly important part of how organizations process information and make decisions.
However, reliably integrating AI into an existing data stack adds time and cost, on top of the time and cost it takes for LLMs to process the data.
In this tutorial, I explore how to integrate TypeSafe's Jev with Tabsdata to build a workflow that uses TypeSafe's System 1 AI model to evaluate and classify issues submitted to GitHub. It's cheaper and faster than using LLMs, and it provides ingestion, transformation, orchestration, and observability into AI performance, all in a single tool.
What the Heck is a Jev
Jev is a decision API developed by TypeSafe that lets developers build decision-making into their applications.
LLMs work by reading a context of tokens and predicting the next token that should come after it. They're flexible, but they aren't always necessary for structured tasks like classification or yes/no questions. Even when an LLM only replies yes or no, it's still generating text underneath to arrive at that answer, which burns through tokens. Every token it generates means rereading the entire context window to generate the next one.
Jev is different in that it doesn't generate text at all. Given a set of inputs, it returns a single decision, like a yes or no.
Jev is a System 1 model, a name that comes from the concept Daniel Kahneman popularized in his book Thinking, Fast and Slow. LLMs utilize System 2 thinking, having a deeper, more deliberate, verbose style of responding, while Jev utilizes System 1 thinking, which is fast, heuristic, and cheap.
If a baseball were flying toward the head of an LLM vs Jev, their reactions would show the difference pretty well.
How Jev can save you time and money
While LLMs are good conversational agents, they specialize in that System 2 thinking. They're designed for deeper, deliberate thought and optimized for talking with humans.
As a System 1 model, Jev doesn't need to spend time and money writing out verbose sentences. It just looks at the state it's given and makes a decision based on that state. This means Jev can make decisions faster and cheaper than an LLM.
Jev also helps with a huge issue with LLMs: hallucination. Unlike an LLM, which treats data types as a suggestion rather than a rule, Jev operates on a strict contract. If you want Jev to answer yes or no, it will answer yes or no. If you give it three options and have it choose one, it will never hallucinate a fourth.
Tabsdata Workflow Architecture
Tabsdata first ingests GitHub issues into a Tabsdata table. It then runs that table through a transformer with a UDF and a data quality check. The UDF packages each issue into an API call to TypeSafe's API. Jev classifies each issue by severity, type, regression, and reproducibility, and the UDF writes the response back into the table.
The data quality check then compares Jev's responses to the labels the repo's maintainers gave each issue.
Results
Testing was done with 688 GitHub issues from the Polars repo, last updated between July 1 and October 1, 2026.
Through Tabsdata's UDF functionality, I was able to easily wire a Jev step into the workflow to classify these GitHub issues. Cost-wise, Jev beat LLMs by a very wide margin. In a separate benchmark, it was 11-18x faster than Claude Haiku, Sonnet, and Opus, and 3-116x cheaper.

When evaluating the data quality of Jev's responses, the results were mixed. Metrics like issue type (kind) and regression scored well, while severity scored much lower. Part of this was due to a lack of data from GitHub, as about 70% of the issues didn't have a severity label assigned.

Running the same comparison with Claude Haiku gave similar results, which points to a lack of context rather than a failure of the model. To improve success, I'd be interested in seeing what additional context can be provided to raise these data quality scores.
Conclusion
Integrating AI decision-making into a data pipeline doesn't mean you have to rebuild from the ground up.
By combining Jev's decision API with Tabsdata's data integration capabilities, I was able to ingest, classify, and check the correctness of almost 700 GitHub issues, all within a single tool.
The integration also shows the flexibility of Tabsdata's Python-based architecture, which lets you easily hook external services into Tabsdata's workflows.
To learn more, explore the Tabsdata documentation and TypeSafe's Jev.
