Skip to content

jev

Unofficial Go client for Jev that returns answers as your own Go types, so the compiler checks how you branch on them.

LibrarybetaMIT

Overview

jev by anilsenay is an unofficial Go client for TypeSafe's System One API. It carries Jev's guarantee that answers stay within the defined set into Go's type system: a Choice over your Intent type returns a jev.ChoiceAnswer[Intent], so a switch on it is type-checked, and a question that could not be answered is an error before the request is sent.

Questions are declared once with constructors: Noul with optional true and false criteria, Choice with options and descriptions (or OneOf), and Score over ordered levels that can land between them. Answers include probabilities and confidence, and helpers such as Sure(0.9) make thresholded branching explicit, as in the README example that auto-refunds only when sure and escalates otherwise. It reads TYPESAFE_API_KEY, has CI and Go package docs, and is MIT licensed.

What the decision model decides

TypeQuestionAnswers
ChoiceWhat does the customer want?refund · shipping · other
Yes / noUser-defined two-outcome questiontrue · false
ScoreUser-defined ordered score—

How it works

  1. Declare typed questions with jev.Choice, jev.Noul or jev.Score
  2. Create a client from TYPESAFE_API_KEY
  3. Call jev.Ask with state and questions
  4. Branch on typed answers and Sure(threshold)

Strengths

  • Compile-time typed answers
  • Invalid questions fail before sending
  • Explicit confidence helpers for escalation

Caveats

  • Unofficial client
  • Requires a TypeSafe early-access key

Getting started

`go get github.com/anilsenay/jev`, set TYPESAFE_API_KEY, then `jev.Ask(ctx, client, state, question)`.

At a glance

Type
Library
Status
beta
Language
Go
Runtime
library
Has code
yes
Has tests
yes
License
MIT

Use cases and integrations

How curated lists describe it

Frequently asked questions

What makes this client different?

Answers are returned as your own Go types, so branching is checked by the compiler.

How do I handle uncertainty?

Use helpers like ans.Sure(0.9) and escalate when not sure.

Is it official?

No, it is an unofficial client.

Related projects

  • Hack Club's lightweight LLM proxy, listed for adding a Jev forwarding endpoint behind its auth, limits and usage logging.

    MCP serverproductionTypeScript
  • Ax, a DSPy-style multi-language LLM framework, listed with a native TypeSafe provider for Boolean, Choice, Score and raw Jev questions.

    PluginproductionTypeScript
  • Effect TypeScript library whose @effect/ai-typesafe package maps classify, probability and rating operations to Jev questions.

    ProjectproductionTypeScript
  • PHP monorepo whose Polyglot module adds a TypeSafe driver for typed Noul, Choice and Score decisions alongside LLM inference.

    ProjectproductionPHP
  • Go MCP server giving any client typed Jev decisions via OpenRouter or TypeSafe, with validated answers and no paid retries.

    MCP serverproductionGo
  • Simon Willison's LLM plugin that adds Jev as a model for yes/no, choice and score questions from the command line.

    PluginproductionPython