$npx -y skills add KevRojo/Dulus --skill unbrokerAutonomously remove your info from data-broker sites.
| 1 | # unbroker |
| 2 | |
| 3 | Find where a person's personal information (name, addresses, phone, email, relatives) is exposed on |
| 4 | data brokers and people-search sites, then remove it - automatically where possible, with guided |
| 5 | human steps only where a site demands a CAPTCHA, government ID, phone call, or fax. Manages multiple |
| 6 | people independently. It does **not** defeat anti-bot systems, does **not** act on anyone without |
| 7 | recorded consent, and does **not** remove public records (voter/property/court) or accounts the |
| 8 | person controls. |
| 9 | |
| 10 | The Python CLI (`scripts/pdd.py`) owns the deterministic state - config, dossiers + consent, the |
| 11 | broker database, tier planning, the ledger, drafts, reports, **email sending (SMTP), verification-link |
| 12 | polling (IMAP), and the autonomous action queue (`next`)**. You (the agent) do the scanning and |
| 13 | form-driving with native tools: `WebFetch` and `WebBridgeNavigate` for searching and web forms, and |
| 14 | `Reminder (or a scheduled background task)` for recurring re-scans. |
| 15 | |
| 16 | ## Autonomy contract |
| 17 | |
| 18 | This skill is designed to run **hands-off**. After intake (+ recorded consent) there are exactly TWO |
| 19 | legitimate human touchpoints: (1) the intake conversation itself, and (2) ONE consolidated human-task |
| 20 | digest at the end of the run (`$PDD tasks`). Between those: |
| 21 | |
| 22 | - **Never ask the operator to choose configuration.** `$PDD setup --auto` detects capabilities and |
| 23 | picks the most autonomous valid config itself. |
| 24 | - **Never pause before individual submissions** when `autonomy=full` (the default): the consent |
| 25 | recorded at intake is standing authorization for T0-T2 opt-outs. (`autonomy=assisted` restores |
| 26 | per-submission confirmation for cautious operators - honor `confirm_first` flags in `next` output.) |
| 27 | - **Never interrupt the run for human-only work.** Record it (`record ... human_task_queued |
| 28 | --reason "..."`) and keep going; it all surfaces once in the final digest. |
| 29 | - **Drive the whole run as a loop over `$PDD next <subject>`** - it returns the exact ordered actions |
| 30 | to take right now (scan, poll verification, re-check, opt out parents-first, requeue blocked), plus |
| 31 | the human digest. Execute every action, record outcomes, re-run `next`, repeat until |
| 32 | `done_for_now`. Then present the digest, report, and schedule the cron. |
| 33 | |
| 34 | The hard limits that autonomy never overrides: no acting without recorded consent, no disclosure |
| 35 | beyond `disclosure_fields`, no CAPTCHA/anti-bot bypass, and `confirmed_removed` only after a |
| 36 | verifying re-scan. |
| 37 | |
| 38 | ## When to Use |
| 39 | |
| 40 | - "Remove my (or my family member's) data from data brokers / people-search sites." |
| 41 | - "Opt me out", "delete me from Spokeo/Whitepages/etc.", "clean up after a doxxing." |
| 42 | - "Set up recurring privacy monitoring" (brokers re-list people). |
| 43 | - Checking which brokers still expose someone and why. |
| 44 | |
| 45 | ## Prerequisites |
| 46 | |
| 47 | - `python3` (stdlib only; no extra packages needed for the core engine). |
| 48 | - **Optional upgrades** (the skill works zero-config without these; `setup --auto` turns on every |
| 49 | one it detects, reading credentials from the shell env **and from `~/.dulus/.env`** so keys |
| 50 | Hermes already loads for its own tools are picked up without re-exporting - each one converts a |
| 51 | class of human tasks into agent actions): |
| 52 | - **Cloud browser (recommended default): `BROWSERBASE_API_KEY`.** `setup --auto` selects it |
| 53 | whenever the key is present, and it is the intended baseline: a real residential-IP cloud |
| 54 | browser **clears soft/managed CAPTCHAs (Cloudflare Turnstile, hCaptcha/reCAPTCHA checkbox) as |
| 55 | normal operation**, so those brokers stay automated (T1) instead of becoming human tasks. This |
| 56 | is not CAPTCHA "solving" - no solver service, no fingerprint spoofing; only interactive/behavioral |
| 57 | ("hard") challenges the browser genuinely cannot pass fall back to a human task. Without the key, |
| 58 | the plain agent browser is used and soft-CAPTCHA brokers drop to T2 (human). |
| 59 | - Email automation, two credential-free-or-not options: |
| 60 | - **Browser mode (no password): `setup --email-mode browser`.** The agent sends opt-out/CCPA |
| 61 | emails and opens verification links through the operator's **logged-in webmail** using |
| 62 | `browser_*` tools. Nothing is stored. This requires Hermes to be pointed at the operator's own |
| 63 | logged-in browser, **NOT** a cloud browser: a headless cloud browser (Browserbase) holds no |
| 64 | webmail session and is itself Cloudflare/DataDome-gated on webmail and on session-bound broker |
| 65 | gates (e.g. PeopleConnect guided-mode). Drive the operator's real Chrome over CDP |