{"slug": "kindly-later-a-local-reply-queue-for-the-emails-i-keep-postponing", "title": "Kindly Later: a local reply queue for the emails I keep postponing", "summary": "A developer built Kindly Later, an MIT-licensed tool that parses exported .eml messages and uses a locally running open-weight model via Ollama to classify each as reply, read, or ignore and draft short responses with verbatim evidence quotes. The app sends only sender, subject, and a capped body to 127.0.0.1, validates model output in Python, and routes failures or timeouts to a manual-review lane; real model runs timed out on the developer's machine, so only offline tests and a UI preview are verified.", "body_md": "*This is a submission for the [Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady](https://dev.to/challenges/hacktoberfest-week3-2026-10-19).* \n\nI do not dread writing email as much as I dread deciding which email needs writing. A mixed folder of receipts, updates, and actual questions makes every “quick inbox check” a series of tiny decisions.\n\nKindly Later takes exported `.eml` messages and turns them into a single review queue. It asks a locally running open weight model to mark each message as “reply,” “read,” or “ignore,” and to write a short reply draft when one is needed. Each suggestion includes an exact quote from the original message, so I can see why it was made without reopening the email. The app never sends mail. The user reviews the drafts and copies only the useful ones.\n\nThe goal is modest: spend one intentional pass reviewing suggestions instead of repeatedly reopening the same messages.\n\n**Repository:** [[https://github.com/Khyati-Kapil/kindly-later](https://github.com/Khyati-Kapil/kindly-later)]\n\nThe project is MIT licensed and has no Python package dependencies. The key command is:\n\n```\nollama pull gemma3:4b\nollama serve\npython3 kindly_later.py examples/mail --output reply-queue.html --model gemma3:4b\n```\n\nThe model name is configurable. The local build was also attempted with an installed `llama3.1:latest` model. Both attempted runs timed out on this machine, so the current verified results are the offline tests and the illustrative UI preview.\n\nPython's standard `email` package parses exported messages. The app sends only the sender, subject, and a capped text body to Ollama on `127.0.0.1`. A system prompt asks for JSON with a decision, a reason, a verbatim evidence quote, and an optional draft. Python validates the fields and checks that the quote occurs in the source body. If validation fails or the model times out, the message goes into a “Review manually” lane. The report is static HTML with no network requests and no send action.\n\nThe trust boundary is the interesting part. An email can contain instructions aimed at an assistant. One fictional test message includes such an instruction. The email is passed as data, and model output is validated before it appears as a suggestion. An exact quote does not guarantee a correct decision, so human review remains the last step.\n\nEmail is personal. Using a local open weight model means the app can process exported messages without sending their content to an external AI service. Ollama provides a model interface that can be swapped: a small model for a low power machine or a stronger model when accuracy matters more. There is no per message API charge. The code and the output format can be inspected and changed by anyone.\n\nThis design also makes the safety behavior visible. The model suggests; the Python program verifies a narrow set of invariants; the person decides whether to use the result.\n\nI have not measured time saved yet. A fair test is to time a manual triage of the same exported messages, then time review of the generated queue, counting corrections. I will add those numbers after a successful real model run.", "url": "https://wpnews.pro/news/kindly-later-a-local-reply-queue-for-the-emails-i-keep-postponing", "canonical_source": "https://dev.to/khyatikapil/kindly-later-a-local-reply-queue-for-the-emails-i-keep-postponing-4l0e", "published_at": "2026-10-23 12:35:03+00:00", "updated_at": "2026-10-23 12:41:41.540221+00:00", "lang": "en", "topics": ["ai-tools", "ai-agents", "large-language-models", "ai-safety", "developer-tools"], "entities": ["Kindly Later", "Ollama", "Gemma 3", "Llama 3.1", "GitHub", "Hacktoberfest"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/kindly-later-a-local-reply-queue-for-the-emails-i-keep-postponing", "markdown": "https://wpnews.pro/news/kindly-later-a-local-reply-queue-for-the-emails-i-keep-postponing.md", "text": "https://wpnews.pro/news/kindly-later-a-local-reply-queue-for-the-emails-i-keep-postponing.txt", "jsonld": "https://wpnews.pro/news/kindly-later-a-local-reply-queue-for-the-emails-i-keep-postponing.jsonld"}}