On-device · nothing leaves your phone

Notifilter

Blocks promotional Android notifications and keeps the ones that matter. A 19 MB model runs entirely on your phone — no account, no server, no notification ever uploaded.

Download

Android APK v1.0 · min Android 8.0
  1. Install the APK — Android will ask you to allow installs from your browser.
  2. Open Notifilter → Grant notification access. Android only permits this from Settings.
  3. Wait for the one-time 21 MB model download.
  4. Watch History. When the decisions look right, turn off Dry run.

Measured

0.996KEEP-recall on held-out test
0.910Promotional F1
18 msPer notification, 1 thread
32 MBint8 model, downloaded once

The distinction it makes

BLOCK

Get ₹200 cashback on your next orderAn offer. You lose nothing by never seeing it.

KEEP

₹200 cashback credited to your walletA record of your money moving. Same words, opposite meaning.

A keyword filter cannot separate these. That pair, in twelve scripts, is most of what the model was trained on.

How a notification is decided

notification arrives
   ├─ on your allowlist?      → KEEP   never classified
   ├─ OTP / debit / delivery? → KEEP   a rule, not a probability
   └─ otherwise               → model  p ≥ 0.9724 → BLOCK

An OTP never reaches the model. The rule layer fires on 3.8% of traffic at 99.2% precision — a classifier gives you an average, and a one-time password needs a guarantee.

Languages

ScriptTest rowsKEEP-recallPromo F1
Latin / Hinglish24360.9970.911
Devanagari1780.9900.946
Bengali2600.9950.864
Telugu231.0001.000
Gurmukhi221.0000.769
Kannada200.9090.947

Tamil, Malayalam, Gujarati, Odia, Assamese and Urdu are trained but have too few test rows to quote a number honestly.

Model delivery

The APK ships without the model. Cloudflare Pages caps files at 25 MiB, so the 32 MB model is gzipped to 20.9 MB and split in two, each part SHA-256 verified on arrival and again after reassembly.

GET /models/manifest.json
GET /models/model.onnx.gz.000   10.5 MB
GET /models/model.onnx.gz.001   10.5 MB
     → concat → gunzip → verify sha256 → cache on device

Honest limits