Skip to content

jev-pii

Local-first personal-data inventory tool with optional Jev classification per column, not per row, and dry-run payload review.

Projectprototype

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

TypeQuestionAnswers
Yes / noDoes this column contain personal data?yes · no
ChoiceWhich personal-data category does this column hold?—
Yes / noIs this a special category of personal data?yes · no

How it works

  1. Run local regex and checksum detectors on each column
  2. Preview the payload with scan --dry-run
  3. Approve the plan hash to send one five-question payload per column
  4. 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_demo

At 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

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.

    CLIprototypeRust
  • Python re-style library that finds, replaces, splits and extracts text by meaning, with Jev judging each candidate span.

    DemobetaPython
  • Data-engineering demos putting Jev inside DuckDB SQL, dbt tests, Databricks and charting, with live versus simulated runs labelled.

    ServiceprototypePython
  • Benchmark of Jev versus rules, local PII models and LLMs at finding personal information: accuracy, leaks, cost and latency.

    BenchmarkresearchPython
  • Toolkit for Jev decision contracts: compiled policies, egress controls, tracing, stability checks and certified decision SLOs.

    ProjectbetaTypeScript
  • Spanish compliance triage: clauses extracted deterministically, then Jev labels each obligation, risk or no action.

    LibrarybetaPython