# k7cfo/remove-your-data architecture

> Architecture diagram of the GitHub repository k7cfo/remove-your-data, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/k7cfo/remove-your-data
- Repository: https://github.com/k7cfo/remove-your-data

## Overview

remove-your-data is an AI-agent skill for filing and tracking free data-broker removals. The documented workflow starts with residency and personal/household intake, finds broker listings, submits first-party opt-outs and applicable legal requests, follows verification and stale requests, then reports progress in chat. Its local SQLite ledger records requests and deadlines; state-law packs and templates support jurisdiction-specific filings. The README also describes California DROP and optional search-engine scans. Source excerpts are partial, so internal call ownership beyond the indexed imports is not inferred.

Main entry points: [`scripts/ryd.py`](https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd.py) (Request ledger), [`scripts/ryd_laws.py`](https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd_laws.py) (Law clocks), [`skills/remove-your-data/SKILL.md`](https://github.com/k7cfo/remove-your-data/blob/master/skills/remove-your-data/SKILL.md) (Agent skill), [`scripts/ryd_report.py`](https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd_report.py) (Chat results card)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Removal workflow"]
  node_skill["Agent skill<br/>[SKILL.md]"]
  node_intake["Residency intake<br/>[ryd.py]"]
  node_household["Household roster<br/>[ryd.py]"]
  node_discovery["Listing discovery<br/>[ryd.py]"]
  node_search["Search engines<br/>[ryd.py]"]
  node_brokers["Broker opt-outs<br/>[brokers.md]"]
  node_verification["Verification handling<br/>[ryd.py]"]
  node_followup["Stale follow-up<br/>[ryd.py]"]
end

subgraph group_legal["Legal requests"]
  node_filing["Request filing<br/>[ryd.py]"]
  node_drop["California DROP<br/>[ryd.py]"]
  node_lawlogic["Law clocks<br/>[ryd_laws.py]"]
  node_lawpacks["Jurisdiction packs"]
  node_templates["Request templates"]
end

subgraph group_state["Local state"]
  node_ledger[("Request ledger<br/>[ryd.py]")]
  node_schema["Ledger schema<br/>[schema.sql]"]
end

subgraph group_reporting["Progress and reporting"]
  node_dashboard["Local dashboard<br/>[ryd.py]"]
  node_reportdata["Report data<br/>[ryd.py]"]
  node_report["Chat results card<br/>[ryd_report.py]"]
end

node_person(("Person"))
node_agent(("AI agent"))
node_email["Personal inbox"]
node_chat(("Chat response"))

node_person -->|"requests removal"| node_agent
node_agent -->|"uses skill"| node_skill
node_skill -->|"starts intake"| node_intake
node_intake -->|"sets up people"| node_household
node_intake -->|"provides identifiers"| node_discovery
node_discovery -->|"checks broker playbook"| node_brokers
node_discovery -.->|"optionally scans"| node_search
node_discovery -->|"leads to opt-outs"| node_filing
node_filing -->|"routes California"| node_drop
node_filing -->|"tracks legal deadlines"| node_lawlogic
node_lawlogic -->|"uses jurisdiction rules"| node_lawpacks
node_lawlogic -->|"renders requests"| node_templates
node_filing -->|"logs requests"| node_ledger
node_verification -->|"uses own inbox"| node_email
node_email -->|"provides replies"| node_verification
node_verification -->|"logs verification"| node_ledger
node_followup -->|"checks stale requests"| node_ledger
node_followup -->|"sends follow-ups"| node_email
node_ledger -.->|"uses schema"| node_schema
node_ledger -->|"feeds dashboard"| node_dashboard
node_dashboard -.->|"loads progress"| node_reportdata
node_reportdata -->|"formats results"| node_report
node_report -->|"shows results"| node_chat

click node_skill "https://github.com/k7cfo/remove-your-data/blob/master/skills/remove-your-data/SKILL.md"
click node_intake "https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd.py"
click node_household "https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd.py"
click node_discovery "https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd.py"
click node_search "https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd.py"
click node_brokers "https://github.com/k7cfo/remove-your-data/blob/master/references/brokers.md"
click node_filing "https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd.py"
click node_drop "https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd.py"
click node_lawlogic "https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd_laws.py"
click node_lawpacks "https://github.com/k7cfo/remove-your-data/tree/master/laws/packs"
click node_templates "https://github.com/k7cfo/remove-your-data/tree/master/laws/templates"
click node_verification "https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd.py"
click node_followup "https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd.py"
click node_ledger "https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd.py"
click node_schema "https://github.com/k7cfo/remove-your-data/blob/master/scripts/schema.sql"
click node_dashboard "https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd.py"
click node_reportdata "https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd.py"
click node_report "https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd_report.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_skill,node_intake,node_household,node_discovery,node_search,node_brokers,node_verification,node_followup toneBlue
class node_filing,node_drop,node_lawlogic,node_lawpacks,node_templates toneAmber
class node_ledger,node_schema toneMint
class node_dashboard,node_reportdata,node_report toneRose
class node_person,node_agent,node_email,node_chat toneIndigo
```

## Components

### Removal workflow

- [Agent skill](https://github.com/k7cfo/remove-your-data/blob/master/skills/remove-your-data/SKILL.md): `skills/remove-your-data/SKILL.md`
- [Residency intake](https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd.py): `scripts/ryd.py`
- [Household roster](https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd.py): `scripts/ryd.py`
- [Listing discovery](https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd.py): `scripts/ryd.py`
- [Search engines](https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd.py): `scripts/ryd.py`
- [Broker opt-outs](https://github.com/k7cfo/remove-your-data/blob/master/references/brokers.md): `references/brokers.md`
- [Verification handling](https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd.py): `scripts/ryd.py`
- [Stale follow-up](https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd.py): `scripts/ryd.py`

### Legal requests

- [Request filing](https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd.py): `scripts/ryd.py`
- [California DROP](https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd.py): `scripts/ryd.py`
- [Law clocks](https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd_laws.py): `scripts/ryd_laws.py`
- [Jurisdiction packs](https://github.com/k7cfo/remove-your-data/tree/master/laws/packs): `laws/packs`
- [Request templates](https://github.com/k7cfo/remove-your-data/tree/master/laws/templates): `laws/templates`

### Local state

- [Request ledger](https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd.py): `scripts/ryd.py`
- [Ledger schema](https://github.com/k7cfo/remove-your-data/blob/master/scripts/schema.sql): `scripts/schema.sql`

### Progress and reporting

- [Local dashboard](https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd.py): `scripts/ryd.py`
- [Report data](https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd.py): `scripts/ryd.py`
- [Chat results card](https://github.com/k7cfo/remove-your-data/blob/master/scripts/ryd_report.py): `scripts/ryd_report.py`

### Other components

- **Person**
- **AI agent**
- **Personal inbox**
- **Chat response**

## Connections

- Person → AI agent: requests removal (evidence: `README.md`)
- AI agent → Agent skill: uses skill (evidence: `README.md`)
- Agent skill → Residency intake: starts intake (evidence: `README.md`)
- Residency intake → Household roster: sets up people (evidence: `README.md`)
- Residency intake → Listing discovery: provides identifiers (evidence: `README.md`)
- Listing discovery → Broker opt-outs: checks broker playbook (evidence: `README.md`)
- Listing discovery → Search engines: optionally scans (evidence: `README.md`)
- Listing discovery → Request filing: leads to opt-outs (evidence: `README.md`)
- Request filing → California DROP: routes California (evidence: `README.md`)
- Request filing → Law clocks: tracks legal deadlines (evidence: `README.md`)
- Law clocks → Jurisdiction packs: uses jurisdiction rules (evidence: `README.md`)
- Law clocks → Request templates: renders requests (evidence: `README.md`)
- Request filing → Request ledger: logs requests (evidence: `README.md`)
- Verification handling → Personal inbox: uses own inbox (evidence: `README.md`)
- Personal inbox → Verification handling: provides replies (evidence: `README.md`)
- Verification handling → Request ledger: logs verification (evidence: `README.md`)
- Stale follow-up → Request ledger: checks stale requests (evidence: `README.md`)
- Stale follow-up → Personal inbox: sends follow-ups (evidence: `README.md`)
- Request ledger → Ledger schema: uses schema
- Request ledger → Local dashboard: feeds dashboard (evidence: `README.md`)
- Local dashboard → Report data: loads progress (evidence: `scripts/ryd.py`)
- Report data → Chat results card: formats results (evidence: `scripts/ryd.py`)
- Chat results card → Chat response: shows results (evidence: `README.md`)
