Skip to main content

Open-source CLI for discovering where your data is shared, automating opt-out/deletion requests, and (where removal isn't possible) data-poisoning utilities.

Project description

da-toolkit

Open-source tools that give individual users control over their own data: find out where it's shared, see who has it, automate opt-out and deletion requests, and — where removal genuinely isn't an option — poison-pill it.

We serve individual users, not businesses. Everything here is free and open source, forever.

Status

v0.1. The opt-out/deletion request drafter is live for 20 US data brokers (da optout ...), plus California's DROP platform and GPC signalling (da drop ..., da gpc ...). A broker exposure scanner (da scan ...) checks 5 US brokers' public search pages for candidate matches, which you confirm before anything is stored. Own-signal obfuscation and self-PII injection are live (da noise ..., da poison ...).

Planned scope

Phase Capability Status
1 Data-broker discovery (read-only lookups: who has your data) v0.1 — 5 brokers, confirm-before-store, see below
2 Opt-out / deletion-request automation (US: CCPA, FCRA, CA DROP/GPC) v0.1 — draft-only, see below
3 Data-poisoning utilities (for cases where removal isn't possible) v0.1 — tiers (a)+(b) only, see below

Phase 3 tier (c) — mass-generating fake identities to pollute a broker's whole database — is intentionally gated and not implemented: it affects third-party systems in ways tiers (a)/(b) don't, and stays unwritten pending dedicated counsel review. See docs/poisoning/scope.md.

Install

Not yet published to PyPI (once it is, this will be pip install da-toolkit). Until then, install from source:

git clone https://github.com/normiecore/da-toolkit
cd da-toolkit
pip install -e .

Quickstart

da optout list                                  # 20 supported brokers + legal basis
da optout generate --broker spokeo \
  --name "Ada Lovelace" --email ada@example.com  # prints a draft + where to send/paste it
da optout status                                 # tracked requests + overdue flags
da optout remind <request-id> --name "..." --email "..."   # follow-up draft after a missed deadline

da optout only drafts requests — it never sends email or submits a web form for you, and it never automates form submission against a broker's site. See docs/optout/brokers.md for why, and for the full list of covered brokers and their legal basis.

da drop generate --name "Ada Lovelace" --email ada@example.com
                                                  # drafts one request covering every CPPA-registered
                                                  # broker (~545), plus an authorization record
da drop remind <request-id> --name "..." --email "..."     # follow-up draft after a missed deadline
da gpc instructions                              # how to turn on Global Privacy Control in your browser

da drop drafts a request for California's DROP platform and an authorization record to go with it — like da optout, it never submits anything on your behalf; you submit it yourself at DROP's own portal. da gpc only prints instructions: GPC is a browser setting, not something da-toolkit can send for you. See docs/optout/drop-gpc.md for why, including an open question flagged to the CEO about whether DA should ever register as a formal authorized agent and submit DROP requests directly.

da scan brokers                                  # list brokers this scanner supports
da scan run --first-name Ada --last-name Lovelace --state CA
                                                  # queries broker search pages, then asks
                                                  # "Is this you?" per candidate before storing
da scan list                                      # your confirmed matches
da scan forget <match-id>                         # delete a confirmed match

da scan shows candidate matches transiently — a broker search for a common name frequently surfaces other people. Nothing is written to disk until you confirm a specific candidate is you; declined or unconfirmed candidates are discarded. It never bypasses a CAPTCHA or anti-bot block: a blocked broker is reported as such and skipped. See docs/scan/design.md for the full design and guardrails, and why only 5 brokers are covered in v0.1.

da noise topics                                  # decoy-query topic categories
da noise generate --count 10                     # print decoy searches, no browser
da noise run --count 10                          # open decoy searches in YOUR OWN browser, randomized timing
da poison profile --first-name Ada --last-name Lovelace \
  --email ada@example.com                        # draft a synthetic variant of YOUR OWN PII

da noise (tier a) opens decoy searches in your own browser to muddy your own behavioral profile — it never touches a broker's data. da poison (tier b) drafts text for you to paste into a broker's own profile-correction form yourself; it never submits anything and never fabricates a separate identity. See docs/poisoning/scope.md for the full scope, including the hard exclusion of mass fake-identity generation (tier c).

Privacy posture

Every capability in v0.1 follows the same rules, decided and documented in docs/legal/legal-research-spike.md:

  • Draft-only. da optout and da drop never send an email or submit a web form for you. They print a draft and tell you where to send/paste it yourself.
  • Confirm-before-store. da scan shows candidate matches transiently. A broker search for a common name often surfaces other people; nothing is written to disk until you confirm a specific candidate is you.
  • No CAPTCHA or anti-bot evasion, ever. A blocked or bot-gated broker is reported as blocked and skipped, not worked around. This is a permanent product rule, not a v0.1 limitation that will later be "fixed."
  • US-only in v1. Everything is scoped to US law (CCPA/FCRA broker opt-outs, CA DROP/GPC). EU/Canada request flows are deferred, not silently unsupported — see docs/optout/drop-gpc.md.
  • Self-directed only. da noise and da poison only ever act on your own signals/PII, opened in your own browser or printed for you to paste yourself. da-toolkit never fabricates a separate identity or acts at scale against a broker's systems — see docs/poisoning/scope.md for the hard boundary around tier (c), which is intentionally unimplemented.

Limitations

Read this before relying on da-toolkit for anything time-sensitive:

  • Coverage is partial. da optout covers 20 US brokers and da scan covers 5 — a small fraction of the hundreds of data brokers operating in the US. da drop is the broadest tool (~545 CPPA-registered brokers via one DROP submission) but DROP itself only covers brokers registered with California, and only if you submit the draft yourself.
  • Broker URLs may be stale. Opt-out and search-page URLs were compiled from public documentation, not continuously re-verified against the live sites. Broker pages change without notice; always check the source URL da-toolkit prints before trusting it.
  • Nothing is automated end-to-end. Every capability stops at a draft, an instruction, or a locally-confirmed record — you still have to take the final action (send the email, paste the form text, flip the browser setting, submit at DROP's portal).
  • Local storage is plaintext. Tracked requests and confirmed scan matches are saved as unencrypted JSON under .da/ in your working directory. Treat that directory like any other file containing your own PII — it is not protected beyond your OS's normal file permissions.
  • No guarantee of broker compliance. da-toolkit exercises legal rights on your behalf in spirit, but cannot force a broker to honor a request, and does not verify that it did.

Legal disclaimer

This project automates requests that rely on rights granted by specific privacy laws (e.g. GDPR, CCPA, PIPEDA). Availability, scope, and correct procedure depend on your jurisdiction and the data holder's. Using this tool does not guarantee a broker will comply, and the maintainers make no legal claims on your behalf. Nothing here is legal advice.

License

GPL-3.0-or-later — see LICENSE and the rationale in CONTRIBUTING.md.

Contributing

See CONTRIBUTING.md. Please also read CODE_OF_CONDUCT.md and, if you're reporting a vulnerability, SECURITY.md instead of filing a public issue.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

da_toolkit-0.1.0.tar.gz (58.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

da_toolkit-0.1.0-py3-none-any.whl (40.2 kB view details)

Uploaded Python 3

File details

Details for the file da_toolkit-0.1.0.tar.gz.

File metadata

  • Download URL: da_toolkit-0.1.0.tar.gz
  • Upload date:
  • Size: 58.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for da_toolkit-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9eeac11cd3405fb1f22ccc4eca616d156b490dc43d9be0a4f42d16f22bf1d94e
MD5 04b1e12c15c1f2448b9747dfb5b81272
BLAKE2b-256 5c90e2f87f4e2b3493b23fbd4e24a0724ef074e8193e8e11d16ad9623f492212

See more details on using hashes here.

File details

Details for the file da_toolkit-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: da_toolkit-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 40.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for da_toolkit-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 025a5a722ec758fae93fb690da39ef76fb2d6875c1c4369dd25f13f11b603973
MD5 238ecc4cc8dab1a0e190fe788ca29162
BLAKE2b-256 05808437e1ea8cbe94113f4ec9da1bedf3807ba818eb45226f442b1256600e72

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page