This whole thing started simple. I’m in dozens of messaging groups, everything from professional communities to neighborhood chats. Keeping up was impossible. I’d open an app and see 500+ unread messages across 30 groups. Most of it was noise, but the important stuff was buried deep.
So I built a monitor. It watches my groups and generates an AI-powered digest, a concise summary of everything important, organized by topic. Gemini handles the AI part. That worked great. Then, naturally, scope creep kicked in.
Now it also:
- Ingests email newsletters via IMAP polling and includes them in the digest.
- Filters online articles using the LLM as a relevance judge based on my interest profile.
- Has separate digest pipelines for different content categories (tech, community, religious content).
- Auto-forwards the daily digest to relevant groups with randomized timing.
- Respects schedule constraints, it knows about holidays and off-hours.
- Sends push notifications when something critical happens, like session loss or system failures.
Honestly, the operational side was half the project, maybe more.
- Fighting Windows and Docker: My system runs in Docker on my Windows desktop. Docker Desktop crashes sometimes, and Windows loves sleep mode or random updates. I had to build a whole keep-awake system just to stop the PC from sleeping. Talk about fighting the OS!
- I built a watchdog with escalating recovery: restart container, then restart Docker, then alert me.
- Catch-up logic and duplicates: When the system came back from downtime, it needed to process missed messages without creating duplicates. I cleaned up over 2000 duplicate records from the early days before I got dedup right. Felt amazing when that finally worked.
- LLM prompt engineering: Getting the digest quality right took many iterations. Gemini would either be too verbose (defeating the purpose) or miss important things. I ended up giving the prompt group names and content categories as context, telling it to be as long as needed but only skip truly redundant content.
- Some messaging groups have permanently broken API responses. No fix available upstream. I just had to accept it and handle the errors gracefully.
This started as a weekend hack. Now it’s the tool I check every morning before anything else. It’s like having a personal research assistant that reads everything I can’t and tells me what matters. I showed this to a friend and they said, “you built a product.” I don’t know about that, but it’s definitely the most complex system I’ve built on my own.
Next: Migrating it to a Raspberry Pi so it doesn’t depend on my desktop being awake.
Top comments (0)