unbroker

Autonomously remove your info from data-broker sites.

  • privacy
  • data-broker
  • opt-out
  • ccpa
  • gdpr
  • security
  • doxxing

Declared platforms: linux · macos · windows

Install
npx skills add 'https://github.com/NousResearch/hermes-agent/tree/main/optional-skills/security/unbroker'
Download bundle ↓
main · 24fd22bScanned 2026-09-15

Contributors

GitHub-linked commit authors for this SKILL.md at the saved revision. Co-authors and history before file renames are not included.

File history ↗

scripts/vectors.py

scripts/vectors.pyBrowse 56 files
View on GitHub
← Back to SKILL.md
"""Enumerate the search queries to run per broker, across ALL of a subject's identifiers. People-search sites index a person under every name, phone, email, and address theyhave. A subject with two names (maiden/married) and three past cities can have manydistinct listings on one broker, each found via a different search. `search_vectors`expands the dossier into the concrete searches to run, filtered by what each brokersupports (`broker.search.by`, default ["name"])."""from __future__ import annotations import dossier as dossier_mod # What a broker can be searched by; default if a record doesn't declare it.DEFAULT_BY = ["name"]  def supported_by(broker: dict) -> list[str]:    return list((broker.get("search") or {}).get("by") or DEFAULT_BY)  def search_vectors(subject_dossier: dict, broker: dict) -> list[dict]:    """List of {by, query} searches to run for this subject on this broker."""    by = set(supported_by(broker))    ident = subject_dossier.get("identity", {})    vectors: list[dict] = []     if "name" in by:        names = dossier_mod.all_names(subject_dossier)        locations = dossier_mod.all_locations(subject_dossier)        if locations:            for name in names:                for loc in locations:                    vectors.append({"by": "name",                                    "query": {"full_name": name, "city": loc.get("city"), "state": loc.get("state")}})        else:            for name in names:                vectors.append({"by": "name", "query": {"full_name": name}})     if "phone" in by:        for phone in ident.get("phones") or []:            vectors.append({"by": "phone", "query": {"phone": phone}})     if "email" in by:        for email in ident.get("emails") or []:            vectors.append({"by": "email", "query": {"email": email}})     if "address" in by:        for a in dossier_mod.all_addresses(subject_dossier):            if a.get("line1"):                vectors.append({"by": "address",                                "query": {k: a.get(k) for k in ("line1", "city", "state", "postal")}})     return vectors