Skip to content

[PRIVACY]: Implement account export, deletion, and retention workflows #224

Description

@barry01-hash

Context

User data spans authentication, profiles, wallet addresses, payouts, applications, comments, support tickets, logs, and storage objects. Account deletion cannot be a single row delete because financial/audit records may require retention while personal data should be removed or anonymized.

Scope

  • Inventory personal data and define retention/legal basis by model and storage object type.
  • Build authenticated export generation with a versioned machine-readable manifest.
  • Implement staged deletion: request, re-authentication, cooling-off, cancellation, execution, and completion receipt.
  • Anonymize retained financial/audit records while preserving referential integrity.
  • Delete/revoke storage objects, auth identities, sessions, and downstream data through durable jobs.
  • Ensure backups and analytics are covered by documented retention behavior.

Acceptance criteria

  • Export contains all user-linked data and is available through an expiring private download.
  • Deletion is idempotent, resumable, and auditable without retaining unnecessary PII.
  • Active financial/escrow obligations block or defer deletion with a clear reason.
  • Automated tests cover every related model and partial-failure recovery.
  • Retention rules are configuration-backed and documented.
  • Privacy UI clearly communicates scope, timing, and irreversible effects.

Relevant areas

Prisma models, Supabase Auth/Storage, PostHog, email, profile/settings UI, background jobs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions