YecoAI

Yeco-PII 2.0

The second generation of our 278M PII model: 30 entity types, average F1 0.97 across six European languages vs 0.80 for the OpenAI Privacy Filter (1.5B) and 0.67 for Rizzo-PII (0.3B). Cryptographically signed release.

Yeco-PII v2.0 cover

Introducing Yeco-PII 2.0, the second generation of our model that detects and anonymizes personal data in text. It is more accurate, recognizes more data types and outperforms much larger models, especially in Italian. With this release we are also opening our dedicated fine-tuning program: starting from this base, we train custom variants for each company's specific fields.

Motivation: closing the gaps v1.0 left open

v1.0 proved the thesis: context beats checksums. But the error analysis was honest, and the gaps were documented. In technical logs, IPv6 addresses went unseen. Usernames generated without a name-based structure (the real ones, user447198, txgmssfpc284937) slipped through unless they looked like a firstname.lastname. Plaintext passwords in support tickets were not typed. And in banking, “last card ending in 4821” was mistaken for a ZIP code.

The diagnosis was more interesting than the individual fixes: v1.0’s training dataset, built on real rows annotated by third parties, deliberately left out exactly those categories, and the model had learned to ignore them. It was not an architecture limit, but a limit of ground truth in the training data. 2.0 is built on a dataset rebuilt from scratch (154,000 documents, zero errors after automatic validation of every span), where every category has real examples, contrastive synthetic examples (same surface, opposite label depending on context: a customer’s “Via Roma 42” vs “Via Roma” cited as an example), and hostile negatives (MAC addresses, UUIDs, DOIs, and technical coefficients that must not be touched). 2.0 is not an incremental update: it is the generation that closes the research loop, with purely contextual detection, no regex, and full coverage of the digital and physical identifiers that dominate real documents.

Model and methodology

Yeco-PII 2.0 is a 278M-parameter encoder, fine-tuned for token-level entity recognition across 30 protected types: names, organizations, tax IDs (codice fiscale), VAT numbers, IBAN, credit cards and last 4 digits, emails, phone numbers, birth dates vs reference dates, full addresses, ZIP codes, provinces, countries, age, gender, amounts, document references, license plates, cadastral data, URLs, IPv4 and IPv6, usernames, plaintext passwords, GPS coordinates, and more. The model is a full fine-tune of XLM-RoBERTa base, used as the starting point. It ships in standard HuggingFace format (~1.1 GB), with an int8-quantized ONNX version (278 MB) for CPU, and a policy engine that turns detection into production-ready redaction.

The feature most requested by our enterprise partners: every file in the release package is cryptographically signed (ECDSA). With the public key we provide, your IT department verifies with a single command that the installed model is exactly the one validated by YecoAI: unaltered, with no substitutions along the distribution chain. Provenance that is demonstrable, not declared.

Benchmarks: same test for every model, extended protocol

Evaluation uses real-world rows never seen in training, annotated by a third party (Ai4Privacy), with the identical set for every model, now with the gold standard extended to all 30 types, including what the previous generation could not see.

The result: average F1 0.97 across six European languages against 0.80 for the OpenAI Privacy Filter (1.5B, 5.4× larger) and 0.67 for Rizzo-PII (0.3B), and 0.98 on Italian, our primary language.

  • Wins on all six languages, with native Italian at 0.98.
  • The comparison with OpenAI is type-agnostic: the competing model is credited with the correct entity even when it gets the type wrong, the most favorable protocol possible, and we still won by 18 points.
  • On digital types the jump is clear: IP detection 1.00 (it was 0.00 in v1.0 on real data), usernames 0.99, times 0.99, emails 1.00.
  • Adversarial suite with values regenerated on every run (out-of-sample, never seen in training): F1 0.95, precision 0.985, with only 3 false positives out of 220+ predictions.
PII detection F1 across six European languages
Ai4Privacy benchmark, higher is better, six-language average included
YecoAI
Independent annotations, identical test set for every model.
Full benchmark results
F1 on the Ai4Privacy benchmark, identical test set for every model
LanguageYeco-PII 2.0 (278M)Rizzo-PII (0.3B)OpenAI Privacy Filter (1.5B)
Italian0.980.680.80
English0.960.690.79
French0.990.670.80
German0.990.670.80
Spanish0.990.720.81
Dutch0.940.600.78
6-language average0.970.670.80

What it detects (30 types) and how accurately

Compared to v1.0, the types go from 24 to 30: added IPv6 addresses, usernames, plaintext passwords, country, GPS coordinates, and card last 4 digits.

F1 by entity type
30 protected types; * and n/a explained in the note below the table
EntityF1
Full name0.97
Italian tax code (codice fiscale)*1.00
VAT number (Partita IVA)*1.00
IBAN*1.00
Credit card*1.00
Card last 4 digits*1.00
Cadastral code*1.00
License plate*1.00
Document/case number0.98
Email1.00
Phone/fax0.98
IP address v4/v61.00
Username0.99
URL*1.00
Street/square0.96
House number0.96
Postal code (CAP)0.96
City0.96
Province0.95
Country0.94
GPS coordinates0.90
Reference date0.97
Date of birth0.96
Time0.99
Age*1.00
Gender0.99
Organization*1.00
Amount*1.00

* Type not present in the real Ai4Privacy set: value from the v2 adversarial suite (synthetic samples, indicative). n/a = not yet certified (Plaintext password, Document reference): passwords and document references are the rarest types in training; if they are critical for your use case, request a dedicated evaluation.

Error analysis: what the model still misses

Honest reporting includes the misses. Three areas remain: ultra-short contexts (an IBAN isolated in a three-word sentence falls below the confidence threshold; this does not happen in real documents), partially structured verbal dates in complex legal prose, and entities split by formatting artifacts (an “M. Greco” recognized as a single token). None is an architecture limit: all are in the hard pool of the next data cycle, and the first is documented as known behavior in the model card.

From detection to anonymization policy

As in v1.0, the policy engine turns spans into actions: masking with type tags ([IBAN], [FULLNAME]), replacement with format-preserving surrogates, or consistent per-customer mappings across entire corpora. Policies are defined in JSON or natural language and apply with no retraining.

The fine-tuning program: this is the base, your fields are added on top

This is what sets us apart from vendors selling a closed model. Yeco-PII 2.0 is, in all likelihood, our final PII model as a generation: the base (architecture, multilingual dataset, the 30 types) stays as it is and remains the foundation of every variant. From here on, improvement will come from specialization, not from a new generation: the companies and banks that contact us tell us which specific fields their domain is missing. What varies is the tail, and the tail is yours:

  • A bank may need to recognize internal case numbers, branch codes, or its own current-account formats.
  • An insurer will have policy and claim numbers.
  • An HR-tech company will have employee IDs, badges, and contract references.

Contact us at [email protected]: we collect the specific fields your domain requires, generate the specialization dataset, and train a fine-tuned variant of the 2.0 base, delivered signed, with your data types as first-class entities. A specialization cycle costs a few GPU hours: iterating is cheap, and the model stays yours, inside your perimeter.

Deployment and licensing

The first step is an API trial on the customer’s own documents; licensing is a one-time payment with on-premises delivery (HuggingFace, ONNX, ONNX int8, or GGUF, all signed). The model runs entirely within the client’s perimeter, with no per-request fees and no data egress. Inside YecoAI, Yeco-PII remains the privacy layer of DeskNexo.

Limitations

  • Six certified languages (IT/EN/FR/DE/ES/NL); outside these, quality is untested.
  • Image documents without OCR are out of scope: the pipeline is text-based.
  • GDPR Article 9 “special categories” (health, biometrics, opinions) are not typed: Yeco-PII detects identifiers of natural persons. It supports compliance; it is not a certification.
  • Honorific titles and secondary address units are not typed.
  • The 0.97 average F1 spans six languages and 30 types; per-type and per-language performance is documented in the model card for licensed clients.

Conclusion

v1.0 showed that the PII problem rewards understanding over scale. 2.0 closes the loop: 30 data types, F1 0.97 across six languages, measured adversarial robustness, cryptographically signed provenance, and a declared evolution model: the base is final, specialization belongs to the customer. For organizations with a compliance obligation, hosting, healthcare, banking, public administration, the result is practical: GDPR-grade anonymization that fits on a VM, licensed once, running where the data already lives.

Context beats checksums, and a good dataset beats a bigger model. Privacy is a language problem: this is our answer, and probably the last one you will need from the PII series. Bring us your missing fields: the base is ready.

Related content