"""Dutch legal reference taxonomy for SolidPrivacy Scrub. V8.1 broadens the taxonomy from one-off recognizers to category-level reference intelligence. It keeps legal/admin context readable and masks only the sensitive value next to that context. Examples: - "Zaaknummer: 10598721 / UE VERZ 26-441" -> value is NL_LEGAL_CASE_NUMBER - "intern incidentnummer INC-2026-0912" -> value is NL_INCIDENT_NUMBER - "Claimreferentie verzekeraar: CLM-2026-112233" -> value is NL_CLAIM_NUMBER - "camerabeeld met referentie CAM-MAAS-2026-0518" -> value is NL_OTHER_REFERENCE The app is deliberately local/offline and deterministic. Context is required for generic reference codes; legal role/context words remain readable. """ from __future__ import annotations from typing import List, TypedDict class ReferenceCategory(TypedDict): entity_type: str placeholder: str domain: str score: float keywords: List[str] examples: List[str] LEGAL_REFERENCE_CATEGORIES: List[ReferenceCategory] = [ { "entity_type": "NL_LEGAL_CASE_NUMBER", "placeholder": "ZAAKNUMMER", "domain": "court_or_matter", "score": 0.92, "keywords": [ "zaaknummer", "zaaknr", "zaak nr", "zaak-/rolnummer", "zaak- en rolnummer", "rol-/zaaknummer", "procedure nummer", "procedurenummer", "nummer van de zaak", ], "examples": [ "10598721 / UE VERZ 26-441", "ARN 26/4412", "NL26.12345", "GEM-HLM-2026-2210", "200.345.678/01 OK", ], }, { "entity_type": "NL_DOSSIER_NUMBER", "placeholder": "DOSSIERNUMMER", "domain": "general_legal", "score": 0.88, "keywords": [ "dossiernummer", "dossiernr", "dossier nr", "ons dossier", "uw dossier", "kantoordossier", "procesdossier", "zaakdossier", "advocaatdossier", ], "examples": ["DOSS/2026/1189", "FAM-2026-88721", "ARB-2026-00421"], }, { "entity_type": "NL_CLIENT_REFERENCE", "placeholder": "CLIENT_REFERENTIE", "domain": "general_legal", "score": 0.90, "keywords": [ "cliëntnummer", "clientnummer", "cliëntnr", "clientnr", "klantnummer", "klantnr", "interne klantreferentie", "interne cliëntreferentie", "interne clientreferentie", "relatienummer", "debiteurnummer", "crediteurnummer", ], "examples": ["CL-FAM-55201", "WR-KLANT-2026-7712", "REL-2026-8810"], }, { "entity_type": "NL_CASE_REFERENCE", "placeholder": "ZAAKREFERENTIE", "domain": "court_or_matter", "score": 0.88, "keywords": [ "zaakreferentie", "zaakcode", "procesreferentie", "procedurekenmerk", "procedurereferentie", "matter number", "case reference", "file number", ], "examples": ["ZK-WOON-55091", "PROC-2026-4418"], }, { "entity_type": "NL_INTERNAL_REFERENCE", "placeholder": "INTERNE_REFERENTIE", "domain": "general_legal", "score": 0.82, "keywords": [ "interne referentie", "kantoorreferentie", "ons kenmerk", "uw kenmerk", "kenmerk advocaat", "kenmerk kantoor", "documentreferentie", "documentkenmerk", ], "examples": ["INT-2026-1182", "DOC-FAM-2026-04"], }, { "entity_type": "NL_CONTEXTUAL_REFERENCE", "placeholder": "REFERENTIE", "domain": "generic_contextual", "score": 0.74, "keywords": [ "referentie", "kenmerk", "registratienummer", "referentienummer", "referentienr", ], "examples": ["HRZ-SAM-2026-04", "REF-2026-4431"], }, { "entity_type": "NL_INVOICE_NUMBER", "placeholder": "FACTUURNUMMER", "domain": "finance_admin", "score": 0.87, "keywords": [ "factuurnummer", "factuur met nummer", "factuur nummer", "factuurnr", "declaratienummer", "declaratienr", "betalingskenmerk", "betaalkenmerk", "transactienummer", "boekingsnummer", ], "examples": ["FACT-2026-4481", "DECL-2026-1104"], }, { "entity_type": "NL_CLAIM_NUMBER", "placeholder": "CLAIMNUMMER", "domain": "insurance_injury", "score": 0.91, "keywords": [ "claimreferentie verzekeraar", "claimreferentie", "claim referentie", "claimnummer", "claimnr", "schadeclaimnummer", "schadeclaim referentie", ], "examples": ["CLM-2026-112233", "CLAIM-2026-7781"], }, { "entity_type": "NL_INSURANCE_REFERENCE", "placeholder": "VERZEKERINGSREFERENTIE", "domain": "insurance_injury", "score": 0.86, "keywords": [ "polisnummer", "polisnr", "schadenummer", "schadenr", "letselschadenummer", "verzekeringsreferentie", "aansprakelijkheidsreferentie", ], "examples": ["POL-44556677", "LS-2026-009812"], }, { "entity_type": "NL_ORDER_OR_CONTRACT_NUMBER", "placeholder": "CONTRACT_OF_ORDERNUMMER", "domain": "commercial_admin", "score": 0.84, "keywords": [ "contractnummer", "contractnr", "overeenkomstnummer", "ordernummer", "offertenummer", "opdrachtnummer", "leningsovereenkomst", "leningnummer", "licentienummer", ], "examples": ["CNTR-2026-9981", "LOAN-2026-5512", "ORD-2026-3312"], }, { "entity_type": "NL_INCIDENT_NUMBER", "placeholder": "INCIDENTNUMMER", "domain": "criminal_or_internal_incident", "score": 0.90, "keywords": [ "intern incidentnummer", "incidentnummer", "incidentnr", "incident nr", "incidentreferentie", "incident kenmerk", ], "examples": ["INC-2026-0912", "INC-WM-559812"], }, { "entity_type": "NL_POLICE_REFERENCE", "placeholder": "POLITIE_OF_OM_REFERENTIE", "domain": "criminal_law", "score": 0.87, "keywords": [ "proces-verbaalnummer", "proces-verbaal nr", "pv-nummer", "pv nummer", "aangiftenummer", "mutatienummer", "politieregistratienummer", "bvh-nummer", "detentienummer", "reclasseringsnummer", ], "examples": ["PL1700-20260518-334455", "PV-AMS-2026-77812"], }, { "entity_type": "NL_OTHER_REFERENCE", "placeholder": "OVERIGE_REFERENTIE", "domain": "other_contextual_reference", "score": 0.82, "keywords": [ "camerabeeld met referentie", "camerareferentie", "camera referentie", "beeldreferentie", "videoreferentie", "reparatienummer", "reparatie nummer", "meldingsnummer", "meldingnummer", "rapportnummer", "verslagreferentie", ], "examples": ["CAM-MAAS-2026-0518", "REP-2026-4410", "MELD-2026-7711"], }, { "entity_type": "NL_SCHOOL_REFERENCE", "placeholder": "SCHOOLREFERENTIE", "domain": "family_youth_school", "score": 0.86, "keywords": [ "schoolreferentie", "schoolkenmerk", "leerlingnummer", "onderwijsnummer", "intern begeleider referentie", "ib-referentie", ], "examples": ["HRZ-SAM-2026-04", "SCH-2026-7741"], }, { "entity_type": "NL_CHILD_PROTECTION_REFERENCE", "placeholder": "JEUGD_OF_BESCHERMINGSREFERENTIE", "domain": "family_youth", "score": 0.87, "keywords": [ "veilig thuis-melding", "vt-melding", "veilig thuis referentie", "ots-nummer", "uithuisplaatsingskenmerk", "jeugdbeschermingsreferentie", "jeugdzorgreferentie", "rvdk-kenmerk", "raad voor de kinderbescherming kenmerk", "gezagsregisterreferentie", ], "examples": ["VT-2026-44918", "RVDK-2026-01772", "OTS-2026-1188"], }, { "entity_type": "NL_EMPLOYMENT_REFERENCE", "placeholder": "ARBEIDSREFERENTIE", "domain": "employment_law", "score": 0.86, "keywords": [ "personeelsnummer", "werknemersnummer", "loonnummer", "hr-referentie", "verzuimnummer", "uwv-zaaknummer", "wia-nummer", "ziektewet-referentie", "arbodienstreferentie", "re-integratiedossier", ], "examples": ["HR-2026-7731", "UWV-WIA-2026-11902", "ARB-2026-00421"], }, { "entity_type": "NL_HEALTHCARE_REFERENCE", "placeholder": "ZORGREFERENTIE", "domain": "medical_injury", "score": 0.86, "keywords": [ "patiëntnummer", "patientnummer", "medisch dossiernummer", "behandelnummer", "verwijsnummer", "zorgverzekeringsnummer", "dbc-code", "zorgreferentie", ], "examples": ["PAT-2026-1148", "MD-2026-4412", "DBC-2026-7711"], }, { "entity_type": "NL_IMMIGRATION_REFERENCE", "placeholder": "VREEMDELINGENREFERENTIE", "domain": "immigration_law", "score": 0.87, "keywords": [ "ind-nummer", "ind nummer", "v-nummer", "v nummer", "aanvraagnummer ind", "verblijfsvergunningnummer", "vreemdelingennummer", ], "examples": ["IND-2026-44129", "V-1234567890"], }, { "entity_type": "NL_MUNICIPAL_REFERENCE", "placeholder": "BESTUURSREFERENTIE", "domain": "administrative_law", "score": 0.85, "keywords": [ "besluitnummer", "besluitnummer gemeente", "beschikkingsnummer", "aanvraagnummer", "vergunningnummer", "gemeentelijk kenmerk", "collegekenmerk", "bezwaarnummer", "beroepsnummer", "subsidienummer", ], "examples": ["BESL-2026-9912", "GEM-AMS-2026-1148", "SUB-2026-8821"], }, { "entity_type": "NL_REAL_ESTATE_REFERENCE", "placeholder": "VASTGOEDREFERENTIE", "domain": "housing_real_estate", "score": 0.84, "keywords": [ "huurovereenkomstnummer", "huurcontractnummer", "contractnummer huur", "objectnummer", "adrescode", "complexnummer", "woningnummer", "huurdersnummer", "servicekostenreferentie", "vve-nummer", "kadasterreferentie", "kadastraal nummer", ], "examples": ["HUUR-2026-8891", "VVE-AMS-2026-04", "OBJ-55091"], }, { "entity_type": "NL_VEHICLE_REFERENCE", "placeholder": "VOERTUIG_OF_KENTEKENREFERENTIE", "domain": "vehicle_traffic_injury", "score": 0.84, "keywords": [ "kenteken", "kentekennummer", "nummerplaat", "voertuigkenteken", "voertuigidentificatie", "voertuigreferentie", "chassisnummer", "vin", "rdw-kenmerk", "leaseautonummer", "wagenparknummer", ], "examples": ["XX123X", "12-ABC-3", "VIN-2026-77812"], }, { "entity_type": "NL_OBJECT_REFERENCE", "placeholder": "OBJECTREFERENTIE", "domain": "objects_assets_property", "score": 0.82, "keywords": [ "objectreferentie", "objectcode", "inventarisnummer", "assetnummer", "serienummer", "apparaatnummer", "zaakobject", ], "examples": ["OBJ-WOON-55091", "ASSET-2026-4410"], }, ] REFERENCE_ENTITY_TYPES: List[str] = [entry["entity_type"] for entry in LEGAL_REFERENCE_CATEGORIES] WEAK_REFERENCE_KEYWORDS = { "referentie", "kenmerk", "registratienummer", "referentienummer", "referentienr", } CANDIDATE_ENTITY_TYPES = [ "NL_SUSPICIOUS_REFERENCE_CANDIDATE", "NL_POSSIBLE_LICENSE_PLATE", ]