jev-pii
Local-first personal-data inventory tool with optional Jev classification per column, not per row, and dry-run payload review.
Overview
jev-pii inventories personal data in tabular data with local checks first. Regexes detect emails, phones and UUIDs, and Luhn and mod-97 checks validate card numbers and IBANs. Optionally, seeded samples from each column are sent to Jev as one five-question payload per column: whether it holds personal data, its category, whether it is a special category, the data subject, and a risk question. Risk ranking, counts, processing-record fields and remediation stay in code.
The tool is cautious about sending data: it stays local by default, a dry run shows the exact bytes that would be sent, live classification requires approving a plan hash, and masking is available at some cost to accuracy. An inventory diff example compares two column inventories locally to detect drift. Documentation includes French, English and Spanish. It is an alpha that takes a JSON map of column names to values, and the README states it is an inventory aid, not legal advice.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Yes / no | Does this column contain personal data? | yes · no |
| Choice | Which personal-data category does this column hold? | — |
| Yes / no | Is this a special category of personal data? | yes · no |
How it works
- Run local regex and checksum detectors on each column
- Preview the payload with scan --dry-run
- Approve the plan hash to send one five-question payload per column
- Code ranks risk and builds the inventory and report
Strengths
- Local-only mode opens no sockets
- Column-level classification limits data sent
- Explicit plan approval before any network call
- Inventory diff for drift detection
Caveats
- Alpha; database and file connectors not yet shipped
- Masking reduces accuracy
- No live benchmark claimed
Getting started
git clone https://github.com/gbesse/jev-pii.git && cd jev-pii && python3 -m venv .venv && . .venv/bin/activate && pip install -r requirements-dev.txt && python -m examples.offline_demoAt a glance
- Type
- Project
- Status
- prototype
- Language
- Python
- Runtime
- CLI and library
- Has code
- yes
- Has tests
- yes
Use cases and integrations
How curated lists describe it
Inventory personal data with local checks first and optional column-level…
wh000wh000/awesome-jev-live
Frequently asked questions
What does Jev decide?
For each column: whether it holds personal data, its category, whether it is special-category data, the data subject and a risk note.
Does it send my data by default?
No. It is local-only by default and requires approving a plan hash to send samples.
Is it legal advice?
No. The README calls it an inventory aid.
Related projects
Rust CLI of Jev experiments: HIPAA-style PHI detection, code-comment review, tone analysis and occupation classification.
CLIprototypeRustPython re-style library that finds, replaces, splits and extracts text by meaning, with Jev judging each candidate span.
DemobetaPythonData-engineering demos putting Jev inside DuckDB SQL, dbt tests, Databricks and charting, with live versus simulated runs labelled.
ServiceprototypePythonBenchmark of Jev versus rules, local PII models and LLMs at finding personal information: accuracy, leaks, cost and latency.
BenchmarkresearchPythonToolkit for Jev decision contracts: compiled policies, egress controls, tracing, stability checks and certified decision SLOs.
ProjectbetaTypeScriptSpanish compliance triage: clauses extracted deterministically, then Jev labels each obligation, risk or no action.
LibrarybetaPython