{"slug": "replylater-i-gave-my-inbox-the-night-shift-to-reclaim-my-me-time", "title": "ReplyLater: I Gave My Inbox the Night Shift to Reclaim My Me Time", "summary": "A developer built ReplyLater, an open-source, local-first AI email co-pilot that batches inbox triage into an overnight background workflow, classifying messages, extracting commitments, flagging unanswered questions and staging reply drafts for review the next morning. The system pairs a React/Vite dashboard and FastAPI backend with Temporal workflow orchestration, a local Gemma2:2b model served through Ollama, PostgreSQL with pgvector for semantic retrieval of past sent mail, and Sentry for observability. When key information is missing, the tool is designed to flag the uncertainty rather than invent an answer.", "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\n**The Sloth Philosophy:** Sloths don't hurry, stress over backlogs, or react to every stimulus in real time. They pace themselves, conserve their energy, and let the world catch up.\n\n*Go to sleep with an inbox full of obligations. Wake up with next week's replies ready.*\n\nReplyLater is a local-first, open-source AI co-pilot that turns a chaotic email backlog into an organized, week-ahead action board.\n\nMost AI email tools compete for your attention while you're already trying to read and respond. ReplyLater takes a different approach: **batch the work, let it run in the background, and review the results when you're ready.**\n\nThe workflow is simple:\n\n`.eml` backlog or email export.\nReplyLater can classify messages, extract commitments such as *“Send the revised design deck by 2 PM,”* identify unanswered questions, and prepare reply drafts. When key information is missing, it is designed to flag the uncertainty rather than invent an answer.\n\nThe people who benefit are anyone who ends the week with an inbox full of obligations: students, freelancers, developers, and busy professionals who want to spend less energy on inbox triage and more time on meaningful work.\n\nThe hosted demo may have different privacy characteristics from a local installation. Use synthetic or non-sensitive email samples when testing a hosted instance unless its data-handling behavior has been verified.\n\nThe project is organized around a React dashboard, a FastAPI backend, local model inference, durable workflow orchestration, and persistent semantic memory.\n\nReplyLater is built as a modular, local-first application:\n\n`gemma2:2b`), running locally through Ollama.` temporalio`).\n\n```\n+------------------------------------------------------+\n|                React + Vite Dashboard                |\n|    Needs Your Call | Week-Ahead Queue | Info/Closed  |\n+----------------------------+-------------------------+\n                             |\n                         REST API\n                             |\n+----------------------------v-------------------------+\n|                    FastAPI Backend                   |\n+------------+-------------------+---------------------+\n             |                   |\n      +------v------+     +------v------+     +----------------+\n      |  Temporal   |     | Local Gemma |     |   PostgreSQL   |\n      |  Workflow   |<--->| via Ollama  |<--->|   + pgvector   |\n      | & Activities|     |             |     |                |\n      +------+------+     +-------------+     +----------------+\n             |\n      +------v-------------------------------------------+\n      |             Sentry Observability                |\n      |          Custom spans, latency, errors          |\n      +--------------------------------------------------+\n```\n\nThe key design principle is separation of concerns: Temporal coordinates long-running work, FastAPI exposes application functionality, Gemma handles language tasks, PostgreSQL stores persistent data, and Sentry helps diagnose failures.\n\nGemma supports two main tasks:\n\nLocal batch processing can be interrupted by inference delays, hardware limits, or other transient failures. Temporal's `OvernightEmailPrepWorkflow` coordinates the process through separate activities for parsing, semantic retrieval, extraction, and draft staging.\n\nConfigured retry policies help recover from transient failures, while controlled concurrency helps avoid exhausting local CPU or GPU resources.\n\nSentry is used to help inspect inference and workflow behavior, including custom spans, execution latency, activity transitions, and Ollama HTTP errors. Token counts are tracked where available.\n\nPostgreSQL and pgvector provide a semantic retrieval layer. Relevant sent-email examples can help the system condition drafts on a user's preferred greetings, phrasing, and sign-offs.\n\nEmail contains some of our most sensitive information: personal correspondence, financial documents, travel plans, health messages, and work commitments. Sending all of that content to a hosted AI API should not be the default.\n\nOpen-weight models and open-source infrastructure made a local-first architecture possible:\n\nThis is not a claim that every deployment has zero network traffic. Privacy depends on the actual configuration, including telemetry, hosting, and any external integrations. The goal is to make local processing practical and keep private correspondence out of hosted model inference by design.\n\nThe point of ReplyLater is not to make people answer email faster every minute of the day. It is to reduce the number of decisions waiting for them when they sit down to work.\n\nIn a test run using **30 `.eml` messages**, the observed results were:\n\n| Metric | Result | \n|---|---|\n| Total processed emails | 30 | \n| Total batch execution time | 3 min 48 sec | \n| Average inference latency | 2.82 seconds per message | \n| Emails requiring replies | 18 | \n| Messages routed to “Needs Your Call” | 5 | \n| Receipts/digests auto-archived | 7 | \n| External email-content egress during local inference | 0 KB under the tested configuration | \n\nThese are results from one test corpus, not a universal performance guarantee. The missing-information precision result should be interpreted in the context of the sample and labeling method.\n\nThe intended payoff is a calmer start to the week: fewer repetitive triage decisions, commitments surfaced before they are forgotten, and drafts ready for human review. ReplyLater stages drafts; it is not intended to send messages without the user's review.\n\nReplyLater is intended for the following partner categories, based on the technologies used:\n\nPlease confirm these categories match the challenge's official eligibility and submission rules before publishing.\n\nTechnology shouldn't just accelerate how quickly we react; it should protect our attention and conserve our energy.\n\nWith open-weight models like **Gemma**, durable orchestration through **Temporal**, and observability from **Sentry**, ReplyLater explores a calmer way to handle the inbox: prepare the work while you rest, then let a human make the final call.\n\n**Shut your laptop. Get some sleep. Let ReplyLater prepare Monday morning.**", "url": "https://wpnews.pro/news/replylater-i-gave-my-inbox-the-night-shift-to-reclaim-my-me-time", "canonical_source": "https://dev.to/avrojitduttaj/replylater-i-gave-my-inbox-the-night-shift-to-reclaim-my-me-time-33g1", "published_at": "2026-10-25 12:37:10+00:00", "updated_at": "2026-10-25 12:42:56.969412+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "large-language-models", "mlops", "ai-products"], "entities": ["ReplyLater", "Temporal", "Ollama", "Gemma", "FastAPI", "PostgreSQL", "pgvector", "Sentry"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/replylater-i-gave-my-inbox-the-night-shift-to-reclaim-my-me-time", "markdown": "https://wpnews.pro/news/replylater-i-gave-my-inbox-the-night-shift-to-reclaim-my-me-time.md", "text": "https://wpnews.pro/news/replylater-i-gave-my-inbox-the-night-shift-to-reclaim-my-me-time.txt", "jsonld": "https://wpnews.pro/news/replylater-i-gave-my-inbox-the-night-shift-to-reclaim-my-me-time.jsonld"}}