Our commitment not to re-identify

Nulkan keeps the data it de-identifies in de-identified form. We do not re-identify, and we do not try to re-identify, any person or company in it. The one exception is testing our own de-identification, inside the isolated account that holds the data, so we can find and fix what we missed. Every buyer, and every customer of a buyer, is bound by contract to the same duty and to make no contact with anyone in the data.

This commitment is public and permanent. It applies to every dataset we hold.

The standard we follow

California's privacy law sets three conditions for data to count as de-identified (Cal. Civ. Code 1798.140(m)). We follow all three.

  1. 1Reasonable technical measures so it cannot be linked to a personThe method below
  2. 2A public commitment not to re-identify itThe statement above
  3. 3The same duty placed on every recipient by contractOur buyer terms

How we de-identify

  1. 1

    Remove what we leave out by default

    Direct messages, HR and payroll, anything to or from the company's lawyers, anything about a person's health, and every category we never take.

  2. 2

    Turn files into text

    We extract the text from documents and text PDFs, and strip metadata, comments, tracked changes and photo location data. Images, scanned PDFs, audio and video are dropped. In code, commit authors become placeholders.

  3. 3

    Find identifiers in three layers

    • Pattern rules catch structured identifiers: email addresses, phone numbers, account numbers, street addresses and signatures.
    • An open-source detector catches common personal data.
    • An open-weight language model, running inside the deal's isolated account, catches names and identifiers in context.
  4. 4

    Replace them consistently

    Each person, company, client, product and place gets a placeholder such as [PERSON_12] or [COMPANY_4] that stays the same across the dataset, so threads still read correctly.

    A job title held by one person becomes a general one: "our only bookkeeper" becomes "a staff member".

    Placeholders come from a keyed hash with a secret key for each dataset, and the key is destroyed when the raw data is deleted.

  5. 5

    Measure the result

    See below. Nothing is released until it passes.

How we measure it

Release requires at least 99% recall for each identifier type: names, email addresses, phone numbers, street addresses, account numbers and one-of-a-kind job titles.

  • Recall is measured separately in each source: email, chat, CRM, code and the rest.
  • Each measurement uses at least 500 hand-labeled cases and allows at most 1 miss.
  • The labels come from a person working inside the deal's isolated account, never from the process being tested.
  • Someone outside the deal team then tries to re-identify people and companies in the output. A dataset that fails this test is not sold.
  • Our largest deals also get an independent reviewer.
  • Below the bar, we fix the process, re-run it and review by hand.
  • The results go into a de-identification report that ships with the dataset.

Checks before release

  • Exact and near-duplicate detection, to catch copies and padding.
  • File-type detection and media hashing, to catch junk and media stuffed in to look bigger.
  • Verified volume against claimed volume.
  • Date-range and source checks against what the owner told us.
  • Language and human-written share, to catch machine-made filler.
  • An AI-generated content check. What we find is disclosed to buyers.
  • A secrets scan for keys, passwords and tokens. A live secret is redacted and reported to the owner to change.
  • Third-party works, such as open-source code, outside reports and attachments owned by others, are removed.
  • A scan for every category we never take.

Isolation

  • Each deal runs in its own isolated cloud account.
  • Each has its own encryption key, no public access and no route to the internet.
  • Only named people can enter it, and every action is logged.
  • The AI model that finds names runs inside that account. Company data is never sent to an outside AI service.
  • Company data never sits on a laptop or a shared server.

The owner stays in control

  • Raw data stays the owner's until the owner approves the release. Until then we handle it only as the owner's service provider, under a written addendum, to check and de-identify it.
  • When an export arrives, we list what came in by name, size and type, without reading the content. The owner confirms which files we may process.
  • Before release, the owner gets a release summary and a sample, with 5 business days to object. Anything the owner objects to is removed.
  • We tell the owner within 72 hours of any security incident.

Deletion schedule

WhatWhen we delete it
Samples from owners who do not sign60 days after upload if no contract follows, with the deal account
Raw data60 days after the first buyer accepts the dataset. Sooner if the owner asks, once a buyer has accepted. If no buyer ever accepts, when the deal ends.
The placeholder keyWith the raw data
De-identified dataKept during our selling window, then only as long as live licenses need it for redelivery and corrections. Then deleted.

Buyer screening and duties

We check every buyer before a sample goes out. We license to buyers in the United States, and to buyers elsewhere only when they are outside the countries named in the Department of Justice bulk data rule (28 CFR Part 202) and no covered person owns or controls them. Every sale outside the US carries an onward-transfer clause.

Every buyer signs that it will:

  • use the data only to train and evaluate models, or, under a data-company license, to build environments and task packs for its own customers
  • never re-identify anyone, and never contact anyone in the data
  • never resell the dataset as received
  • never approach the data's owner about buying data for 12 months, except through us
  • delete specific records when we ask, and report missed personal data within 48 hours

Each buyer's copy carries unique canary records, so a leak traces back to the buyer it came from. Every download is logged.

If something goes wrong

  • A buyer reports personal data we missed

    We fix the master copy, send a corrected version to every buyer of that dataset, require deletion of the old one, and re-measure.

  • A dataset fails the re-identification test

    It is not sold.

  • A security incident

    Owners hear from us within 72 hours. Buyers hear from us as their contracts require.

What we never take

  • Health records
  • Law firms' client files
  • Tax returns prepared for clients
  • Consumer financial records, including personal-lines insurance files
  • Faces or voices in video or audio (call transcripts are fine, the audio is dropped)
  • Chip, aerospace and defense technical data
  • AI assistant logs or output
  • QuickBooks or Xero data
  • Discord
  • Scraped data
  • Data from personal accounts
  • Data whose value is who the people are, such as consumer lists and contact databases

Questions about how we handle data? Email hello@nulkan.com.