Text in, verdicts back.
Jev doesn't write anything. It reads your text once and answers every check in the same request with structured values and probabilities.
- 01You pick the checks
Each check is one specific question with a fixed answer shape. Seven ship with the app; you can add your own.
- 02Checks become typed questions
Yes/No checks become noul questions, option checks become choice questions. The text goes along as Jev's state.
- 03One batched verdict request
The browser posts to this app's own /api/judge route, which forwards to Jev with the server key or the key saved in your browser.
- 04Answers are normalised
A probability per Yes/No, a pick plus per-option probabilities per choice. Anything missing or malformed becomes Needs review, never a pass.
- 05Evidence is picked
In live mode a second, optional request asks Jev which sentence drove each answer. If that fails, or in demo mode, a local keyword match picks one and labels it approximate.
- 06The summary is built
Passes, issues, and low-confidence flags are counted and the takeaway line is written. Moving the threshold recomputes flags locally, with no new request.
Confidence
For pick one checks Jev returns a confidence value directly. For Yes/No checks it returns only the probability of yes, so the app derives confidence as how far that probability sits from a coin flip:
confidence = max(p, 1 − p)
A probability of 0.92 is 92% confident. A probability of 0.5 is 50%, genuinely unsure, and always flagged at the default threshold of 70%. Confidence is Jev's probability for its own answer, not a measure of whether that answer is right.
The topbar shows latency measured in the browser and the verdict request's input tokens as Jev reported them. The optional evidence request is not counted, so treat it as a readout, not a bill.
Keys and privacy
The server key is read only in the server layout and API route and reaches the browser as a single true/false. A key you save in the browser lives in localStorage, is masked while you type, is never displayed again, and travels only as a header to this app's own route.
Live runs send your text to TypeSafe. Demo mode sends nothing anywhere: the answers are seeded from the text and the question, so the same input always gives the same simulated result.
Error messages pass through a redaction step that masks anything key-shaped, and a pre-commit hook plus CI scan the repo for credentials. Those controls reduce risk; nothing here is an absolute guarantee.