MIS 752 · Lab 2 · Mikey Atwood

Sharing Survivor Data Without Putting Anyone at Risk

Survivor-services organizations are asked to share client data with funders and researchers. This page measures whether removing names is enough, on 4,000 synthetic client records, and what it takes to make a release safe.
4,000
synthetic client records from a fictional survivor-services nonprofit
36%
could still be singled out after names, phones and addresses are removed
16
more clients pass k ≥ 5, yet everyone in their group shares one service need
3,862
records in the safer release (138 withheld)

The problem

Organizations that serve survivors of domestic violence, sexual assault, stalking and trafficking are asked for data constantly: by funders, grant programs, researchers and lawmakers who want to know what works. Sharing it can bring in money and change policy. But if a single client can be identified, the harm is not embarrassment. It can mean an abuser finding them.

Deleting names is not enough. A record like woman, 30s, Spanish-speaking, three children, ZIP 890xx, referred by a hospital can describe exactly one person in a small community. k-anonymity measures that: for each record, k is how many shared records have the same profile. k = 1 means the record is unique. A common bar is k ≥ 5.

One client, before and after

Everything that names, reaches or locates the client is removed; age and ZIP are coarsened. The service details are what a funder actually wants, so they stay.

Field Intake record (internal only) What gets shared
Client ID C00005 removed
Name Reese Smith removed
Phone 702-555-0884 removed
Address 7086 Desert Ln removed
Date of birth 1956-08-07 removed
Intake date 2025-08-20 removed
Age 70 70-79 (10-year band)
ZIP code 89167 891xx (first 3 digits)
Gender Woman Woman
Primary language English English
Children in household 2 2
Referred by Police Police
Service need Domestic violence Domestic violence
Stably housed at 6 months Yes Yes
This client has no name, phone number or address in the shared file. Even so, only 2 records in the release match that profile. Anyone who already knows those few facts about them (a neighbor, a coworker, an abusive ex-partner) could narrow the file to their record and learn their service need.

How many clients could still be singled out?

A crowd is not always enough

k only counts how many people share a profile. It does not check what they share. In 16 records that pass the k ≥ 5 bar, every client in the group has the same service need. Someone who knows a person fits that profile learns their service need (for example, that they are a trafficking survivor) without ever finding their row. Checking for groups like this, called l-diversity, is the step most releases skip.

What safety costs

Release recipe Fields kept Records at risk (k < 5) % at risk Smallest group
All six quasi-identifiers AgeBand, ZIP3, Gender, Language, Children, Referral 1442 36.0 1
Drop referral source AgeBand, ZIP3, Gender, Language, Children 474 11.8 1
...and widen age to 20-year bands ZIP3, Gender, Language, Children, AgeBand 312 7.8 1
...and report children only as none / 1 or more ZIP3, Gender, Language, AgeBand, Children 184 4.6 1
...and group smaller languages as Other ZIP3, Gender, AgeBand, Children, Language 138 3.5 1

A safer release

The last recipe above, plus one more rule: any client still in a group smaller than five is withheld entirely. That removes 138 of 4,000 records (3.5%) and leaves 3,862 records where every client shares a profile with at least four others. Both the naive and the safer release are published as a dataset (link at the bottom of the page), so the difference is there to inspect.

Why this matters

Safety first. Federal grant rules under the Violence Against Women Act already restrict sharing survivors' personally identifying information. This measures whether a "de-identified" file actually protects people, instead of assuming it does.

Better evidence for policy. Measuring risk lets an organization share more, not less: outcome data that funders and legislators need, in a form that protects the people behind it.

No recipe gets to zero. Small communities, less common languages and large families stand out. Each release should be measured, and aggregated counts are the right choice when rows cannot be made safe.

How this was built

The records are synthetic: every field is randomly generated for a fictional organization, so no real person appears. Proportions (gender, language, referral source, service need) are illustrative skews chosen to resemble a Las Vegas-area caseload, not figures from any real provider.

Method: remove direct identifiers, keep the first three ZIP digits, bin age to 10 years, then count group sizes over six quasi-identifiers (age band, ZIP3, gender, language, children, referral source). Service need and housing outcome are treated as sensitive values, not identifiers.