jeveryword
Zero-dependency library that numbers a text's words so Jev can pick them, returning exact substrings for extraction and PII.
Overview
jeveryword makes text extraction possible with a model that does not generate text. Jev answers multiple-choice questions and cannot return a name, email address or quote on its own, so jeveryword numbers the words of your text, offers those numbers as the answer options, and converts the numbers Jev picks back into the original substring with its character offsets. Every result is a true substring of the input, and each has a probability between 0 and 1 for deciding what to confirm with a user.
It supports field extraction, labelling words (for example PII detection) and exact quotes, plus custom questions. The package has no dependencies, is about 500 lines, and runs on Node 20+, Cloudflare Workers, Deno and Bun. The README estimates ten fields from a short message in one request, a few hundred milliseconds and about $0.0004 at list price. A live demo, an agent skill for Claude Code, Cursor and Codex, and a hosted API option are available. The author labels it experimental, checked only on a small set of synthetic messages and not benchmarked. MIT licensed with CI.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Which numbered word (or span) is the value of this field, e.g. the sender's email? | — |
| Choice | Which label applies to this word (e.g. PII category or none)? | — |
How it works
- Number the words of the input
- Ask Jev to pick word numbers for each field or label
- Convert picks back to exact substrings and offsets
- Use probabilities to decide what to confirm
Strengths
- Results are guaranteed substrings of the input
- No dependencies; runs on several runtimes
- About $0.0004 for ten fields per the README
Caveats
- Experimental and not benchmarked
- Long texts mean many options
Getting started
npm install jeveryword, or try the live demo at jeveryword.vercel.app.At a glance
- Type
- Demo
- Status
- prototype
- Language
- TypeScript
- Runtime
- Node / Workers / Deno / Bun
- Has code
- yes
- Has tests
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
Jev answers multiple-choice questions and does not generate text, so on its own it cannot return a name, an email address or a quote. jeveryword numbers the words of your text, offers those numbers as the answer options, and converts the numbers Jev picks back into the original substring with its character offsets.
logicrw/awesome-jev-projectsText extraction with Jev: field extraction, PII detection and exact quotes, built on TypeSafe's Jev.
hellogumbo/awesome-jev
Frequently asked questions
How can Jev extract text if it cannot generate?
Words are numbered and offered as options; the picked numbers are mapped back to the original substring.
Can it hallucinate values?
No, every result is an exact substring of your input.
Is it benchmarked?
No, the author has only checked it on a small set of synthetic messages.
Related projects
Zero-shot named entity recognition that turns Jev's Choice answers into entity spans via nominate, verify and boundary questions.
LibrarybetaPythonResume screening where an LLM writes the questions once per job and Jev answers them for every resume, quoting the evidence line.
ProjectproductionTypeScriptFills Japanese government PDF forms by asking Jev which profile item each unlabeled field is; personal values stay in the browser.
ServicebetaJavaScriptStreaming PII redaction library for TypeScript with 155 regex detectors, optional NER, and opt-in Jev confirmation before redacting names.
ProjectbetaTypeScriptCLI that sends text to Jev for 13 PII-category yes/no checks and a sensitivity score, then locates spans with regex and segmentation.
CLIbetaTypeScriptPython re-style library that finds, replaces, splits and extracts text by meaning, with Jev judging each candidate span.
DemobetaPython