{
  "generated_by": "site/gen_data.py",
  "taxonomy_version": "2026.11",
  "default_types": [
    "ADDRESS",
    "EMAIL",
    "GOV_ID",
    "IP_ADDRESS",
    "PAYMENT",
    "PERSON",
    "PHONE",
    "SECRET",
    "USERNAME"
  ],
  "types": [
    {
      "name": "SECRET",
      "class": "secret",
      "rank": 40,
      "prefer": "rule",
      "default": true
    },
    {
      "name": "GOV_ID",
      "class": "gov_id",
      "rank": 30,
      "prefer": "rule",
      "default": true
    },
    {
      "name": "PAYMENT",
      "class": "payment",
      "rank": 20,
      "prefer": "rule",
      "default": true
    },
    {
      "name": "ADDRESS",
      "class": "person",
      "rank": 10,
      "prefer": "model",
      "default": true
    },
    {
      "name": "EMAIL",
      "class": "contact",
      "rank": 10,
      "prefer": "rule",
      "default": true
    },
    {
      "name": "IP_ADDRESS",
      "class": "contact",
      "rank": 10,
      "prefer": "rule",
      "default": true
    },
    {
      "name": "PERSON",
      "class": "person",
      "rank": 10,
      "prefer": "model",
      "default": true
    },
    {
      "name": "PHONE",
      "class": "contact",
      "rank": 10,
      "prefer": "rule",
      "default": true
    },
    {
      "name": "USERNAME",
      "class": "contact",
      "rank": 10,
      "prefer": "model",
      "default": true
    },
    {
      "name": "DATE_OF_BIRTH",
      "class": "quasi",
      "rank": 0,
      "prefer": "model",
      "default": false
    },
    {
      "name": "ORG",
      "class": "quasi",
      "rank": 0,
      "prefer": "model",
      "default": false
    }
  ],
  "lanes": [
    {
      "name": "rules",
      "label": "Rules and checksums",
      "revision": "rules",
      "repo_id": null,
      "note": "No weights, no download. Patterns and checksums only, so names stay out."
    },
    {
      "name": "en-closed",
      "label": "Closed encoder (ModernBERT)",
      "revision": "3d0f39eceaf0c95fc07943064c58fba3fff60243",
      "repo_id": "antoniogr7/pii-identifier-v0.1",
      "note": "Local ModernBERT weights. Finds names and addresses as well as structured forms."
    }
  ],
  "examples": [
    {
      "id": "support-ticket",
      "title": "A support ticket",
      "blurb": "A phone number, an email, and a test card. The order id stays clear.",
      "why": "Three structured forms, each confirmed by a grammar or a checksum. `Order 48291` is not PII, so it stays visible.",
      "tags": [
        "EMAIL",
        "PHONE",
        "PAYMENT"
      ],
      "text": "Customer Ada Lovelace called from +852 5555 0101. Email ada@example.com. Card 4242424242424242. Order 48291.",
      "chars": 108,
      "lanes": {
        "rules": {
          "spans": [
            {
              "type": "PHONE",
              "class": "contact",
              "start": 34,
              "end": 48,
              "text": "+852 5555 0101",
              "score": null,
              "detector_id": "rules.phone",
              "raw_label": "phone"
            },
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 56,
              "end": 71,
              "text": "ada@example.com",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            },
            {
              "type": "PAYMENT",
              "class": "payment",
              "start": 78,
              "end": 94,
              "text": "4242424242424242",
              "score": 1.0,
              "detector_id": "rules.card",
              "raw_label": "card_number"
            }
          ],
          "masked": "Customer Ada Lovelace called from <PHONE_1>. Email <EMAIL_1>. Card <PAYMENT_1>. Order 48291.",
          "vault": [
            {
              "placeholder": "<PHONE_1>",
              "value": "+852 5555 0101"
            },
            {
              "placeholder": "<EMAIL_1>",
              "value": "ada@example.com"
            },
            {
              "placeholder": "<PAYMENT_1>",
              "value": "4242424242424242"
            }
          ],
          "dropped": 0,
          "revision": "rules"
        },
        "en-closed": {
          "spans": [
            {
              "type": "PERSON",
              "class": "person",
              "start": 9,
              "end": 12,
              "text": "Ada",
              "score": 0.9992867112159729,
              "detector_id": "hf.antoniogr7/pii-identifier-v0.1",
              "raw_label": "first_name"
            },
            {
              "type": "PERSON",
              "class": "person",
              "start": 13,
              "end": 21,
              "text": "Lovelace",
              "score": 0.9986006617546082,
              "detector_id": "hf.antoniogr7/pii-identifier-v0.1",
              "raw_label": "last_name"
            },
            {
              "type": "PHONE",
              "class": "contact",
              "start": 34,
              "end": 48,
              "text": "+852 5555 0101",
              "score": null,
              "detector_id": "rules.phone",
              "raw_label": "phone"
            },
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 56,
              "end": 71,
              "text": "ada@example.com",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            },
            {
              "type": "PAYMENT",
              "class": "payment",
              "start": 78,
              "end": 94,
              "text": "4242424242424242",
              "score": 1.0,
              "detector_id": "rules.card",
              "raw_label": "card_number"
            }
          ],
          "masked": "Customer <PERSON_1> <PERSON_2> called from <PHONE_1>. Email <EMAIL_1>. Card <PAYMENT_1>. Order 48291.",
          "vault": [
            {
              "placeholder": "<PERSON_1>",
              "value": "Ada"
            },
            {
              "placeholder": "<PERSON_2>",
              "value": "Lovelace"
            },
            {
              "placeholder": "<PHONE_1>",
              "value": "+852 5555 0101"
            },
            {
              "placeholder": "<EMAIL_1>",
              "value": "ada@example.com"
            },
            {
              "placeholder": "<PAYMENT_1>",
              "value": "4242424242424242"
            }
          ],
          "dropped": 0,
          "revision": "3d0f39eceaf0c95fc07943064c58fba3fff60243"
        }
      }
    },
    {
      "id": "secret-note",
      "title": "A note with a password",
      "blurb": "The password is masked. It never enters the vault.",
      "why": "A secret is irreversible on purpose. Restoring it would write a password into the next system.",
      "tags": [
        "SECRET",
        "EMAIL",
        "PHONE"
      ],
      "text": "Ask Ada Lovelace <ada@example.com> to call +1 202 555 0147 about ticket 77. Do not include the password hunter2 in the note.",
      "chars": 124,
      "lanes": {
        "rules": {
          "spans": [
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 18,
              "end": 33,
              "text": "ada@example.com",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            },
            {
              "type": "PHONE",
              "class": "contact",
              "start": 43,
              "end": 58,
              "text": "+1 202 555 0147",
              "score": 1.0,
              "detector_id": "rules.phone",
              "raw_label": "phone"
            },
            {
              "type": "SECRET",
              "class": "secret",
              "start": 104,
              "end": 111,
              "text": "hunter2",
              "score": null,
              "detector_id": "rules.secret",
              "raw_label": "password"
            }
          ],
          "masked": "Ask Ada Lovelace <<EMAIL_1>> to call <PHONE_1> about ticket 77. Do not include the password <SECRET> in the note.",
          "vault": [
            {
              "placeholder": "<EMAIL_1>",
              "value": "ada@example.com"
            },
            {
              "placeholder": "<PHONE_1>",
              "value": "+1 202 555 0147"
            }
          ],
          "dropped": 0,
          "revision": "rules"
        },
        "en-closed": {
          "spans": [
            {
              "type": "PERSON",
              "class": "person",
              "start": 4,
              "end": 7,
              "text": "Ada",
              "score": 0.9978262782096863,
              "detector_id": "hf.antoniogr7/pii-identifier-v0.1",
              "raw_label": "first_name"
            },
            {
              "type": "PERSON",
              "class": "person",
              "start": 8,
              "end": 16,
              "text": "Lovelace",
              "score": 0.9881123900413513,
              "detector_id": "hf.antoniogr7/pii-identifier-v0.1",
              "raw_label": "last_name"
            },
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 18,
              "end": 33,
              "text": "ada@example.com",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            },
            {
              "type": "PHONE",
              "class": "contact",
              "start": 43,
              "end": 58,
              "text": "+1 202 555 0147",
              "score": 1.0,
              "detector_id": "rules.phone",
              "raw_label": "phone"
            },
            {
              "type": "SECRET",
              "class": "secret",
              "start": 104,
              "end": 111,
              "text": "hunter2",
              "score": null,
              "detector_id": "rules.secret",
              "raw_label": "password"
            }
          ],
          "masked": "Ask <PERSON_1> <PERSON_2> <<EMAIL_1>> to call <PHONE_1> about ticket 77. Do not include the password <SECRET> in the note.",
          "vault": [
            {
              "placeholder": "<PERSON_1>",
              "value": "Ada"
            },
            {
              "placeholder": "<PERSON_2>",
              "value": "Lovelace"
            },
            {
              "placeholder": "<EMAIL_1>",
              "value": "ada@example.com"
            },
            {
              "placeholder": "<PHONE_1>",
              "value": "+1 202 555 0147"
            }
          ],
          "dropped": 0,
          "revision": "3d0f39eceaf0c95fc07943064c58fba3fff60243"
        }
      }
    },
    {
      "id": "payments",
      "title": "A wire transfer",
      "blurb": "A valid IBAN is found. A card that fails Luhn is ignored.",
      "why": "The IBAN passes the MOD-97 check. `4242424242424243` fails Luhn, so the rule refuses it rather than guessing.",
      "tags": [
        "PAYMENT",
        "EMAIL",
        "IP_ADDRESS"
      ],
      "text": "Wire to IBAN GB82WEST12345698765432 from card 4242424242424243. Reach ops at ops@example.org or 203.0.113.10.",
      "chars": 109,
      "lanes": {
        "rules": {
          "spans": [
            {
              "type": "PAYMENT",
              "class": "payment",
              "start": 13,
              "end": 35,
              "text": "GB82WEST12345698765432",
              "score": 1.0,
              "detector_id": "rules.iban",
              "raw_label": "iban"
            },
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 77,
              "end": 92,
              "text": "ops@example.org",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            },
            {
              "type": "IP_ADDRESS",
              "class": "contact",
              "start": 96,
              "end": 108,
              "text": "203.0.113.10",
              "score": 1.0,
              "detector_id": "rules.ip",
              "raw_label": "ip_address"
            }
          ],
          "masked": "Wire to IBAN <PAYMENT_1> from card 4242424242424243. Reach ops at <EMAIL_1> or <IP_ADDRESS_1>.",
          "vault": [
            {
              "placeholder": "<PAYMENT_1>",
              "value": "GB82WEST12345698765432"
            },
            {
              "placeholder": "<EMAIL_1>",
              "value": "ops@example.org"
            },
            {
              "placeholder": "<IP_ADDRESS_1>",
              "value": "203.0.113.10"
            }
          ],
          "dropped": 0,
          "revision": "rules"
        },
        "en-closed": {
          "spans": [
            {
              "type": "PAYMENT",
              "class": "payment",
              "start": 13,
              "end": 35,
              "text": "GB82WEST12345698765432",
              "score": 1.0,
              "detector_id": "rules.iban",
              "raw_label": "iban"
            },
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 77,
              "end": 92,
              "text": "ops@example.org",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            },
            {
              "type": "IP_ADDRESS",
              "class": "contact",
              "start": 96,
              "end": 108,
              "text": "203.0.113.10",
              "score": 1.0,
              "detector_id": "rules.ip",
              "raw_label": "ip_address"
            }
          ],
          "masked": "Wire to IBAN <PAYMENT_1> from card 4242424242424243. Reach ops at <EMAIL_1> or <IP_ADDRESS_1>.",
          "vault": [
            {
              "placeholder": "<PAYMENT_1>",
              "value": "GB82WEST12345698765432"
            },
            {
              "placeholder": "<EMAIL_1>",
              "value": "ops@example.org"
            },
            {
              "placeholder": "<IP_ADDRESS_1>",
              "value": "203.0.113.10"
            }
          ],
          "dropped": 0,
          "revision": "3d0f39eceaf0c95fc07943064c58fba3fff60243"
        }
      }
    },
    {
      "id": "chinese",
      "title": "A Chinese contact line",
      "blurb": "A Chinese mobile number and an email, on the rule lane.",
      "why": "The rule lane is language neutral for structured forms. The phone still passes libphonenumber.",
      "tags": [
        "PHONE",
        "EMAIL"
      ],
      "text": "联系人张伟，手机13800138000，邮箱wei@example.com。",
      "chars": 38,
      "lanes": {
        "rules": {
          "spans": [
            {
              "type": "PHONE",
              "class": "contact",
              "start": 8,
              "end": 19,
              "text": "13800138000",
              "score": 1.0,
              "detector_id": "rules.phone",
              "raw_label": "phone"
            },
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 22,
              "end": 37,
              "text": "wei@example.com",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            }
          ],
          "masked": "联系人张伟，手机<PHONE_1>，邮箱<EMAIL_1>。",
          "vault": [
            {
              "placeholder": "<PHONE_1>",
              "value": "13800138000"
            },
            {
              "placeholder": "<EMAIL_1>",
              "value": "wei@example.com"
            }
          ],
          "dropped": 0,
          "revision": "rules"
        },
        "en-closed": {
          "spans": [
            {
              "type": "PERSON",
              "class": "person",
              "start": 3,
              "end": 5,
              "text": "张伟",
              "score": 0.562475860118866,
              "detector_id": "hf.antoniogr7/pii-identifier-v0.1",
              "raw_label": "first_name"
            },
            {
              "type": "PHONE",
              "class": "contact",
              "start": 8,
              "end": 19,
              "text": "13800138000",
              "score": 1.0,
              "detector_id": "rules.phone",
              "raw_label": "phone"
            },
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 22,
              "end": 37,
              "text": "wei@example.com",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            }
          ],
          "masked": "联系人<PERSON_1>，手机<PHONE_1>，邮箱<EMAIL_1>。",
          "vault": [
            {
              "placeholder": "<PERSON_1>",
              "value": "张伟"
            },
            {
              "placeholder": "<PHONE_1>",
              "value": "13800138000"
            },
            {
              "placeholder": "<EMAIL_1>",
              "value": "wei@example.com"
            }
          ],
          "dropped": 0,
          "revision": "3d0f39eceaf0c95fc07943064c58fba3fff60243"
        }
      }
    },
    {
      "id": "placeholders",
      "title": "Two people, two placeholders",
      "blurb": "A repeat reuses its token. A new slice gets a new number.",
      "why": "The same address twice gets `<EMAIL_1>` twice. A second address gets `<EMAIL_2>`.",
      "tags": [
        "EMAIL"
      ],
      "text": "Write to ada@example.com or grace@example.com. The desk address is ada@example.com.",
      "chars": 83,
      "lanes": {
        "rules": {
          "spans": [
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 9,
              "end": 24,
              "text": "ada@example.com",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            },
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 28,
              "end": 45,
              "text": "grace@example.com",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            },
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 67,
              "end": 82,
              "text": "ada@example.com",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            }
          ],
          "masked": "Write to <EMAIL_1> or <EMAIL_2>. The desk address is <EMAIL_1>.",
          "vault": [
            {
              "placeholder": "<EMAIL_1>",
              "value": "ada@example.com"
            },
            {
              "placeholder": "<EMAIL_2>",
              "value": "grace@example.com"
            }
          ],
          "dropped": 0,
          "revision": "rules"
        },
        "en-closed": {
          "spans": [
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 9,
              "end": 24,
              "text": "ada@example.com",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            },
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 28,
              "end": 45,
              "text": "grace@example.com",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            },
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 67,
              "end": 82,
              "text": "ada@example.com",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            }
          ],
          "masked": "Write to <EMAIL_1> or <EMAIL_2>. The desk address is <EMAIL_1>.",
          "vault": [
            {
              "placeholder": "<EMAIL_1>",
              "value": "ada@example.com"
            },
            {
              "placeholder": "<EMAIL_2>",
              "value": "grace@example.com"
            }
          ],
          "dropped": 0,
          "revision": "3d0f39eceaf0c95fc07943064c58fba3fff60243"
        }
      }
    },
    {
      "id": "negatives",
      "title": "Text with no PII",
      "blurb": "An order id, a SKU, and a plain sentence.",
      "why": "These look numeric, and none is a published PII form. A locator that spans them is guessing.",
      "tags": [],
      "text": "Order 48291 ships as SKU-77219 from warehouse 4. The build finished in 12 minutes on node 3.",
      "chars": 92,
      "lanes": {
        "rules": {
          "spans": [],
          "masked": "Order 48291 ships as SKU-77219 from warehouse 4. The build finished in 12 minutes on node 3.",
          "vault": [],
          "dropped": 0,
          "revision": "rules"
        },
        "en-closed": {
          "spans": [],
          "masked": "Order 48291 ships as SKU-77219 from warehouse 4. The build finished in 12 minutes on node 3.",
          "vault": [],
          "dropped": 0,
          "revision": "3d0f39eceaf0c95fc07943064c58fba3fff60243"
        }
      }
    },
    {
      "id": "long-text",
      "title": "Long text, original offsets",
      "blurb": "The email sits far into the string. The offset still indexes the whole source.",
      "why": "A long document is split into windows internally. The public offset is never a window offset.",
      "tags": [
        "EMAIL"
      ],
      "text": "Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Email ada@example.com for the desk.",
      "chars": 395,
      "lanes": {
        "rules": {
          "spans": [
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 366,
              "end": 381,
              "text": "ada@example.com",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            }
          ],
          "masked": "Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Email <EMAIL_1> for the desk.",
          "vault": [
            {
              "placeholder": "<EMAIL_1>",
              "value": "ada@example.com"
            }
          ],
          "dropped": 0,
          "revision": "rules"
        },
        "en-closed": {
          "spans": [
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 366,
              "end": 381,
              "text": "ada@example.com",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            }
          ],
          "masked": "Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Note. Email <EMAIL_1> for the desk.",
          "vault": [
            {
              "placeholder": "<EMAIL_1>",
              "value": "ada@example.com"
            }
          ],
          "dropped": 0,
          "revision": "3d0f39eceaf0c95fc07943064c58fba3fff60243"
        }
      }
    },
    {
      "id": "logs",
      "title": "A log line",
      "blurb": "An IP address and an email inside a structured line.",
      "why": "An IP address passes an RFC 4291 or RFC 3986 match and then a stdlib parse.",
      "tags": [
        "IP_ADDRESS",
        "EMAIL"
      ],
      "text": "2026-11-04T09:12:33Z level=warn user=ada@example.com src=198.51.100.7 path=/v1/orders action=denied",
      "chars": 99,
      "lanes": {
        "rules": {
          "spans": [
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 32,
              "end": 52,
              "text": "user=ada@example.com",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            },
            {
              "type": "IP_ADDRESS",
              "class": "contact",
              "start": 57,
              "end": 69,
              "text": "198.51.100.7",
              "score": 1.0,
              "detector_id": "rules.ip",
              "raw_label": "ip_address"
            }
          ],
          "masked": "2026-11-04T09:12:33Z level=warn <EMAIL_1> src=<IP_ADDRESS_1> path=/v1/orders action=denied",
          "vault": [
            {
              "placeholder": "<EMAIL_1>",
              "value": "user=ada@example.com"
            },
            {
              "placeholder": "<IP_ADDRESS_1>",
              "value": "198.51.100.7"
            }
          ],
          "dropped": 0,
          "revision": "rules"
        },
        "en-closed": {
          "spans": [
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 32,
              "end": 52,
              "text": "user=ada@example.com",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            },
            {
              "type": "IP_ADDRESS",
              "class": "contact",
              "start": 57,
              "end": 69,
              "text": "198.51.100.7",
              "score": 1.0,
              "detector_id": "rules.ip",
              "raw_label": "ip_address"
            }
          ],
          "masked": "2026-11-04T09:12:33Z level=warn <EMAIL_1> src=<IP_ADDRESS_1> path=/v1/orders action=denied",
          "vault": [
            {
              "placeholder": "<EMAIL_1>",
              "value": "user=ada@example.com"
            },
            {
              "placeholder": "<IP_ADDRESS_1>",
              "value": "198.51.100.7"
            }
          ],
          "dropped": 0,
          "revision": "3d0f39eceaf0c95fc07943064c58fba3fff60243"
        }
      }
    },
    {
      "id": "prompt",
      "title": "A prompt before it leaves",
      "blurb": "What a caller sends to a model after masking.",
      "why": "This is the product case: keep the sentence, remove the person, prove which characters left.",
      "tags": [
        "EMAIL",
        "PERSON",
        "SECRET"
      ],
      "text": "Summarise this for the on-call engineer: Ada Lovelace reported that ada@example.com cannot reset the password hunter2 from Lisbon.",
      "chars": 130,
      "lanes": {
        "rules": {
          "spans": [
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 68,
              "end": 83,
              "text": "ada@example.com",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            },
            {
              "type": "SECRET",
              "class": "secret",
              "start": 110,
              "end": 117,
              "text": "hunter2",
              "score": null,
              "detector_id": "rules.secret",
              "raw_label": "password"
            }
          ],
          "masked": "Summarise this for the on-call engineer: Ada Lovelace reported that <EMAIL_1> cannot reset the password <SECRET> from Lisbon.",
          "vault": [
            {
              "placeholder": "<EMAIL_1>",
              "value": "ada@example.com"
            }
          ],
          "dropped": 0,
          "revision": "rules"
        },
        "en-closed": {
          "spans": [
            {
              "type": "PERSON",
              "class": "person",
              "start": 41,
              "end": 44,
              "text": "Ada",
              "score": 0.9981321692466736,
              "detector_id": "hf.antoniogr7/pii-identifier-v0.1",
              "raw_label": "first_name"
            },
            {
              "type": "PERSON",
              "class": "person",
              "start": 45,
              "end": 53,
              "text": "Lovelace",
              "score": 0.9971973896026611,
              "detector_id": "hf.antoniogr7/pii-identifier-v0.1",
              "raw_label": "last_name"
            },
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 68,
              "end": 83,
              "text": "ada@example.com",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            },
            {
              "type": "SECRET",
              "class": "secret",
              "start": 110,
              "end": 117,
              "text": "hunter2",
              "score": null,
              "detector_id": "rules.secret",
              "raw_label": "password"
            }
          ],
          "masked": "Summarise this for the on-call engineer: <PERSON_1> <PERSON_2> reported that <EMAIL_1> cannot reset the password <SECRET> from Lisbon.",
          "vault": [
            {
              "placeholder": "<PERSON_1>",
              "value": "Ada"
            },
            {
              "placeholder": "<PERSON_2>",
              "value": "Lovelace"
            },
            {
              "placeholder": "<EMAIL_1>",
              "value": "ada@example.com"
            }
          ],
          "dropped": 0,
          "revision": "3d0f39eceaf0c95fc07943064c58fba3fff60243"
        }
      }
    },
    {
      "id": "names",
      "title": "Two names",
      "blurb": "A person name needs a model lane. The rule lane finds neither.",
      "why": "A name has no grammar and no checksum. Rules own structured forms, models own names.",
      "tags": [
        "PERSON"
      ],
      "text": "Ada Lovelace met Grace Hopper at the lab to review the schedule.",
      "chars": 64,
      "lanes": {
        "rules": {
          "spans": [],
          "masked": "Ada Lovelace met Grace Hopper at the lab to review the schedule.",
          "vault": [],
          "dropped": 0,
          "revision": "rules"
        },
        "en-closed": {
          "spans": [
            {
              "type": "PERSON",
              "class": "person",
              "start": 0,
              "end": 3,
              "text": "Ada",
              "score": 0.9990211725234985,
              "detector_id": "hf.antoniogr7/pii-identifier-v0.1",
              "raw_label": "first_name"
            },
            {
              "type": "PERSON",
              "class": "person",
              "start": 4,
              "end": 12,
              "text": "Lovelace",
              "score": 0.9959753155708313,
              "detector_id": "hf.antoniogr7/pii-identifier-v0.1",
              "raw_label": "last_name"
            },
            {
              "type": "PERSON",
              "class": "person",
              "start": 17,
              "end": 22,
              "text": "Grace",
              "score": 0.9987951517105103,
              "detector_id": "hf.antoniogr7/pii-identifier-v0.1",
              "raw_label": "first_name"
            },
            {
              "type": "PERSON",
              "class": "person",
              "start": 23,
              "end": 29,
              "text": "Hopper",
              "score": 0.9965230226516724,
              "detector_id": "hf.antoniogr7/pii-identifier-v0.1",
              "raw_label": "last_name"
            }
          ],
          "masked": "<PERSON_1> <PERSON_2> met <PERSON_3> <PERSON_4> at the lab to review the schedule.",
          "vault": [
            {
              "placeholder": "<PERSON_1>",
              "value": "Ada"
            },
            {
              "placeholder": "<PERSON_2>",
              "value": "Lovelace"
            },
            {
              "placeholder": "<PERSON_3>",
              "value": "Grace"
            },
            {
              "placeholder": "<PERSON_4>",
              "value": "Hopper"
            }
          ],
          "dropped": 0,
          "revision": "3d0f39eceaf0c95fc07943064c58fba3fff60243"
        }
      }
    },
    {
      "id": "address",
      "title": "A postal address",
      "blurb": "A street address, a person, and an email together.",
      "why": "An address is a model type. The email beside it is a rule type. The locator merges both.",
      "tags": [
        "ADDRESS",
        "PERSON",
        "EMAIL"
      ],
      "text": "Ship the replacement to Grace Hopper, 12 Rue de Rivoli, Paris. Confirm on grace@example.com before Friday.",
      "chars": 106,
      "lanes": {
        "rules": {
          "spans": [
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 74,
              "end": 91,
              "text": "grace@example.com",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            }
          ],
          "masked": "Ship the replacement to Grace Hopper, 12 Rue de Rivoli, Paris. Confirm on <EMAIL_1> before Friday.",
          "vault": [
            {
              "placeholder": "<EMAIL_1>",
              "value": "grace@example.com"
            }
          ],
          "dropped": 0,
          "revision": "rules"
        },
        "en-closed": {
          "spans": [
            {
              "type": "PERSON",
              "class": "person",
              "start": 24,
              "end": 29,
              "text": "Grace",
              "score": 0.9971740245819092,
              "detector_id": "hf.antoniogr7/pii-identifier-v0.1",
              "raw_label": "first_name"
            },
            {
              "type": "PERSON",
              "class": "person",
              "start": 30,
              "end": 36,
              "text": "Hopper",
              "score": 0.9974498748779297,
              "detector_id": "hf.antoniogr7/pii-identifier-v0.1",
              "raw_label": "last_name"
            },
            {
              "type": "ADDRESS",
              "class": "person",
              "start": 38,
              "end": 54,
              "text": "12 Rue de Rivoli",
              "score": 0.9966519474983215,
              "detector_id": "hf.antoniogr7/pii-identifier-v0.1",
              "raw_label": "street_address"
            },
            {
              "type": "ADDRESS",
              "class": "person",
              "start": 56,
              "end": 61,
              "text": "Paris",
              "score": 0.8685413002967834,
              "detector_id": "hf.antoniogr7/pii-identifier-v0.1",
              "raw_label": "city"
            },
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 74,
              "end": 91,
              "text": "grace@example.com",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            }
          ],
          "masked": "Ship the replacement to <PERSON_1> <PERSON_2>, <ADDRESS_1>, <ADDRESS_2>. Confirm on <EMAIL_1> before Friday.",
          "vault": [
            {
              "placeholder": "<PERSON_1>",
              "value": "Grace"
            },
            {
              "placeholder": "<PERSON_2>",
              "value": "Hopper"
            },
            {
              "placeholder": "<ADDRESS_1>",
              "value": "12 Rue de Rivoli"
            },
            {
              "placeholder": "<ADDRESS_2>",
              "value": "Paris"
            },
            {
              "placeholder": "<EMAIL_1>",
              "value": "grace@example.com"
            }
          ],
          "dropped": 0,
          "revision": "3d0f39eceaf0c95fc07943064c58fba3fff60243"
        }
      }
    },
    {
      "id": "gov-id",
      "title": "A national id",
      "blurb": "A US SSN pattern. The rule lane is silent, and the model lane is not.",
      "why": "V1 ships no national id pattern, by design. This row shows what the model lane buys.",
      "tags": [
        "GOV_ID",
        "PERSON"
      ],
      "text": "Applicant Ada Lovelace, SSN 121-45-6789, signed the form today.",
      "chars": 63,
      "lanes": {
        "rules": {
          "spans": [],
          "masked": "Applicant Ada Lovelace, SSN 121-45-6789, signed the form today.",
          "vault": [],
          "dropped": 0,
          "revision": "rules"
        },
        "en-closed": {
          "spans": [
            {
              "type": "PERSON",
              "class": "person",
              "start": 10,
              "end": 13,
              "text": "Ada",
              "score": 0.9978285431861877,
              "detector_id": "hf.antoniogr7/pii-identifier-v0.1",
              "raw_label": "first_name"
            },
            {
              "type": "PERSON",
              "class": "person",
              "start": 14,
              "end": 22,
              "text": "Lovelace",
              "score": 0.9963391423225403,
              "detector_id": "hf.antoniogr7/pii-identifier-v0.1",
              "raw_label": "last_name"
            },
            {
              "type": "GOV_ID",
              "class": "gov_id",
              "start": 28,
              "end": 39,
              "text": "121-45-6789",
              "score": 0.8991077542304993,
              "detector_id": "hf.antoniogr7/pii-identifier-v0.1",
              "raw_label": "ssn"
            }
          ],
          "masked": "Applicant <PERSON_1> <PERSON_2>, SSN <GOV_ID_1>, signed the form today.",
          "vault": [
            {
              "placeholder": "<PERSON_1>",
              "value": "Ada"
            },
            {
              "placeholder": "<PERSON_2>",
              "value": "Lovelace"
            },
            {
              "placeholder": "<GOV_ID_1>",
              "value": "121-45-6789"
            }
          ],
          "dropped": 0,
          "revision": "3d0f39eceaf0c95fc07943064c58fba3fff60243"
        }
      }
    },
    {
      "id": "account",
      "title": "An account handle",
      "blurb": "A login name, which is not a display name.",
      "why": "`USERNAME` is a model type. It is the string that marks an account, not the person.",
      "tags": [
        "USERNAME",
        "EMAIL"
      ],
      "text": "User lkernan signed in and asked to reset access for lkernan@example.com.",
      "chars": 73,
      "lanes": {
        "rules": {
          "spans": [
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 53,
              "end": 72,
              "text": "lkernan@example.com",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            }
          ],
          "masked": "User lkernan signed in and asked to reset access for <EMAIL_1>.",
          "vault": [
            {
              "placeholder": "<EMAIL_1>",
              "value": "lkernan@example.com"
            }
          ],
          "dropped": 0,
          "revision": "rules"
        },
        "en-closed": {
          "spans": [
            {
              "type": "USERNAME",
              "class": "contact",
              "start": 5,
              "end": 12,
              "text": "lkernan",
              "score": 0.9941150546073914,
              "detector_id": "hf.antoniogr7/pii-identifier-v0.1",
              "raw_label": "user_name"
            },
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 53,
              "end": 72,
              "text": "lkernan@example.com",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            }
          ],
          "masked": "User <USERNAME_1> signed in and asked to reset access for <EMAIL_1>.",
          "vault": [
            {
              "placeholder": "<USERNAME_1>",
              "value": "lkernan"
            },
            {
              "placeholder": "<EMAIL_1>",
              "value": "lkernan@example.com"
            }
          ],
          "dropped": 0,
          "revision": "3d0f39eceaf0c95fc07943064c58fba3fff60243"
        }
      }
    },
    {
      "id": "finance",
      "title": "A finance note",
      "blurb": "A card, a routing number, and a name in a bank context.",
      "why": "The hardest case in the public score. A finance document does not look like a persona note.",
      "tags": [
        "PAYMENT",
        "PERSON",
        "EMAIL"
      ],
      "text": "The transfer from Grace Hopper uses card 5490 3479 1287 6543 and routing number 271210785. Receipt to grace@example.com.",
      "chars": 120,
      "lanes": {
        "rules": {
          "spans": [
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 102,
              "end": 119,
              "text": "grace@example.com",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            }
          ],
          "masked": "The transfer from Grace Hopper uses card 5490 3479 1287 6543 and routing number 271210785. Receipt to <EMAIL_1>.",
          "vault": [
            {
              "placeholder": "<EMAIL_1>",
              "value": "grace@example.com"
            }
          ],
          "dropped": 0,
          "revision": "rules"
        },
        "en-closed": {
          "spans": [
            {
              "type": "PERSON",
              "class": "person",
              "start": 18,
              "end": 23,
              "text": "Grace",
              "score": 0.9970589876174927,
              "detector_id": "hf.antoniogr7/pii-identifier-v0.1",
              "raw_label": "first_name"
            },
            {
              "type": "PERSON",
              "class": "person",
              "start": 24,
              "end": 30,
              "text": "Hopper",
              "score": 0.9982434511184692,
              "detector_id": "hf.antoniogr7/pii-identifier-v0.1",
              "raw_label": "last_name"
            },
            {
              "type": "PAYMENT",
              "class": "payment",
              "start": 41,
              "end": 60,
              "text": "5490 3479 1287 6543",
              "score": 0.9983824491500854,
              "detector_id": "hf.antoniogr7/pii-identifier-v0.1",
              "raw_label": "credit_debit_card"
            },
            {
              "type": "EMAIL",
              "class": "contact",
              "start": 102,
              "end": 119,
              "text": "grace@example.com",
              "score": null,
              "detector_id": "rules.email",
              "raw_label": "email"
            }
          ],
          "masked": "The transfer from <PERSON_1> <PERSON_2> uses card <PAYMENT_1> and routing number 271210785. Receipt to <EMAIL_1>.",
          "vault": [
            {
              "placeholder": "<PERSON_1>",
              "value": "Grace"
            },
            {
              "placeholder": "<PERSON_2>",
              "value": "Hopper"
            },
            {
              "placeholder": "<PAYMENT_1>",
              "value": "5490 3479 1287 6543"
            },
            {
              "placeholder": "<EMAIL_1>",
              "value": "grace@example.com"
            }
          ],
          "dropped": 0,
          "revision": "3d0f39eceaf0c95fc07943064c58fba3fff60243"
        }
      }
    }
  ]
}
