Skip to main content

AI-powered email unsubscribe tool. Set it up once, AI handles your inbox forever.

Project description

 ███╗   ██╗ ██████╗ ████████╗██╗  ██╗██╗  ██╗
 ████╗  ██║██╔═══██╗╚══██╔══╝██║  ██║╚██╗██╔╝
 ██╔██╗ ██║██║   ██║   ██║   ███████║ ╚███╔╝
 ██║╚██╗██║██║   ██║   ██║   ██╔══██║ ██╔██╗
 ██║ ╚████║╚██████╔╝   ██║   ██║  ██║██╔╝ ██╗
 ╚═╝  ╚═══╝ ╚═════╝    ╚═╝   ╚═╝  ╚═╝╚═╝  ╚═╝

nothx

Python 3.11+ License: MIT Status: Beta Platform Privacy

Stop reading marketing emails. Start reading real ones.

nothx hunts down marketing emails, uses AI to sort the noise from the signal, and actually clicks unsubscribe for you. It runs on your machine, learns your preferences, and never touches your data.

Set it. Forget it. Inbox fixed.


Quick Start

pip install nothx
nothx init

That's it. The wizard handles everything else.

Run nothx anytime for the interactive menu.


Why nothx?

The Problem How nothx fixes it
Unroll.me sells your data 100% local — your data never leaves home
Most tools just filter emails Actually clicks unsubscribe links
Manual unsubscribing is tedious AI classifies hundreds of senders in seconds
One-size-fits-all rules Learns your preferences over time
Yet another app to run Uses native OS scheduling (launchd/systemd)
What if AI gets it wrong? Undo anything — and it learns from the correction

Features

Core

  • AI-Powered — Claude, GPT, Gemini, or local models via Ollama
  • Actually Unsubscribes — RFC 8058 one-click, GET requests, or mailto
  • Privacy First — Never reads email bodies. Only headers. All data stays local.

Smart

  • Learns From You — Gets smarter every time you disagree with a decision
  • 5-Layer Classification — Rules → Patterns → AI → Heuristics → Manual review
  • Protected Categories — Banks, government, healthcare never auto-unsubscribed

Practical

  • Multi-Account — Scan Gmail + Outlook simultaneously
  • Native Scheduling — No daemon needed. Uses launchd (macOS) or systemd (Linux).
  • Undo Anything — Changed your mind? nothx undo domain.com

Beautiful

  • Rich CLI — Animated banner, progress bars, colored output
  • Interactive Mode — Just run nothx for menu-driven operation

The Learning System

nothx gets smarter the more you use it. Every decision trains your personal preference model.

What it learns:

  • Keywords — Keep emails with "receipt"? Future receipt-related senders score safer.
  • Open rates — If you keep emails you never open, it stops penalizing low engagement.
  • Volume tolerance — Keep high-volume senders? It raises the threshold before flagging.

Corrections teach it too. When you run nothx undo, it doesn't just restore — it learns that this type of email matters to you.

nothx status --learning   # See your learned preferences

How It Works

Email arrives
      ↓
┌─────────────────┐
│  USER RULES     │  Your explicit keep/unsub patterns
└────────┬────────┘
         ↓
┌─────────────────┐
│  PATTERNS       │  Known marketing domains, safe categories
└────────┬────────┘
         ↓
┌─────────────────┐
│  AI ANALYSIS    │  AI examines headers (never bodies)
└────────┬────────┘
         ↓
┌─────────────────┐
│  HEURISTICS     │  Open rates, frequency, spam patterns
└────────┬────────┘
         ↓
┌─────────────────┐
│  REVIEW QUEUE   │  Uncertain? You decide.
└─────────────────┘

Each layer can make a final call or pass to the next. Your rules always win.


Commands

Essentials

Command What it does
nothx Interactive menu
nothx init Setup wizard — accounts, API key, first scan
nothx run Scan and process emails
nothx status Stats, accounts, schedule at a glance
nothx review Decide on uncertain senders

Day-to-Day

Command What it does
nothx senders List all tracked senders
nothx search <pattern> Find a specific sender
nothx undo [domain] Undo an unsubscribe
nothx history View activity log

Configuration

Command What it does
nothx rule "pattern" keep/unsub Add a classification rule
nothx schedule --monthly Set automatic run frequency
nothx account add/remove Manage email accounts
nothx config --show View current config

Aliases: r (run), s (status), rv (review), h (history)


Setup

Requirements

  • Python 3.11+
  • Gmail, Outlook, Yahoo, or iCloud account
  • AI provider (optional — works without AI too)
Don't have Python?

macOS:

brew install python@3.11

Or download from python.org/downloads

Windows:

Download from python.org/downloads. During install, check "Add Python to PATH".

Linux:

# Ubuntu/Debian
sudo apt install python3.11 python3-pip

# Fedora
sudo dnf install python3.11 python3-pip

After installing, verify with python3 --version.

Installation

# Base install (heuristics only, or Ollama)
pip install nothx

# With your preferred AI provider
pip install "nothx[anthropic]"  # Claude (recommended)
pip install "nothx[openai]"     # GPT-4
pip install "nothx[gemini]"     # Google Gemini
pip install "nothx[all-ai]"     # All providers
Gmail App Password
  1. Go to myaccount.google.com/apppasswords
  2. Generate a new password for "nothx"
  3. Copy the 16-character code

Requires 2FA enabled on your account.

Outlook App Password
  1. Go to account.live.com/proofs/AppPassword
  2. Enable 2FA if not already
  3. Generate and copy the app password
AI Provider Setup

Anthropic (Claude) — Best for email classification. Get API key

OpenAI (GPT) — GPT-4o models. Get API key

Google (Gemini) — Free tier available. Get API key

Ollama (Local) — Run models locally. No API key needed. Install Ollama

Without AI, nothx uses heuristic scoring. Still works, just less smart.


Troubleshooting

Connection failed
  • Verify your App Password (not your regular password)
  • Ensure IMAP is enabled in your email settings
  • For Gmail: Check that 2FA is enabled (required for App Passwords)
  • Run nothx test to diagnose
AI classification not working
  • Check your API key: nothx config --show
  • Verify you have credits/quota with your chosen provider (Anthropic, OpenAI, or Google)
  • nothx falls back to heuristics if AI fails — it still works
Still getting emails after unsubscribe
  • Some senders ignore unsubscribe requests (bad actors)
  • Run nothx run again — it escalates repeat offenders to blocking
  • Add manually: nothx rule "domain.com" block
Start fresh
nothx reset              # Delete everything
nothx reset --keep-config # Keep accounts, clear history

Comparison

Feature Unroll.me SaneBox Leave Me Alone nothx
Price Free $84-432/yr $48/yr Free
Privacy Sells data Cloud Cloud 100% local
Actually unsubscribes No Yes Yes Yes
AI classification No Yes Basic Yes (multi-provider)
Learns your preferences No Limited No Yes
Local AI option No No No Yes (Ollama)
Open source No No No Yes

Philosophy

We built nothx because:

  1. Your email is yours. Not a product to sell.
  2. AI should adapt to you. Not the other way around.
  3. Automation should be invisible. Set once, forget forever.
  4. You can always change your mind. Every action is reversible.

Contributing

git clone https://github.com/nothx/nothx.git
cd nothx
pip install -e ".[dev]"
pytest

License

MIT — see LICENSE


nothx — Because your inbox should work for you, not against you.

Made with mass frustration at marketing emails.

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

nothx-0.1.0.tar.gz (83.0 kB view details)

Uploaded Source

Built Distribution

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

nothx-0.1.0-py3-none-any.whl (73.8 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for nothx-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e316a0fe03c27e8bb459685363965bc93636284c87366dd7db3ff07ea54b0fda
MD5 a1cd1e43a2dd1ace6152c45250837552
BLAKE2b-256 1acee7828d763068ec530340c81ef5d0a35700b00eddaa3438ca4b0598a93fcc

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for nothx-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 08f5ee99b533395bb7f24ebafc1d88d0a817b6c93ede0220ba850f9fd213faec
MD5 919d3c7c3fb675efcd8647f4f7e7e146
BLAKE2b-256 9991bd0652714cd65cd6954c1704500198d51f12ba9be564b440221b51abf697

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