Skip to content

Repository files navigation

DataBrokerRemover

Automates the removal of your personal information from data brokers. Provide your details once — the app discovers brokers that have your data, uses AI to analyze each broker's removal process, and submits opt-out requests on your behalf. Every submission requires your approval before it goes out.

Built as a self-hosted alternative to $100–200/year subscription services.


How It Works

  1. Profile setup — Enter your personal information (names, addresses, phones, emails). All data is encrypted at rest with AES-256-GCM using a per-user key.
  2. Broker discovery — The app searches for data brokers from a seeded database of 50+ known brokers and can discover new ones via web search.
  3. AI analysis — For each broker, Playwright captures the removal page and an LLM analyzes the process, proposing a removal approach (web form, email, or document upload).
  4. Human review — You review and approve the proposed approach before anything is submitted.
  5. Submission — The app executes the approved approach: filling web forms via headless browser, sending removal emails, or uploading identity documents.
  6. Verification (in progress) — Parses email confirmations and re-checks broker sites to confirm your data is actually gone.

Features

  • Encrypted PII storage — AES-256-GCM with PBKDF2-derived per-user keys; initialization vectors prevent pattern analysis
  • 50+ broker database — Pre-seeded and extensible
  • Multi-provider AI — Supports Claude (default), OpenAI, Google Gemini, or local Ollama for privacy-conscious users
  • Three submission methods — Web form automation (Playwright), email (Resend), and document upload
  • CAPTCHA handling — 2Captcha integration for automated solving
  • Background job orchestration — Inngest manages batch submissions with exponential backoff and retry logic
  • Human-in-the-loop — No submission happens without explicit user approval

Tech Stack

Layer Technology
Framework Next.js 16 + React 19, TypeScript
Database Supabase (PostgreSQL + Row Level Security)
Auth Supabase Auth
AI Vercel AI SDK — Claude, OpenAI, Gemini, Ollama
Background jobs Inngest
Browser automation Playwright
Email Resend
Styling Tailwind CSS v4, Radix UI
State TanStack Query, Zustand
Testing Vitest

Prerequisites

  • Node.js 18+
  • Supabase project
  • Inngest account (or self-hosted)
  • At least one AI provider API key
  • Resend API key (for email submissions)
  • 2Captcha API key (optional — for CAPTCHA solving)

Setup

1. Install dependencies

npm install
npx playwright install chromium

2. Configure environment

Copy the example file and fill in your values:

cp .env.local.example .env.local
# Supabase
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key   # server-only, used by Inngest

# AI provider — pick one
AI_PROVIDER=anthropic                              # anthropic | openai | google | ollama
ANTHROPIC_API_KEY=sk-ant-...
# OPENAI_API_KEY=sk-...
# GOOGLE_GENERATIVE_AI_API_KEY=...
# OLLAMA_BASE_URL=http://localhost:11434           # default if omitted

# Optional overrides
AI_MODEL_OVERRIDE=                                 # override the default model for your provider

# Email submissions
RESEND_API_KEY=re_...

# CAPTCHA solving (optional)
TWO_CAPTCHA_API_KEY=...

# Inngest
INNGEST_SIGNING_KEY=...
INNGEST_EVENT_KEY=...

3. Apply database migrations

Using the Supabase CLI:

supabase db push

Or apply each file in supabase/migrations/ manually via the Supabase dashboard SQL editor.

4. Run the development server

npm run dev

Open http://localhost:3000.

For background jobs, run the Inngest dev server in a separate terminal:

npx inngest-cli@latest dev

Available Scripts

npm run dev           # Start development server
npm run build         # Production build
npm start             # Start production server
npm run lint          # ESLint
npm test              # Run unit tests (Vitest)
npm run test:watch    # Vitest in watch mode
npm run test:coverage # Coverage report

Project Structure

src/
├── app/
│   ├── (auth)/login/         # Login page
│   ├── (protected)/          # Authenticated routes
│   │   ├── onboarding/       # Profile setup wizard
│   │   ├── profile/          # Profile management
│   │   ├── brokers/          # Broker discovery & list
│   │   ├── review/           # Removal approach review queue
│   │   └── documents/        # Identity document uploads
│   └── api/                  # API routes + Inngest handler
├── components/               # UI components
├── inngest/
│   └── functions/            # Background job definitions
│       ├── batch-submissions.ts
│       ├── submit-web-form.ts
│       ├── submit-email.ts
│       └── submit-document.ts
└── lib/
    ├── ai/                   # LLM analysis (prompts, providers, schemas)
    ├── crypto/               # AES-256-GCM encryption + PBKDF2 key derivation
    ├── scraping/             # Playwright page capture + Cheerio HTML parsing
    ├── submission/           # Submission tracking
    └── supabase/             # Client, server, and admin Supabase clients
supabase/
└── migrations/               # 9 PostgreSQL migrations

Security

  • Personal data is encrypted before storage using AES-256-GCM
  • Encryption keys are derived per-user via PBKDF2 — the server cannot decrypt data without the user's credentials
  • SUPABASE_SERVICE_ROLE_KEY must never be exposed to the browser; it is only used in server-side Inngest functions
  • All database tables have Row Level Security policies enforced at the database layer
  • No submission is made without explicit user review and approval

Deployment

The app runs on any Node.js host. For Playwright to work, the host must support headless Chromium (most VPS providers and Render work; serverless functions typically do not).

Recommended stack:

  • App — Railway or Render (persistent server required for Playwright)
  • Database — Supabase (managed)
  • Background jobs — Inngest Cloud (managed) or self-hosted

Roadmap

Phase Description Status
1 Auth + encrypted profile Complete
2 Broker database + discovery Complete
3 AI page analysis Complete
4 Review & approval workflow Complete
5 Submission engine (forms, email, docs) Complete
6 Verification (email parsing + site re-check) Planned
7 Ongoing monitoring Planned
8 Family member profiles Planned

License

Private — personal use only.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors