What euRedact detects /
40 types of personal data, across 31 European jurisdictions, detected by two layers with opposite strengths. This page is the boundary map: what each type covers, what it deliberately does not, and which layer is responsible.
Coverage, not performance. For measured recall and precision under stated conditions, see benchmarks. The AI layer is in development; the Rules Engine layer ships today in the Python and Node.js SDKs.
The two layers
euRedact detects personal data with two layers that run in sequence over the same document. They are designed around opposite failure modes, which is why both exist.
The Rules Engine layer
Deterministic pattern matching with format validation. A candidate is found by a regular expression, then — where the identifier’s specification allows it — confirmed by an arithmetic check: the mod-97 checksum on an IBAN, the 11-test on a Dutch BSN, Luhn on a credit card or IMEI, the ISO 3779 check digit on a VIN.
Good at: identifiers with a defined, published structure. It runs locally, needs no model inference, produces the same answer every time for the same input, and can explain any detection by pointing at the rule and the validator that fired.
Fails at: anything whose form is not fixed. A name, a job title, a diagnosis and a street address have no checksum and no reliable shape.
The AI layer
A language model reads the document with the Rules Engine results already in hand, and its job is what remains: entities with no fixed form, and entities whose form is ambiguous without understanding the surrounding sentence.
Good at: names, addresses, organisations, job titles, medical information, special-category attributes, and the judgement calls — whether a number labelled only “reference” is a person-lookup key or a purchase order, whether a date is a birth date or an invoice date, whether a URL identifies somebody or merely points at a standards document.
Fails at: guaranteeing that a well-formed identifier was caught. A model may skip one IBAN in a table of forty. A checksum will not.
How they combine
The Rules Engine layer runs first and its detections are passed to the model as established findings, so the model spends its attention on what is left rather than re-deriving what is already settled. Detections carry the layer that produced them, which is what makes a redaction report auditable: every masked span traces back either to a named rule and validator, or to the model.
Detection responsibility
Which layer carries the work. This is the line between what is settled deterministically on your own machine and what needs a model to read the sentence around it.
- Rules only
- Structure is fully specified. The Rules Engine layer is the detector; the AI layer adds little.
- Rules led
- Rules cover the standard formats; the AI layer adds obfuscated, truncated and prose-embedded cases.
- AI led
- Rules provide partial coverage but over- or under-fire without context; the AI layer's disambiguation is the actual value.
- AI only
- No reliable pattern exists. The AI layer is the only line of defence.
Sensitivity tier
Independent of who detects a type, each one carries a tier that drives default redaction policy.
- Critical
- GDPR Article 9 special-category data and classic hard identifiers. Always redact.
- High
- Direct personal identifiers. Strong default-redact.
- Medium
- Quasi-identifiers and structured contextual data. Redact in identifying contexts.
- Low
- Broad, context-dependent categories. Redact when they meaningfully strengthen re-identification.
Coverage at a glance
All 40 types. Filter by layer to see where determinism ends and inference begins, or by tier to see what your redaction policy has to cover.
Showing 40 of 40 types.
| Type | Tier | Layer | Country-specific | Checksum |
|---|---|---|---|---|
| NATIONAL_ID | Critical | Rules led | Yes | Yes |
| PASSPORT | Critical | AI led | Yes | — |
| TAX_ID | Critical | Rules led | Yes | Yes |
| SSN | Critical | Rules led | Yes | — |
| DRIVERS_LICENSE | Critical | Rules led | Yes | — |
| RESIDENCE_PERMIT | Critical | AI only | Yes | — |
| HEALTH_INSURANCE | Critical | Rules led | Yes | Yes |
| HEALTHCARE_PROVIDER | Medium | AI led | Yes | — |
| MEDICAL_CONDITIONArt. 9 | Critical | AI only | — | — |
| BIOMETRIC_REFArt. 9 | Critical | AI only | — | — |
| SENSITIVE_ATTRIBUTEArt. 9 | Critical | AI only | — | — |
| BANK_ACCOUNT | High | Rules only | Yes | Yes |
| BIC | High | Rules only | — | — |
| CREDIT_CARD | High | AI led | — | Yes |
| VAT | Medium | Rules led | Yes | Yes |
| FINANCIAL_AMOUNT | Low | AI only | — | — |
| High | Rules led | — | — | |
| PHONE | High | Rules led | Yes | — |
| SOCIAL_HANDLE | Medium | AI led | — | — |
| URL | High | AI only | — | — |
| PERSON_NAME | High | AI only | — | — |
| ORGANISATION_NAME | Low | AI only | — | — |
| JOB_TITLE | Low | AI only | — | — |
| QUASI_IDENTIFIER | Low | AI only | — | — |
| ADDRESS | High | AI only | — | — |
| POSTAL_CODE | Medium | AI led | Yes | — |
| GPS_COORDINATES | Medium | Rules only | — | — |
| IP_ADDRESS | Medium | Rules only | — | — |
| IPV6_ADDRESS | Medium | Rules only | — | — |
| MAC_ADDRESS | Medium | Rules only | — | — |
| IMEI | Medium | Rules only | — | Yes |
| UUID | Medium | Rules only | — | — |
| LICENSE_PLATE | Medium | Rules led | Yes | — |
| VIN | Medium | Rules only | — | Yes |
| SECRET | Medium | AI led | — | — |
| CREDENTIAL | High | AI led | — | — |
| DOB | Critical | Rules led | — | — |
| DATE_OF_DEATH | Critical | Rules led | — | — |
| CHAMBER_OF_COMMERCE | Medium | Rules led | Yes | Yes |
| INTERNAL_ID | Medium | AI led | — | — |
Type reference
What each type covers, and — where it matters more — what it deliberately does not. Most integration confusion is about the boundary between two adjacent types rather than about either type on its own. The filter above applies here too.
Government and identity
NATIONAL_ID
CriticalRules ledChecksum31 countriesA government-issued personal identification number assigned to a specific natural person by a national authority and used as a primary identity reference. Covers the Belgian Rijksregisternummer, Dutch BSN, French NIR, Spanish DNI and NIE, Polish PESEL, Swedish personnummer, Danish CPR, Norwegian fødselsnummer, Finnish HETU, Icelandic kennitala, Estonian isikukood, Latvian personas kods, Lithuanian asmens kodas, Bulgarian ЕГН, Romanian CNP, Greek AMKA, Slovenian EMŠO, Hungarian személyi szám, Czech and Slovak rodné číslo, Maltese and Cypriot ID card numbers, and the Luxembourg matricule — among others. Historic formats count alongside current ones. Most carry a checksum, and the engine validates it rather than trusting shape alone.
Does not cover: Purely fiscal identifiers (TAX_ID), health-fund numbers (HEALTH_INSURANCE), separate social-security numbers (SSN), passport, driving licence or residence-permit numbers, VAT numbers, company registration numbers, or internal customer and employee references (INTERNAL_ID).
Where a country's national ID doubles as its tax identifier — the Italian Codice Fiscale, Croatian OIB, Portuguese NIF, Spanish DNI in fiscal use — the broader identity role wins. Where an identifier encodes a birth date (BSN, CPR, PESEL, fødselsnummer), the whole value is one NATIONAL_ID; the embedded date is not additionally reported as a date of birth.
PASSPORT
CriticalAI led4 countries with patternsThe document number printed on a passport or equivalent international travel document, including diplomatic, service and emergency travel documents. Identifies the physical document and, through it, the holder.
Does not cover: The holder's national ID, visa or residence-permit numbers, or the machine-readable-zone content as a whole.
Passport numbering is not standardised across issuers and carries no general checksum, so the Rules Engine layer holds context-gated patterns for a small number of jurisdictions only and the AI layer carries the rest.
TAX_ID
CriticalRules ledChecksum5 countries with patternsA government-issued personal or entity identifier used by a tax authority to track fiscal obligations, where it is distinct from the general-purpose national ID. Validated formats include the German Steuer-ID, the Greek ΑΦΜ and the Polish NIP.
Does not cover: VAT registration numbers (VAT), company registration numbers (CHAMBER_OF_COMMERCE), national IDs that merely happen to be used fiscally (NATIONAL_ID), or customs and duty references.
SSN
CriticalRules led1 country with patternsA social-security identifier granting access to state social-insurance programmes — pension, unemployment, disability, parental leave, in some countries health — in jurisdictions that issue a separate social-security number rather than using the national ID for the purpose. The Irish PPSN and the German Sozialversicherungsnummer are the reference cases; US-format SSNs are also recognised.
Does not cover: National IDs that serve a social-security function (NATIONAL_ID), tax-only identifiers (TAX_ID), or health-insurance member numbers (HEALTH_INSURANCE).
DRIVERS_LICENSE
CriticalRules led1 country with patternsThe identifier on a driving licence document — national, EU-format or international.
Does not cover: The vehicle's registration plate (LICENSE_PLATE), the holder's national ID, or insurance and traffic-fine references.
RESIDENCE_PERMIT
CriticalAI onlyA document number issued by a host country granting a non-citizen the right to enter, stay, work or study for a defined period or status. Covers residence cards, work permits, long- and short-stay visas, and asylum-seeker and refugee documentation.
Where a foreigner-identity number functions as a general identity reference in the document it is classed NATIONAL_ID; where the document explicitly concerns the residence-permit document itself, RESIDENCE_PERMIT applies.
Health
HEALTH_INSURANCE
CriticalRules ledChecksum2 countries with patternsA government or private health-fund identifier assigned to an insured person for the administration of medical coverage: health-fund member numbers, mutuality, Krankenkasse and mutuelle IDs, and health-insurance card numbers. The UK NHS number is checksum-validated.
Does not cover: The holder's national ID or social-security number, or a hospital-internal patient record number (INTERNAL_ID).
This type is the number, never the name of the insurer. An insurer's name is an organisation name.
HEALTHCARE_PROVIDER
MediumAI led1 country with patternsA registration identifier issued to a healthcare provider — physician, nurse, pharmacist, dentist, allied health professional, clinic or hospital — for billing, prescribing, registration or regulatory purposes. Reference cases are the Belgian RIZIV/INAMI number, the Dutch BIG number and the German LANR.
Scoped to the identifier code. A practitioner's name is a person name; a clinic's name is an organisation name.
MEDICAL_CONDITION
CriticalAI onlyArticle 9Information disclosing a person's health status, diagnosis, treatment or healthcare interaction in a way that re-identifies them or attaches a sensitive medical attribute to them. Covers physical and mental health diagnoses, symptoms in clinical context, ICD-10 codes, lab values, medications and procedures where condition-revealing, disabilities, reproductive and sexual health, substance-use disorders, and genetic information. Sick leave and maternity leave fall here.
GDPR Article 9 special-category data, requiring an additional lawful basis for processing.
BIOMETRIC_REF
CriticalAI onlyArticle 9Information identifying a person through physiological, biological or behavioural characteristics, or persistent references to such characteristics: photo IDs, fingerprint, iris, face, voice and DNA template references.
Does not cover: An access badge or keycard number on its own, which is an INTERNAL_ID — the number is not itself a biometric.
GDPR Article 9 when used to uniquely identify a person.
SENSITIVE_ATTRIBUTE
CriticalAI onlyArticle 9A person's nationality or citizenship, racial or ethnic origin, religious or philosophical beliefs, political opinions, sexual orientation or sex life, or trade-union membership — and vulnerability or status disclosures carrying an Article 9 dimension, such as being a welfare recipient or asylum seeker.
GDPR Article 9 special-category data.
Financial
BANK_ACCOUNT
HighRules onlyChecksum31 countries + shared tierA bank account identifier used to route payments to or from a specific account holder: IBAN (ISO 13616, mod-97 validated), pre-IBAN domestic account numbers, and foreign equivalents.
IBANs are detected both by a generic international pattern and by country-specific ones, so a cross-border IBAN is recognised in a document from another jurisdiction.
BIC
HighRules onlyshared tierA Bank Identifier Code (ISO 9362), also labelled “SWIFT code” or “BIC/SWIFT”: four letters for the institution, an ISO-3166 country code, two location characters and an optional three-character branch code. Both the compact and space-separated written forms are recognised.
A BIC has no check digit, and its shape — eight or eleven upper-case alphanumerics — collides with ordinary capitalised words in many European languages. Detection therefore requires registry confirmation or explicit banking context, never shape alone. It identifies the financial institution rather than the account holder, but pairs with BANK_ACCOUNT to enable routing.
CREDIT_CARD
HighAI ledChecksumshared tierA payment card primary account number — credit, debit, prepaid or charge — from Visa, Mastercard, Amex, Diners, Discover, JCB, UnionPay, Maestro and other networks, together with tightly-coupled card data: CVV/CVC, magnetic-stripe content and card PIN.
Luhn validation is what separates a card number from an invoice or order number of similar length; the AI layer resolves the remainder. Subject to PCI-DSS in addition to GDPR.
VAT
MediumRules ledChecksum30 countriesA VAT registration number issued to a business or sole trader by a member state's tax authority. Publicly searchable in most jurisdictions, and validated by checksum for several including BE, DE, FR, LU, NL and DK.
Does not cover: Personal tax identifiers (TAX_ID, NATIONAL_ID) or company registration numbers (CHAMBER_OF_COMMERCE).
FINANCIAL_AMOUNT
LowAI onlyA specific monetary amount in identifying context attached to a natural person: salary, compensation, settlement, account balance, debt, benefit or contract value.
Does not cover: Generic prices, market data or macroeconomic figures.
Contact details
An RFC 5322 e-mail address functioning as a contact-channel identifier for an identified or identifiable person. Non-ASCII local parts, including Greek and Cyrillic, are supported.
The Rules Engine layer covers standard formats; the AI layer adds display-name forms, deliberately obfuscated forms (“name [at] domain [dot] com”), plus-tagged addresses and internationalised domains.
PHONE
HighRules led31 countries + shared tierA telephone, mobile or fax number allowing direct contact with a person, household or organisation. Detected by 98 national-format patterns — one set for every supported country, the largest single group in the engine — plus an E.164-validated international pattern in the shared tier.
The AI layer adds short domestic formats without a country code, unusual separators and numbers embedded in prose.
SOCIAL_HANDLE
MediumAI ledshared tierA username, screen name or account identifier on a social platform, messaging service, online community or gaming network, when attached to an identifiable person. Both the canonical @handle form and the bare-word username form where context confirms it. Handles containing non-ASCII letters are supported.
URL
HighAI onlyA web address that, in context, identifies a specific natural person, a named organisation mentioned elsewhere in the document, or an account, profile or project page tied to an identified party.
Does not cover: URLs carrying no identifying signal — framework documentation, standards bodies, CDN assets, general public-knowledge references.
Whether a URL is personal data is a contextual judgement, which is why this type sits entirely with the AI layer.
People, organisations and roles
PERSON_NAME
HighAI onlyA natural person's name used to refer to a specific identified or identifiable individual: given names, surnames, full names, honorific-plus-name, initials with surname, compound and hyphenated surnames, non-Latin-script names, chosen and preferred names, and nicknames used as identifiers.
At each occurrence the longest contiguous name span is reported as a single detection — honorific, given names, particles and surname together — rather than several adjacent fragments.
ORGANISATION_NAME
LowAI onlyThe name of a company, institution, government body, non-profit or association where its presence is identifying, either of the organisation itself in a privacy-sensitive context or of a natural person through affiliation.
Does not cover: Brand-as-product references and generic categorical descriptions.
JOB_TITLE
LowAI onlyA professional, organisational or hierarchical role designation attached to an identifiable person. Identifying in combination with a name, an organisation or a department.
Does not cover: Department and team names on their own.
QUASI_IDENTIFIER
LowAI onlyA combination of attributes, none sufficient alone, that together narrow a description to one individual or a very small group — a role plus a location plus a timeframe, for example. The full combining phrase is reported.
Attributes inside the phrase that have their own type are additionally reported as that type.
Location
ADDRESS
HighAI onlyA physical mailing or location address that locates an identifiable person or organisation: street name, house number, building name, apartment, unit and floor designations, PO boxes, and the city, postal code and country components where they form part of a complete address span.
POSTAL_CODE
MediumAI led31 countriesA country-specific postal code, functioning as a coarse geographic identifier when attached to a person or address.
The Rules Engine layer holds postal patterns for every supported country, but most are short digit runs that require a nearby address cue to fire, and the formats collide with other numbers. The AI layer is the authority for this type. A postal code inside a full address span is part of that ADDRESS; one appearing outside an address span is reported as POSTAL_CODE.
GPS_COORDINATES
MediumRules onlyshared tierA geographic coordinate pair pinpointing a physical location associated with an identifiable person — home, workplace, vehicle position, or geo-located activity.
Decimal degrees are detected by rule; the AI layer adds DMS notation, plus codes, geohashes, What3Words references and coordinates described in prose.
Devices and networks
IP_ADDRESS
MediumRules onlyshared tierAn IPv4 address identifying a person as a network endpoint, session origin or device.
IPV6_ADDRESS
MediumRules onlyshared tierAn IPv6 address (RFC 4291 / RFC 5952), in any standard notation including compressed forms. Reported separately from IPv4.
MAC_ADDRESS
MediumRules onlyshared tierA 48-bit IEEE 802 hardware address identifying a network interface. Colon-separated, dash-separated and Cisco dot notation are all recognised. Personal data when linked to a person through device-management records, access logs, DHCP leases or captive-portal logs.
IMEI
MediumRules onlyChecksumshared tierA 15-digit International Mobile Equipment Identity identifying a mobile device on a cellular network. Both the bare and separator-formatted forms are recognised. Persists across SIM changes, so it identifies the device rather than the subscriber.
UUID
MediumRules onlyshared tierAn RFC 4122 / RFC 9562 universally unique identifier, with or without hyphens.
Reported only where the UUID functions as a person- or session-level identifier. UUIDs in purely technical contexts — database keys, migration scripts, build artefacts — are not personal data.
Vehicles
LICENSE_PLATE
MediumRules led15 countriesA vehicle registration plate issued by a national or sub-national authority, which identifies a vehicle and through registration records its owner.
Does not cover: The chassis identifier (VIN) or the operator's licence number (DRIVERS_LICENSE).
Plate grammars differ sharply between countries, and several — the German pattern in particular — are validated against the issuing district codes rather than shape alone, because the generic shape collides with document references and standards codes.
VIN
MediumRules onlyChecksumshared tierA 17-character ISO 3779 vehicle identification number assigned by the manufacturer, identifying the physical chassis regardless of the plate currently registered to it.
Credentials and secrets
SECRET
MediumAI ledshared tier · 26 patternsA pattern-detectable secret or authentication artifact with a recognisable prefix or shape. The engine holds dedicated patterns for AWS access key IDs and secret access keys, GitHub tokens including fine-grained PATs, GitLab tokens and PATs, Stripe secret and publishable keys, OpenAI and Anthropic API keys, Slack tokens in several forms, JWTs, SendGrid keys, HashiCorp Vault tokens, Mailgun keys, Databricks PATs, npm tokens, Google API keys, DigitalOcean tokens, Twilio account SIDs, Discord bot tokens, PEM private keys, and connection strings with embedded credentials.
Two further rules generalise beyond the named providers: an assigned-secret-value rule, and a high-entropy-token rule that fires near credential context keywords.
CREDENTIAL
HighAI ledA credential or authentication artifact disclosed in prose rather than as a recognisable token: passwords, spelled-out keys, connection strings described in sentences, recovery codes, security questions and answers, and system PINs.
This is the unstructured counterpart to SECRET. Where SECRET is a shape the engine can match, CREDENTIAL is a sentence the model has to understand.
Dates
DOB
CriticalRules ledshared tier · context-gatedAn explicit calendar date stating when an identifiable person was born — typically the highest-value quasi-identifier in tabular data. Detected in DD/MM/YYYY and ISO YYYY-MM-DD forms, but only with a positive context cue: a date alone is never assumed to be a birth date.
The AI layer covers birth dates stated in prose and in regional formats outside those two. Where a birth date is embedded in a national identifier, the identifier is reported whole and the embedded date is not separately reported.
DATE_OF_DEATH
CriticalRules ledshared tier · context-gatedAn explicit calendar date stating when an identifiable person died, detected on the same mechanics as DOB and likewise requiring a positive cue — overlijdensdatum, Sterbedatum, date de décès and equivalents.
Does not cover: Funeral, memorial or probate dates.
Sensitive both under member-state post-mortem privacy provisions and for living next-of-kin contexts such as insurance claims and estate administration.
Organisational identifiers
CHAMBER_OF_COMMERCE
MediumRules ledChecksum10 countriesA company or business registration number issued by a commerce registry, trade register or statistics authority — the Dutch KvK number, German HRB, Belgian BCE/KBO, Danish CVR, Finnish business ID and Norwegian organisasjonsnummer among them. Several are checksum-validated.
Does not cover: VAT registration (VAT) or personal taxpayer identification (TAX_ID).
INTERNAL_ID
MediumAI ledAn organisation-assigned identifier that identifies a specific person, account, customer, employee, case or record within that organisation's domain, and that fits no more specific type. Covers employee numbers, badge and keycard numbers, customer and account references, and claim, policy and report references tied to a claimant.
Does not cover: Purchase-order numbers, cost-centre codes and ticket numbers that are not tied to a person. These are not personal data and are not reported.
This is the residual type — used only when nothing more specific applies.
How ambiguity is resolved
Applied consistently across every type. These answer most “why was this redacted” and “why wasn’t this redacted” questions.
Where one value could carry two types, the broader identity role takes precedence — a national ID used fiscally stays a national ID.
INTERNAL_ID is used only when no more specific type fits.
A value forming part of a larger annotated span is not also reported separately — a postal code inside a full address, a birth date inside a national ID.
The longest contiguous name at each occurrence is one detection, not several.
A class, label or category name is not personal data. “Customer segment: premium” identifies nobody.
Obvious placeholder and documentation values are recognised as such.
Public-figure references are handled by an explicit rule rather than treated identically to private individuals.
Identifiers from outside the supported countries are recognised on their own terms where their format allows.
Partial identifiers — a masked card number, the last four digits of an account — are treated as identifying where they remain re-identifying in context.
A value written in words or phonetically counts as the underlying value.
Pseudonymous identifiers remain personal data where re-identification is reasonably possible.
Country coverage — Rules Engine layer
31 jurisdictions with dedicated pattern sets. Every country listed has national-format patterns for bank accounts, national IDs, phone numbers and postal codes at minimum; the columns below show the types that vary between them.
A dash means no dedicated pattern for that type in that country— not “not detected”. The shared tier and the AI layer still apply. This is the most likely misreading of the table below.
| Country | VAT | Plate | Trade register | Tax ID | Passport | Other |
|---|---|---|---|---|---|---|
| Austria AT | ✓ | ✓ | — | — | — | |
| Belgium BE | ✓ | ✓ | ✓ | — | ✓ | Driving licence, healthcare provider |
| Bulgaria BG | ✓ | — | — | — | — | |
| Switzerland CH | ✓ | ✓ | ✓ | — | — | |
| Cyprus CY | ✓ | — | — | — | — | |
| Czechia CZ | ✓ | — | — | — | — | |
| Germany DE | ✓ | ✓ | ✓ | ✓ | ✓ | Social security, health insurance |
| Denmark DK | ✓ | ✓ | ✓ | — | — | |
| Estonia EE | ✓ | — | — | — | — | |
| Greece EL | ✓ | — | — | ✓ | — | |
| Spain ES | ✓ | ✓ | — | — | — | |
| Finland FI | ✓ | ✓ | ✓ | — | — | |
| France FR | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Croatia HR | ✓ | — | — | — | — | |
| Hungary HU | ✓ | — | — | ✓ | — | |
| Ireland IE | ✓ | — | — | — | — | |
| Iceland IS | — | ✓ | — | — | — | |
| Italy IT | ✓ | ✓ | — | — | — | |
| Lithuania LT | ✓ | — | — | — | — | |
| Luxembourg LU | ✓ | ✓ | ✓ | — | — | |
| Latvia LV | ✓ | — | — | — | — | |
| Malta MT | ✓ | — | — | — | — | |
| Netherlands NL | ✓ | ✓ | ✓ | — | ✓ | |
| Norway NO | ✓ | ✓ | ✓ | — | — | |
| Poland PL | ✓ | — | — | ✓ | — | |
| Portugal PT | ✓ | ✓ | — | — | — | |
| Romania RO | ✓ | — | — | — | — | |
| Sweden SE | ✓ | ✓ | ✓ | — | — | |
| Slovenia SI | ✓ | — | — | — | — | |
| Slovakia SK | ✓ | — | — | — | — | |
| United Kingdom UK | ✓ | — | — | — | — | NHS number |
Applies to documents from every country and covers: IBAN, BIC, credit cards, e-mail, international phone numbers, IPv4, IPv6, MAC addresses, UUIDs, IMEI, VIN, GPS coordinates, social handles, dates of birth and death, and the secret formats listed under SECRET.
Start with the types that ship today
Everything marked Rules only or Rules led runs locally, right now, with no network calls.