Skip to content

jev-norma

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

Librarybeta

Overview

jev-norma triages Latin American data-protection policies and terms of service, starting with Colombia's Law 1581 of 2012, using Jev as a gate. A deterministic, AI-free normaliser extracts clauses from HTML or PDF (and scanned PDFs via an optional OCR step with a vision model on OpenRouter), handling common CMS layouts and discarding boilerplate.

Each clause is then embedded in a self-contained question and Jev chooses obligacion, riesgo or sin_accion with a confidence. The report is fail-open: anything under 0.8 confidence goes to a human review queue, and nothing is killed by Jev alone. The target users are small businesses and legal-tech firms who must audit privacy policies for regulators such as Colombia's SIC or Spain's AEPD. The README reports a measured cost of about $0.00002 per clause. It ships as a dependency-free CLI and MCP server with optional PDF and OCR extras.

What the decision model decides

TypeQuestionAnswers
ChoiceDoes this clause impose an obligation, flag a risk, or require no action?obligacion · riesgo · sin_accion

How it works

  1. Fetch or load a policy document (HTML, PDF or scanned PDF)
  2. Extract and normalise clauses deterministically
  3. Ask Jev to classify each clause with confidence
  4. Send clauses below 0.8 confidence to human review
  5. Output a report of obligations and risk flags

Strengths

  • Deterministic extraction with no AI in the normaliser
  • Fail-open human review queue
  • Very low cost per clause as measured by the author
  • Zero-dependency core, selftests without API

Caveats

  • Focused on Colombian law and Spanish text
  • OCR path needs an OpenRouter key
  • Not a substitute for legal review

Getting started

pip install jev-norma, set TYPESAFE_API_KEY, then jev-norma politica.html

At a glance

Type
Library
Status
beta
Language
Python
Runtime
CLI and MCP server
Has code
yes
Has tests
yes

Use cases and integrations

How curated lists describe it

Frequently asked questions

What does Jev decide?

Whether each policy clause is an obligation, a risk, or needs no action.

What happens to uncertain clauses?

Clauses below 0.8 confidence go to a human review queue.

Can it read scanned PDFs?

Yes, with the [ocr] extra and an OpenRouter key for a vision model.

Related projects

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

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

    ProjectprototypePython
  • Python policy-as-code SDK that runs Noul, Choice and Score rules defined in YAML through Jev, with audit mode and fail-closed options.

    LibraryprototypePython
  • UiPath coded agent for AML alert triage where an LLM reads and writes but Jev makes every red-flag, risk and disposition decision.

    AppprototypePython
  • Rust CLI of Jev experiments: HIPAA-style PHI detection, code-comment review, tone analysis and occupation classification.

    CLIprototypeRust
  • French toolkit that prepares de minimis state-aid cumulation reviews, with Jev classifying sourced cases into review categories.

    ModelprototypeJavaScript