SlothDigest β€” A Local-First AI Agent for Your Morning WhatsApp Digest A developer built SlothDigest, an open-source local-first CLI agent that summarizes WhatsApp chat exports into a morning digest using open-weight models served through a local Ollama instance. The tool parses Android and iOS exports with Hinglish date support, applies map-reduce summarization, extracts deadlines and "needs you" items, and renders output as Markdown, HTML, or an .ics calendar file, with a network guard and data-wipe option to keep chat data on-device. It also includes a Flask web UI and a "Sloth Mode" that defers processing when the machine is on battery or CPU usage exceeds 80%. Every morning, most of us wake up to 500+ unread WhatsApp messages across family groups, college groups, project teams, and neighborhood associations. Scrolling through them is exhausting. What if you could just get a calm, two-paragraph summary of: I built SlothDigest β€” a local-first CLI agent that does exactly that. Drop your WhatsApp .txt exports into an inbox/ folder, run one command, and get a clean digest in Markdown, HTML, or even an .ics calendar file. It runs 100% locally using open-weight models via Ollama. No data ever leaves your machine. Privacy-first by design. And because mornings should be lazy, it has Sloth Mode β€” if your laptop is on battery or the CPU is busy, it defers processing until you're plugged in and relaxed. πŸ¦₯ The tool runs from your terminal, but there's also a Flask web UI for those who prefer a browser: Run the digest slothdigest run Or use the web UI python run webui.py Opens at http://localhost:5000 Generated digest Markdown : SlothDigest β€” 2026-10-24 family group.txt Mom's planning Diwali dinner on Nov 1, and Dad fixed the WiFi router - Papa called Airtel and the WiFi will be back by evening - Mom confirmed Diwali dinner β€” everyone needs to bring one dish - Rohan scored 92% on his math test πŸŽ‰ needs you family group.txt - Mom 14:32 : Raha, can you pick up sweets from Bikaner vala on the way home? - Dad 15:10 : Beta, send me the Airtel bill number, I need to follow up deadlines - Diwali dinner event β€” 2026-11-01 - Airtel bill payment payment β€” 2026-10-25 - Rohan's PTM event β€” 2026-10-28 at 10:00 The same content is rendered as a beautiful πŸ“± phone-friendly HTML page and an .ics calendar file you can import into Google Calendar or Apple Calendar. The entire project is open source on GitHub: πŸ”— github.com/akshrakothari/SlothDigest https://github.com/akshrakothari/SlothDigest git clone https://github.com/akshrakothari/SlothDigest.git cd SlothDigest pip install -e . slothdigest init --name "Your Name" Drop WhatsApp exports into inbox/ slothdigest run inbox/ ← Drop WhatsApp .txt exports here src/slothdigest/ β”œβ”€β”€ cli.py ← Typer CLI init/run/schedule/wipe β”œβ”€β”€ config.py ← JSON config in ~/.config/slothdigest/ β”œβ”€β”€ parser.py ← Android & iOS chat export parser with Hinglish date support β”œβ”€β”€ noise filter.py ← Drops system messages, spam, forwards β”œβ”€β”€ chunker.py ← Smart message chunking that preserves conversation threads β”œβ”€β”€ summarizer.py ← Map-reduce summarization pipeline β”œβ”€β”€ ollama client.py← Ollama local LLM client β”œβ”€β”€ deadlines.py ← Deadline extraction with relative date resolution "kal", "parso" β”œβ”€β”€ needs you.py ← "Needs you" detection mentions, questions, tasks β”œβ”€β”€ renderer.py ← Outputs MD + HTML + ICS β”œβ”€β”€ sloth mode.py ← Defers when on battery or high CPU β”œβ”€β”€ privacy.py ← Network guard, data wipe β”œβ”€β”€ scheduler.py ← Windows schtasks / cron installer β”œβ”€β”€ state.py ← Incremental processing via state files β”œβ”€β”€ pipeline.py ← Orchestrates everything └── webui.py ← Flask web UI optional tests/ ← Pytest test suite | Decision | Why | |---|---| | 100% local | Your WhatsApp data never touches the cloud. Only allowed Ollama URLs are reachable. | | Map-reduce summarization | Handles 1000+ messages by chunking, summarizing each chunk, then reducing into a final digest. | | Incremental processing | Tracks last-processed timestamps β€” only new messages are summarized. | | Quiet-night detection | If a chat has <10 meaningful messages, it just says "Quiet night". | | Sloth mode | Defers processing when on battery or CPU 80%. | | Hinglish support | Understands "kal" yesterday/tomorrow , "parso" day after , "agle somwar" next Monday . | Ollama β€” The backbone. Every LLM call goes to a local Ollama instance. I tested with: The model handles four specific tasks, each with a carefully crafted prompt: Temperature 0.1 keeps the model grounded and factual. Every prompt asks for structured JSON output, with robust fallback parsing if the model hallucinates the format. β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ WhatsApp β”‚ β”‚ Parser β”‚ β”‚ Noise β”‚ β”‚ Chunker β”‚ β”‚ .txt file │──▢│ Android/ │──▢│ Filter │──▢│ smart β”‚ β”‚ β”‚ β”‚ iOS β”‚ β”‚ β”‚ β”‚ windows β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Renderer │◀──│ Reducer │◀──│ Chunk Summarizer β”‚ β”‚ MD+HTML β”‚ β”‚ final β”‚ β”‚ Ollama map step β”‚ β”‚ + ICS β”‚ β”‚ digest β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ Here's the wild part: most of this code was written by an AI coding agent . I described the architecture, and the agent wrote the 16+ source files, 10 test files, and the deploy infrastructure β€” all in a single continuous session. This is the future of open-source contribution: describe what you want, and let AI handle the implementation while you focus on design, privacy, and architecture decisions. This project would be impossible without open innovation. If I had built SlothDigest with a closed API like OpenAI or Claude: Open-weight models Qwen, Llama, Mistral, Gemma running locally via Ollama make this project possible. The model runs on a $0 inference budget. Your data stays on your laptop. You can audit every single prompt and response. Open innovation means privacy-first, cost-free, customizable AI that anyone can run, modify, and trust. This project was built in a single continuous AI-agent session using Backboard's dev platform. The agent read the project requirements, created the architecture, wrote every line of source code, generated the test suite, built the deploy infrastructure, and assembled this blog post. The session spanned: Here's what SlothDigest actually saves you every morning: | Without SlothDigest | With SlothDigest | |---|---| | Scroll through 500+ messages | Read a 2-paragraph digest | | 15-20 minutes of doom-scrolling | 30 seconds of browsing | | Miss deadlines in noisy chats | Deadlines extracted to your calendar | | Forget to reply to someone who asked you | "Needs you" section catches it | | Read ads, forwards, "Good morning " images | Noise filter drops them automatically | The name "SlothDigest" is a double joke β€” it works like a slow, thoughtful sloth deferring work , and it saves you time so you can be the sloth. SlothDigest v0.1.0 β€” Built with πŸ¦₯ in October 2026 for Hacktoberfest.