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.1.tar.gz (79.9 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.1-py3-none-any.whl (73.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: nothx-0.1.1.tar.gz
  • Upload date:
  • Size: 79.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for nothx-0.1.1.tar.gz
Algorithm Hash digest
SHA256 992a155d6cd30d72e1cd05c840f41ad335724835fdcd25d9bbed8d93b2560a66
MD5 68d01bf0acecfffd6c3f93ddae754efa
BLAKE2b-256 eb141ecc96c6d4e7d67fe8c0354e785d188e3b95e886159b78663c521d9a4b50

See more details on using hashes here.

Provenance

The following attestation bundles were made for nothx-0.1.1.tar.gz:

Publisher: publish.yml on sainihas/nothx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: nothx-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 73.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for nothx-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8e44b71ef7e73ee12aa69ed67a2f54ff0260d8a0514209bc141b26a18d6a9407
MD5 00d9193c1103ac6f43388f565571d32b
BLAKE2b-256 fe39de7f461bdca19b26e7e71fcc6a8a2fedb7276184650eb0463856430035d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for nothx-0.1.1-py3-none-any.whl:

Publisher: publish.yml on sainihas/nothx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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