fuzzy-jev
Rust CLI and library that asks Jev typed questions via OpenRouter and combines the probabilities with fuzzy-logic rules into decisions.
Overview
fuzzy-jev asks Jev typed questions about a piece of text (Choice, Score or Noul) and gets probabilities back, reaching Jev through OpenRouter's decisions endpoint, with a URL option to target other endpoints. Its distinctive part is a rules file: a policy that reads each probability as the degree to which a condition holds and combines them with AND, OR, NOT and hedges into a support score per decision, or into a crisp amount through Mamdani-style fuzzy outputs.
The README is careful that a support score belongs to the policy and is not itself a probability. A --svg flag draws the whole rule base, and a detailed guide documents every table, operator and formula with a hand-worked example. It ships as a terminal command, a Rust library that also compiles to wasm32, a Python package, and an agent skill that teaches coding agents when to ask Jev instead of judging by eye.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Yes / no | is_urgent: Does this message convey urgency? | yes · no |
| Choice | department: Which team should handle this? | billing · technical · sales |
| Score | frustration: How frustrated is the customer? | Calm · Frustrated · Very frustrated |
How it works
- Ask Jev typed questions via the jev CLI or library
- Load a rules.toml policy
- Combine probabilities with fuzzy operators into support scores or crisp outputs
- Optionally render the rule base as SVG
Strengths
- Explicit, inspectable decision policy
- Rust, wasm and Python targets
- Agent skill included
Caveats
- Requires an OpenRouter key by default
- Fuzzy policies need careful design
Getting started
export OPENROUTER_API_KEY=..., then jev 'text' --noul 'is_urgent=Does this message convey urgency?' --choice 'department=...'.At a glance
- Type
- CLI
- Status
- beta
- Language
- Rust
- Runtime
- CLI, library (native + wasm32), Python package
- Has code
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
Ask Jev typed questions about text and get calibrated probabilities back, then turn them into decisions with fuzzy rules (AND, OR, NOT, hedges, Mamdani outputs) and draw the rule base as SVG. A CLI and a Rust library (native and wasm32).
logicrw/awesome-jev-projects
Frequently asked questions
What does the rules file do?
Combines Jev probabilities with fuzzy logic into support scores or crisp outputs.
Is the support score a probability?
No, the README says it belongs to the policy.
How is Jev reached?
Through OpenRouter's decisions endpoint by default.
Related projects
TypeScript library for typed semantic decisions via Zod schemas or native batches, defaulting to Jev, with confidence-gated policies.
LibrarybetaTypeScriptSimon 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.
ProjectbetaRubyElixir DSL (Gut.feel) that picks an Elixir value for a subject and question, with a Jev evaluation adapter among LLM options.
ProjectbetaElixirUnofficial standard-library Go client for Jev with generic typed Choice values and local confidence thresholds.
ProjectbetaGo