Confront a statement with the available evidence.
Choose between a rule, a bounded decision and a generative response.
- Decide, generate or calculate
- Context, question and options
- Read promises carefully
A place to explore the project, study the course, and bring structured decisions to your code. Try the 20 cases, go through the 36 lessons, and discover the 17 packages by area.
Public lab without an API key, with simulated responses. HTML v2 course in Portuguese, with progress tracking, questions and notes.

Banner of the initial edition, with ten packages. The current collection includes 17 packages.
Jev is TypeSafe's structured decision model. The Jev Decision Lab is INEMA's educational project to formulate questions, compare answers and understand when a decision needs review.
The model receives context and criteria; your system remains responsible for the actions. The lab separates this choice from text generation and tool execution.
Consult TypeSafe's official documentation
Each case includes context, questions, criteria, simulated answer, explanation and next step. The links open the corresponding case in the lab in Portuguese.
Confront a statement with the available evidence.
Suggest the responsible team for a request.
Identify points that require specialized review.
Distinguish a change proposal from a confirmation.
Choose the required capacity before generating.
Assess an explicit criterion of an agent's output.
Dispatch to a specialty without expanding permissions.
Select a candidate from the page text.
Fictional organization study, always supervised.
Organize a fictional queue according to an explicit policy.
Distinguish similar specialties and allow none.
Separate correctness and usefulness before proposing a revision.
Preserve the passage that contradicts the hypothesis.
Observe queue, priority, sufficiency and refund request together.
A conversation can contain sales and scheduling.
Select the excerpt; leave calendar and comparison to code.
Use an operational rubric, without inferring the entire incident.
Classify only fictional material that has already been minimized.
Wi‑Fi can be the subject of a status request.
Flag a weakened test with context and requirement.
Three tracks, 12 modules and 36 lessons with theory, examples, exercises and answers. Open each module to see the lessons and access the full material.
The conceptual journey covers modules 1–8. Modules 9–12 use JSON, terminal and Python. The course estimate is 18 hours, including exercises and project.
HTML v2 course available in Portuguese. The links below open lessons with progress tracking, questions, notes and exercises. A personal worksheet follows one decision from the beginning to a pilot.
Choose between a rule, a bounded decision and a generative response.
Distinguish Choice, Noul and Score based on the required response type.
Use uncertainty without turning it into automatic authorization.
Calculate viability including work that happens after the model.
Apply decisions to messages and distinguish lack of evidence from a negative response.
Assess what a passage supports without extrapolating to external truth.
Routing, verification and execution as separate responsibilities.
Distinguish candidate selection from execution and professional supervision.
Build a request and handle errors while keeping credentials on the server.
Compare methods without confusing tuned examples with independent evidence.
Prepare logs, monitoring and feedback without losing control of the operation.
Deliver a well‑grounded adoption decision, including when the answer is not to automate.
Fictional, author‑created data with activities and answer keys for self‑grading. Solve first and check the answers afterward.
12 tasks to choose between rule, Choice, Noul, Score or generation.
Six policies to distinguish refund, credit, conflict and insufficiency.
30 fictional tickets to classify queues and investigate discrepancies.
Eight pairs and four clauses to identify support and omission.
12 tasks to separate selection, permission and attempt limit.
Five candidate lists to choose, abstain, or request review.
Spreadsheet to sum entry, fallback, review and deployment.
Ten simulated predictions to compare coverage and error.
Eight requests to select a skill or none.
Six situations to separate correctness, usefulness and test evidence.
Six passages to preserve contradictions, negations and IDs.
Eight claims to judge the evidence and what is still missing.
Specify the problem, taxonomy, questions, policy, evaluation and economics. Conclude whether there is evidence to adopt, collect more data, or not automate. The rubric covers formulation, policy, evidence, economics and reproducibility.
Open the model and the final project rubricContext, criteria, request, fixture and instructions in each package. All share the executor and the Python core; you can start offline and later set up a real query.
Classify tickets to the correct queue.
Insert the evaluation between ticket creation and queue selection.
Qualify opportunities according to explicit criteria.
Trigger after receiving a contact form. Add your catalog and commercial criteria to the context.
Organize post‑sale requests.
Evaluate the ticket with only the strictly necessary order data.
Check whether a text follows the provided brief.
Evaluate the draft before the editorial approval stage.
Triage bug reports for the responsible component.
Use the issue title, description and minimized logs as input.
Choose among registered skills without executing them.
Place the classifier before the tools dispatcher. Use only IDs from the allowed catalog.
Apply an explicit rubric to support the teacher’s review.
Use fictional exercises first; then evaluate minimized responses against the teacher’s rubrics.
Check mandatory information in documents.
Extract text before this step and attach the checklist.
Classify pending items for the responsible person's review.
Use project updates as input before the follow‑up meeting.
Assess whether a provided excerpt supports a claim.
Use after retrieving excerpts from the knowledge base and before drafting a response.
Separate messages and flag those that need review.
After receiving the email in your backend; send only the required body and profile.
Prioritize questions and content suggestions.
After importing comments via your application's authorized integration.
Locate help requests and expressed dissatisfaction.
After a post or question is entered into the learning environment.
Check decision, next step, owner, and deadline.
After the meeting has been authorizedly transcribed.
Assess whether a transcript excerpt supports an independent clip.
After transcribing and segmenting in inemavox; send the text and timestamps, not the video file.
Separate tasks, ideas, journal entries, and references after transcription.
After a textual note or a transcription in your bot; keep the original in the source system.
Prioritize textual relevance according to declared interests.
After importing posts through an authorized mechanism.
The packages are in the repository: there is no PyPI distribution yet, no universal installer, and no ready‑made connector for n8n.
Open the lab, choose a case and examine the instructional answer. Edit the questions, import a request, export the result or open a report.
Open the public labThe public site does not call an API and does not request credentials. Changing a case invalidates your previous simulated answer.
With Python 3.10+ and Git, clone the project and start the local server. The core uses the standard library.
git clone https://github.com/inematds/jev.git
cd jev
python3 -m jev_lab serveOpen http://127.0.0.1:8765 in the browser.
python3 -m pacotes.executar --list
python3 -m pacotes.executar atendimento
python3 -m pacotes.executar atendimento --live --provider openrouterWithout --live, the package uses a simulated fixture. Real mode requires a key configured in the backend and may consume credits. The guide shows how to set up OpenRouter and TypeSafe while keeping credentials out of the browser.
Validate a JSONL file without calling the API. With --live, process events with limited concurrency and resume saved results. Compare Choice, Noul, and Score with explicit references; the new demos remain simulated.
python3 -m pacotes.executar reunioes
python3 -m pacotes.qualidade reunioes
python3 -m pacotes.lote reunioes data/reunioes-eventos.jsonlSee practical flows and executor limitsUse the jev-decidir skill in Codex and Claude Code. In OpenPCBot v3, /jev observar compares route suggestions; /jev shows the result and /ajuda jev explains the limits. The bot maintains its own gateway and does not execute Jev's suggestions.
Install the skill for Codex and Claude CodeWhen a Jev query originates from multiple points in the same system, it makes sense to funnel everything through a single gateway. jev-gw does that: daily spend limit checked before each query, cache for identical requests, cost and latency logging per call, and a conservative failure mode — Jev down, wrong key or limit exceeded return a human review instead of breaking the caller. Python library, HTTP service and CLI, all using the standard library.
from jev_gw import decidir
saida = decidir(pedido)
if saida['acao'] == 'suggest':
encaminhar(saida['resposta']['answers']['fila']['choice'])
else:
fila_de_revisao(saida['motivo'])Measured on 09/22/2026: a real query took 610 ms for US$ 0.0000155; the same query repeated hit the cache in 0 ms. This is an integration test, not a quality benchmark.
Laya is a candidate for comparing local structured decisions with Jev. References and analysis are available; the Jev adapter and bot v3 integration remain pending.
In the local analysis on September 21, 2026, 14 Laya application tests passed and 16 previously saved responses were accepted by the Jev structural validator. No new inference was performed in that analysis.
The existing educational report records 13 correct answers out of 16 synthetic Portuguese examples, including high-confidence errors. This does not establish superiority over Jev or production quality.
Use the same cases and criteria, separate tuning from testing, measure quality, full cost and end-to-end latency, and retain human review. Laya confidence has its own meaning; do not automatically reuse Jev thresholds.
The 20 public cases and the instructional replay are original and simulated. They are meant to study phrasing, policies and errors; they do not measure model quality.
View the instructional comparisonThe report records 20 correct out of 24 fictitious tickets (83.33%), with a macro‑F1 of 0.84235. These results come from the rules, not from Jev.
Examine the rule reportOn 09/19/2026, the ten packages received responses via OpenRouter, without failures and with the expected classifications on the fictitious examples. This confirms the integration on those examples; it does not constitute an independent benchmark.
Read the report of the ten queriesQuality in Portuguese, calibration and operational use require independent data and human reference. The project does not perform payments, diagnostics, merges or agent actions.
Read exaggerations, doubts and limitsThe seven new packages were verified with fixtures and controlled tests. The real inference report covers only the original ten packages.
Public documentation to dive deeper into each part. The repositories and study materials are in Portuguese; this page organizes the access paths.
Try a case, study the corresponding module, or adapt a package to your project.