jev-pii-checker
CLI that sends text to Jev for 13 PII-category yes/no checks and a sensitivity score, then locates spans with regex and segmentation.
Overview
jev-pii-checker is a command-line tool for scanning text and files for personal data in three layers. First, a gate sends the text to TypeSafe's Jev with 13 PII category Nouls (person name, email or phone, postal address, date of birth, government ID, financial account, health, biometric, IP address, social handle, employment, race or religion) plus a three-level sensitivity score based on an IBM taxonomy. Second, regexes extract emails, Japanese and international phone numbers and digit strings, filtering corporate addresses. Third, word segmentation generates person-name candidates that Jev judges, and overlapping spans are assembled.
Output is JSON or a human-readable table, values are masked by default, and exit codes allow failing a pipeline when sensitivity crosses a threshold. The README reports 100% gate accuracy on name, email and phone presence on an IBM corpus and 22 of 24 correct sensitivity levels. It warns clearly that scanned text is sent to TypeSafe and points to a local-only alternative.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Yes / no | Does the text contain a person name / email or phone / government ID / health info (13 categories)? | yes · no |
| Score | How sensitive is the personal data in this text? | none · low · high |
| Yes / no | Is this candidate a person's name? | yes · no |
How it works
- Send text to Jev with 13 category Nouls and a sensitivity score
- Extract emails, phones and digit strings with regex
- Generate name candidates with Intl.Segmenter and ask Jev about each
- Assemble spans, mask values and output JSON or a table
- Exit with code 2 if sensitivity meets the fail-on level
Strengths
- Combines model judgment with deterministic span location
- Masked output by default
- CI-friendly exit codes
- Handles Japanese text
Caveats
- All scanned text is sent to TypeSafe's API
- Small reported evaluation sets
- Requires Node 20+ or Bun and a TypeSafe key
Getting started
bun install -g @coo-quack/jev-pii-checker, export TYPESAFE_API_KEY, then jev-pii-checker file.txt --jsonAt a glance
- Type
- CLI
- Status
- beta
- Language
- TypeScript
- Runtime
- CLI (Node or Bun)
- Has code
- yes
- Has tests
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
A CLI that sends text to TypeSafe Jev for PII category Nouls and a sensitivity Score, then locates spans with regex and segmentation.
logicrw/awesome-jev-projectsCLI that finds PII in text with TypeSafe Jev: presence, sensitivity, and…
wh000wh000/awesome-jev-liveCLI that finds PII in text with TypeSafe Jev: presence, sensitivity, and located spans.
hellogumbo/awesome-jev
Frequently asked questions
What does Jev decide?
Which of 13 PII categories are present, how sensitive the text is, and whether name candidates are real names.
Is it local-only?
No. Text is sent to TypeSafe; the README points to sensitive-canary for a local-only guard.
Can it fail a CI job?
Yes. --fail-on sets a sensitivity level that returns exit code 2.
Related projects
Streaming PII redaction library for TypeScript with 155 regex detectors, optional NER, and opt-in Jev confirmation before redacting names.
ProjectbetaTypeScriptFills Japanese government PDF forms by asking Jev which profile item each unlabeled field is; personal values stay in the browser.
ServicebetaJavaScriptPython re-style library that finds, replaces, splits and extracts text by meaning, with Jev judging each candidate span.
DemobetaPythonZero-dependency library that numbers a text's words so Jev can pick them, returning exact substrings for extraction and PII.
DemoprototypeTypeScriptZero-shot named entity recognition that turns Jev's Choice answers into entity spans via nominate, verify and boundary questions.
LibrarybetaPythonPython/TypeScript/Go chatbot safety library checking user input and bot replies with Jev and returning one actionable verdict per message.
LibraryproductionPython