vibecheck
Python library that turns decision-model judgment calls into plain function calls: check, classify, label and score.
Overview
vibecheck, published as vibecheck-py, lets Python code call a decision model such as Jev as an ordinary function. It has four functions: check answers yes or no and returns a bool, classify picks one option, label picks every option that applies, and score rates on a scale and returns a float. There are no prompts to template or text to parse.
Probabilities, thresholds and "unsure" answers are available when needed and hidden when not, and batching lets you ask about ten questions over the same data for about the cost of one. Functions are async by default with blocking versions in vibecheck.sync. It reads TYPESAFE_API_KEY and can use any compatible provider. Runnable examples are included for each function.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Yes / no | Are the vibes good? | True · False |
| Choice | Which one of these? (classify) | — |
| Score | Where on this scale? (score) | — |
How it works
- Install vibecheck-py and set TYPESAFE_API_KEY.
- Call check, classify, label or score with a question and data.
- Get a plain Python value back.
- Use thresholds or unsure handling when needed.
Strengths
- Minimal API: judgment calls as function calls.
- Batching reduces cost for multiple questions.
- Async and sync variants.
Caveats
- Hides probabilities by default; tune thresholds for important uses.
- Requires a TypeSafe or compatible provider key.
Getting started
uv add vibecheck-py; export TYPESAFE_API_KEY=...At a glance
- Type
- Project
- Status
- beta
- Language
- Python
- Runtime
- library
- Has code
- yes
Use cases and integrations
How curated lists describe it
Drops a decision model into ordinary Python code, so a judgement call is a function call rather than a prompt.
MrJev/awesome-jev
Frequently asked questions
What functions does it provide?
check, classify, label and score.
Do I get probabilities?
Yes, when you ask for them; by default you get plain values.
Can I use providers other than TypeSafe?
Yes, any compatible provider can be configured.
Related projects
Simon Willison's LLM plugin that adds Jev as a model for yes/no, choice and score questions from the command line.
PluginproductionPythonGo integration bringing TypeSafe Choice, Score and Noul to Google's adk-go agents, with a typed client, routing agent and callbacks.
ProjectbetaGoRuby gem for probabilistic conditionals like Feelings(msg).like?("urgent"), answered by Jev or other decision models.
ProjectbetaRubyRust CLI and library that asks Jev typed questions via OpenRouter and combines the probabilities with fuzzy-logic rules into decisions.
CLIbetaRustElixir DSL (Gut.feel) that picks an Elixir value for a subject and question, with a Jev evaluation adapter among LLM options.
ProjectbetaElixirIndependent OpenClaw plugin exposing one explicitly invoked typesafe_decide tool that sends supplied state and typed questions to Jev.
HookbetaTypeScript