Developer ToolsAI Products & Platforms

Your Android Phone Has a Hidden Notification "Control Center"

During the World Cup, Mira Chen built an Android app in a few days using an AI agent: it listens to phone notifications, uses a local small model to determine if a notification spoils match results, and blocks it if so. She shared the technical details on the Superlinear Academy community.

But what I want to talk about isn’t the app itself. It’s the Android mechanism behind it that most people overlook. You’re probably using its derivatives every day without knowing what it’s called.

Not Turning Off Notifications — Deciding One by One

Most people manage Android notifications at two levels: turning off all notifications for an app in system settings, or disabling specific notification channels within the app. Both approaches share the same logic: toggle by source. WeChat notifications are either all on or all off. Same for sports apps.

The anti-spoiler app does something different: it doesn’t turn off WeChat notifications. It lets them arrive normally, then reads each one’s content, decides whether it’s a spoiler, and cancels it if so. Social app messages can’t be blanket-disabled, but the spoilers mixed in can be filtered out one by one.

This is possible because Android has included an API called NotificationListenerService (NLS) since version 4.3. After an app declares the permission and the user grants it in system settings, the system calls the app’s callback every time a notification is posted, passing along the package name, title, and body text. The app can read this information and call cancelNotification() to dismiss the notification — the same effect as the user manually swiping it away. No root required.

The fundamental difference between this and “turning off notifications” is decision granularity. Turning off notifications is a binary toggle per app. NLS makes decisions per notification based on content. The former answers “do I want notifications from this app?” The latter answers “should this specific message appear in my notification bar?”

What People Have Built With It

NLS has been around since 2013. Over the past decade, developers have used it for several categories of things.

The most common is notification forwarding. Push phone notifications to your computer, tablet, or other devices in real time. message-mirror forwards Android notifications and SMS to a self-hosted server. FlowBell turns your phone into a real-time webhook bridge. When you’re working at your computer and don’t want to keep picking up your phone but also don’t want to miss important messages, these apps solve exactly that tension.

The second category is automation triggers. Tasker and MacroDroid both support using notification content as triggers. Someone used MacroDroid to capture bank transaction notifications, send them via webhook to Make.com, and write them into Google Sheets for automatic bookkeeping. Delivery status alerts, security camera notifications triggering lights — all follow this pattern.

The third is notification cleanup. HideOngoing uses NLS specifically to hide those persistent notifications that can’t be manually dismissed.

The anti-spoiler app belongs to a fourth, newer category: content filtering. It doesn’t just match by app source or keywords. It uses an on-device AI model to understand the semantics of a notification and decide “is this message spoiling a match result?”

On-Device AI Upgrades Notification Filtering From Rules to Semantics

Mira Chen didn’t call a cloud API. She fine-tuned a Qwen3-1.7B model with LoRA, quantized it to roughly 1GB in GGUF format, and ran it locally on the phone using llama.cpp. A mid-range phone takes about 900ms per judgment, fully offline.

The reason for going on-device is clear: this app reads notifications, including WeChat private messages. Sending them to a server means handing over the user’s most sensitive data. Running everything locally, with not a single word leaving the phone, is the only foundation of trust that holds up.

This choice also exposes a core tension of NLS: its capability boundary depends on what it can read, and what it can read happens to be the user’s most sensitive data. Once authorized, NLS can theoretically read all app notifications — WeChat messages, bank verification codes, email previews. Android 15 started redacting OTP codes from untrusted NLS apps, but the permission remains heavy overall. On-device processing isn’t just a technical preference; it’s a privacy architecture requirement.

Limitations and Boundaries

NLS has several hard limits. The permission barrier is non-trivial: users must manually enable it in system settings, and the authorization can break after each app update. Interception isn’t truly real-time — the notification is posted first, then the listener receives the callback, then the app cancels it. On some phones and in heads-up notification scenarios, the notification may flash briefly before disappearing. And NLS only covers the notification layer — it can’t touch content inside apps once you open them.

What Else This Mechanism Can Do

The NLS + on-device AI combination goes far beyond anti-spoiler apps. Following the thread of “understand each notification’s content, then decide,” there’s much more to build.

Dynamic notification prioritization. Current notification management is static: you pre-set which apps are important. But a message’s importance often depends on content, not source. A WeChat message from your boss versus a group chat @everyone — completely different urgency levels. An on-device model could assess urgency on arrival: important ones get strong alerts, unimportant ones quietly go into history.

Cross-device smart routing. You currently use NLS to push all notifications to your computer, but push everything and your computer quickly becomes another notification dump. Add on-device classification, and you can route only the messages that genuinely need immediate attention to your computer, leaving the rest on your phone.

What these scenarios share: they don’t need finer app-level toggles. They need per-content decisions on every notification. NLS provides the ability to read and cancel. On-device AI provides the ability to understand content. Together, they make this feasible.

Mira Chen wrote in her post that she gradually realized one thing: generic anti-spoiler is probably a feature, not a company. But the NLS + on-device AI combination itself has more room to grow than any single anti-spoiler app. It shifts Android notification management from “toggle by source” to “decide by content” — and the latter solves far more problems than the former.