# Sloth Digest: a local AI that reads my group chats while I sleep

> Source: <https://dev.to/noraprogramadora/sloth-digest-a-local-ai-that-reads-my-group-chats-while-i-sleep-50ca>
> Published: 2026-10-24 20:01:25+00:00

*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)*

Group chats pile up overnight. Reading 200 messages to find the two that matter ("can you send me the pricing doc by Wednesday?") is work nobody wants to do.

**Sloth Digest** does that reading for me. I drop my exported WhatsApp chats into a folder, and every morning a local model has already written one Markdown file with:

Pizza orders, coffee tips and football talk are ignored. I set it up once with Windows Task Scheduler, and after that I do nothing. I just open the file.

It is for anyone who wants to stay on top of busy group chats without scrolling through them, and who doesn't want to upload those chats to someone else's server to do it.

All the chats in the video are invented samples. Here is what the digest looks like for the sample chat:

```
# Morning digest, 2026-10-23

## Needs you
- Send the updated pricing doc, due: Wednesday at noon. Asked by Maya in chat-team
- Review slides, due: Tomorrow afternoon. Asked by Priya in chat-team

## chat-team
The team needs to finalize the client demo, with Sam responsible for sending the updated
pricing document by Wednesday at noon... The demo time has been moved to Thursday at 4:30 PM.

- Client Demo: Thursday at 4:30 PM
```

**A local AI that reads your exported group chats while you sleep and leaves a short morning digest. No cloud, no API key, no cost per message.**

Built for the [Hacktoberfest Open-Source AI Challenge, Week 3: Slow and Steady](https://dev.to/challenges/hacktoberfest-week3-2026-10-19).

`.txt`) into `inbox/`.
Small talk (pizza, coffee, football) is ignored.

Example output (from the…

**Stack:** Gemma 3 (4B, open-weight) running through Ollama, with Node.js and TypeScript. The model runs locally, and the scheduled run uses Windows Task Scheduler calling a script inside WSL.

```
WhatsApp exports (.txt) → parser → Gemma 3 via Ollama (JSON Schema output)
→ code-side logic (assignee filter, dates) → daily Markdown digest
```

`<Media omitted>`.`/api/chat` with a JSON Schema in the `format` field, `temperature: 0` and an explicit `num_ctx`, so the model always returns valid, predictable JSON.` assignee`. Plain code then keeps only the ones for me and works out which message each deadline came from.`wsl.exe` every morning. Ollama runs on Windows and the project lives in WSL, so I used WSL's mirrored networking mode to let them talk over `localhost`.
I tested on a synthetic chat with known answers: two tasks for me, one meeting time that changes, and lots of small talk. A 4B model made real mistakes, and fixing them taught me the most important lesson of the project.

| Run | Change | What went wrong | 
|---|---|---|
| 1 | Baseline prompt | A task Maya had promised to do was listed as mine; "tomorrow" left unresolved; the detail "include monthly and annual plans" got lost | 
| 2 | Asked the model to resolve dates | Dates became absolute, but the model **invented times** (4:00 PM, 9:00 AM) and picked the wrong day for "tomorrow" | 
| 3 | Model extracts all tasks with an `assignee` , code filters | Assignment fixed, but dates still inconsistent | 
| 4 | Model copies deadlines verbatim, no date arithmetic | All 5 tasks correct, no invented times. Still missing "monthly and annual" | 

**The lesson:** with a small model, don't ask for judgment or arithmetic that code can do. "Is this task for me?" and "what day is tomorrow?" are easy to verify in code and unreliable in a 4B model. Extraction stays with the model, and the rest moves to code.

`OLLAMA_MODEL=gemma3:12b npm run digest -- inbox` changes the model without touching the code. When a 4B model fails at something, I can try another open model instead of waiting for a provider.
I did not compare it against a closed API, so I'm not claiming it is more accurate than one. What I can say is that this design is possible without my chats leaving my laptop.
