Data — is it sound?
Brief 21

PII & Retention Map

Trace where personal data enters, spreads, and lingers — then run the delete-request test: could you honor one today?

PRIVACY.md4 phases6 lenses~2.6k chars

Free & open · no signup · read-only — it ends by asking · nothing leaves your machine

What it does

You are working inside this repo. Mission: trace where personal data enters this system, everywhere it spreads, how long it lingers — then run the delete-request test: could this product fully honor a deletion request today?

This maps the engineering reality of where PII lives. For operational readiness to honor legal rights requests — export, correction, proof — run 126.

Read-only pass. Your only write is the report file.

What it looks for

6 lenses it looks through

Phase 2 sweeps the codebase through every one of these, citing file and line for each finding.

1

Storage spread

every place each datum lands: primary tables, caches, search indexes, files, third-party services

2

Leakage paths

personal data flowing into logs, analytics, error trackers, and backups (the copies everyone forgets)

3

Access surface

which code paths and roles can read each datum; anything readable far beyond its need

4

Retention reality

does anything ever get deleted, or does everything live forever by default?

5

The delete-request test

trace an account deletion end to end; list every copy that would survive it

6

Minimization

data collected but never used; fields that could be dropped, masked, or truncated at entry

The deliverable

What lands in your repo

One structured report at the repo root — or in reports/, if you keep one — the same shape every time, ready for a teammate — or the optional Studio — to act on.

PRIVACY.md
1
Data inventory
table: datum · entry points · everywhere it lives · who/what reads it · retention today
2
Delete-request verdict
pass/fail, with the list of surviving copies
3
Leakage findings
logs, analytics, backups: what to scrub, where
4
Minimization steps
stop-collecting and mask-at-entry changes
5
Fix sequence
quick scrubs first, deletion plumbing second
One file. Evidence-backed. It ends by asking before touching anything.
How it works

What it makes the agent do

Every Goal Prompt follows the same four steps, so results are consistent and repeatable — no matter which one you run.

1
Phase 1

Define what's personal here

List the personal data this product touches.

2
Phase 2

Trace through 6 lenses

Storage spread — every place each datum lands.

3
Phase 3

Curate

Rank by exposure.

4
Phase 4

Report

Create PRIVACY.md at repo root.

Get started

Three ways to run this Goal Prompt

01 · COPY

Paste it in

Copy it and paste it into your agent inside the repo you want checked.

02 · INSTALL

As a slash command

Install the goal plugin once — two commands — then just type /goal:pii-retention-map.

1/plugin marketplace add GhostlyGawd/goal-prompts
2/plugin install goal@goal-prompts

Or install only this Goal Prompt as /goal-pii-retention-map:

curl -fsSL https://goal-prompts.vercel.app/install | BRIEF=21 sh
03 · AGENT

From an agent (MCP)

Let an agent fetch it mid-conversation, or pull the raw Goal Prompt by URL.

https://goal-prompts.vercel.app/raw/21.md
Transparency

The exact prompt

Nothing hidden — this is the whole Goal Prompt, verbatim. Read it in a minute, edit it, or copy it as-is.

Read the full brief (2,602 characters)
# Goal: PII & Retention Map

You are working inside this repo. Mission: trace where personal data enters this system, everywhere it spreads, how long it lingers — then run the delete-request test: could this product fully honor a deletion request today?

This maps the engineering reality of where PII lives. For operational readiness to honor legal rights requests — export, correction, proof — run 126.

Read-only pass. Your only write is the report file.

## Phase 1 — Define what's personal here
- List the personal data this product touches: emails, names, IPs, user content, payment references, identifiers.
- Find every entry point: signup, forms, uploads, third-party auth, imports, support channels.

## Phase 2 — Trace through 6 lenses
1. **Storage spread** — every place each datum lands: primary tables, caches, search indexes, files, third-party services
2. **Leakage paths** — personal data flowing into logs, analytics, error trackers, and backups (the copies everyone forgets)
3. **Access surface** — which code paths and roles can read each datum; anything readable far beyond its need
4. **Retention reality** — does anything ever get deleted, or does everything live forever by default?
5. **The delete-request test** — trace an account deletion end to end; list every copy that would survive it
6. **Minimization** — data collected but never used; fields that could be dropped, masked, or truncated at entry

## Phase 3 — Curate
- Rank by exposure: sensitivity × spread × access breadth
- Every finding cites the code path or config where the datum flows

## Phase 4 — Report
Create `PRIVACY.md` at repo root:
1. **Data inventory** — table: datum · entry points · everywhere it lives · who/what reads it · retention today
2. **Delete-request verdict** — pass/fail, with the list of surviving copies
3. **Leakage findings** — logs, analytics, backups: what to scrub, where
4. **Minimization steps** — stop-collecting and mask-at-entry changes
5. **Fix sequence** — quick scrubs first, deletion plumbing second

Start the report with today's date. If `PRIVACY.md` already exists from a previous run, read it first and lead with what changed since.

## Rules
- Backups, logs, and third parties count — a copy is a copy
- Collecting less beats protecting more
- No PII in this repo? Say so in a one-paragraph null report and stop — a null result is a valid finding.
- If a `reports/` directory exists at the repo root, write the report there instead of the root.
- Before asking, present the top findings as a ranked list in plain words
- Report only — end by asking which fixes to make

House rules for this Goal Prompt

  • Backups, logs, and third parties count — a copy is a copy
  • Collecting less beats protecting more
  • No PII in this repo? Say so in a one-paragraph null report and stop — a null result is a valid finding.
  • If a reports/ directory exists at the repo root, write the report there instead of the root.
  • Before asking, present the top findings as a ranked list in plain words
  • Report only — end by asking which fixes to make
Keep exploring

Pairs well with

Curated neighbors — briefs that answer the adjacent question, worth running in the same session.

More Data briefs