Case study

Android Notification Summaries

On-device AI summarization of messaging threads using Gemini Nano.

Year
2024–2025
Role
Staff Designer, Lead
Platform
Android
Domain
Android, System UI, AI

Gemini Nano summarizes active message threads inside the Android notification shade. Processing stays on the device, so people can catch up without sending private conversation data to the cloud.

Busy threads needed a better way to catch up

Group chats can produce more notifications than a person can reasonably scan. Muting the thread removes the interruption but also removes the context. We needed to compress the conversation without hiding the source or taking control away from the user.

Private messages stay on the device

RAW CHATSTREAMCONDENSEDSUMMARYLOCAL GEMINI SYNTHESIS PIPELINE

On-device processing // Private Compute Core

Message content is processed locally inside the protected compute boundary. The model returns a short summary without sending the source conversation to a server.

Privacy was the hard constraint. Gemini Nano processes the summary inside Android's Private Compute Core, so the message content does not leave the phone. That boundary made an OS-level summary possible without turning personal conversations into cloud input.

The summary never replaces the conversation

AI-GENERATEDTRIAGE BLOCKCOLLAPSEDSOURCE GATEG-CHAT // WORK ROOM12M AGOGEMINI SUMMARYVIEW ORIGINAL CHAT (5 MESSAGES)HUMAN-ON-THE-LOOP TRIAGE INTERACTION

Notification summary // Source preserved

The shade presents a short summary for quick triage. Opening the notification returns the user to the original conversation.

The feature adds a condensed overview to the notification shade and marks it with a small sparkle. The original messages remain one tap away. A person can use the summary to decide whether the thread needs attention, then open the source when detail matters.

The design had to survive model and device limits

Android Notification Summaries Animation
Fig. 01

I worked directly with the Gemini Nano training team to align the interface with the model's on-device capabilities. With Engineering, I mapped failure behavior under device constraints, including unsupported languages and low-battery states. The summary stays out of the way when the system cannot produce a reliable result.