Rule-based daily Gmail inbox triage. Zero LLM, read-only, Windows-friendly.
Project description
morning-brief
Rule-based daily Gmail inbox triage. Zero LLM, read-only, Windows-friendly.
Classifies the last day of mail into HIGH / MEDIUM / LOW / SPAM from a YAML rules file, writes a markdown digest, and pops a desktop toast. Scan your inbox in thirty seconds instead of thirty minutes.
Why not an LLM-based tool
Paid-LLM triage tools like mailtrim and gmail-digest work, but cost money per run and fail silently when the API is down. For a personal inbox, most of the signal lives in sender domain plus a handful of subject keywords. Rules handle that case reliably and for free.
Install
pip install morning-brief
Windows users also want the toast helper:
pip install "morning-brief[windows]"
One-time setup
- Create a Google Cloud project, enable the Gmail API, create an OAuth 2.0 Client ID of type Desktop app, and download the JSON as
credentials.json. - Run
morning-brief initto scaffold~/.morning-brief/. - Drop
credentials.jsoninto~/.morning-brief/. - Edit
~/.morning-brief/rules.yamlto match your senders. - Run
morning-brief run. First run opens your browser for read-only consent and writestoken.jsonlocally.
Daily run
Windows Task Scheduler, WSL cron, or macOS launchd can each fire the command once a day at 8am.
Windows Task Scheduler: create a basic task triggered daily at 08:00 running morning-brief run.
WSL cron:
0 8 * * * /home/you/.local/bin/morning-brief run >> /tmp/morning-brief.log 2>&1
For toast notifications from WSL cron, install wsl-notify-send; morning-brief will pick it up automatically.
Rules
rules.yaml uses case-insensitive substring matching. The starter generated by morning-brief init covers GitHub notifications, common spam patterns, and a placeholder high-priority sender list.
Classification precedence: spam wins first, then high, then github-low, then medium (default).
Scope
- Read-only Gmail access. The tool never marks, labels, moves, or deletes mail.
- Writes digests to
~/.morning-brief/digests/YYYY-MM-DD.md. - Tracks processed message IDs locally for 7 days so reruns are idempotent.
Status
Alpha. Classifier is covered by unit tests; integration tests for the Gmail client come next.
License
MIT.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file morning_brief-0.2.0.tar.gz.
File metadata
- Download URL: morning_brief-0.2.0.tar.gz
- Upload date:
- Size: 12.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4d11263c68092a146c0e5f636864293ff8931ad0831635ce9c0b8360c924a95f
|
|
| MD5 |
f7e199227f4b90316413b80e52e68a87
|
|
| BLAKE2b-256 |
2db0e9cf95762bc558f8e0a7d2299075436ea870b3db80eddccc8813dc6e9b59
|
File details
Details for the file morning_brief-0.2.0-py3-none-any.whl.
File metadata
- Download URL: morning_brief-0.2.0-py3-none-any.whl
- Upload date:
- Size: 13.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86c1451f4876f83940e7ea06242d0b6163dc349667ae6596b7209bb70b2bc386
|
|
| MD5 |
d43b1e364fcfdc0e14158128636c7477
|
|
| BLAKE2b-256 |
c11cc5dd81dabe995f3f2321a2d0845f3987f4bc1b00fa9a647d176ad8248954
|