This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady
What I Built
Every morning I wake up to the same thing: a class group, a club group and a flatmates group, all busy overnight. Most of it is "good morning", stickers and memes. But somewhere in there is a professor's deadline, someone asking me to deploy something by 9 pm, and a flatmate asking who's paying the wifi bill.
So I built SlothBrief, a local-first tool that reads WhatsApp chat exports overnight and gives me one short morning brief:
- π¨ Needs You: only the messages that actually involve me (questions to me, deadlines, payments), with Hinglish dates like "kal 11:59 pm tak" turned into real ones (Oct 22, 11:59 PM).
- π A short summary per group, so I know what happened without scrolling.
- π€ Team commitments: who said they'd do what.
- π¦₯ The lazy payoff: how many messages I didn't have to read.
Everything runs on my laptop with Gemma 3 through Ollama. My friends' messages never go to a cloud API.
Demo
Here's part of a brief SlothBrief generated from my synthetic demo chats (no real conversations):
π¨ Needs You β College DSA Group
- DEADLINE: Submission deadline is kal 11:59 pm tak [Due: 2026-10-22 23:59] (Prof. Sen)
- QUESTION: Ishaan, did you understand how to handle the edge cases in question 4? (Tanmay)
π¨ Needs You β GDG Club
- DEADLINE Β· QUESTION: Ishaan, can you deploy the latest registration portal by tonight 9 pm? [Due: 2026-10-21 21:00] (Sneha)
π¨ Needs You β Flatmates
- DEADLINE Β· PAYMENT Β· QUESTION: Wifi recharge due today. Bill is βΉ899. Ishaan, can you pay via Airtel Thanks app? (Kabir)
- OWED TO YOU: I'll transfer my βΉ300 share to Ishaan by evening (Rahul)
What's not there matters just as much: my own messages, the "Paid βΉ290 to Vikram" that was already done, a teammate's task that isn't mine, and "kal maid nahi aayegi", which has a date in it but isn't a deadline.
Code
ishaanchowdhury1
/
slothbrief
A local-first WhatsApp chat summarizer powered by Gemma 3 and Ollama.
π¦₯ SlothBrief
"Read your group chats overnight so you don't have to."
Built for the DEV Hacktoberfest Open-Source AI Challenge: Week 3 β Slow and Steady
Target Category: Best Use of Gemma
Local-first: Ollama inference runs on your machine
β Why SlothBrief?
Group chats can bury useful deadlines, questions, and payment reminders in everyday chatter.
- Good morning forwards & sunset photos
- Memes & sticker spam
- Endless chains of "ok", "done", "π"
Hidden underneath that pile are the 3 things that actually matter:
- An academic assignment deadline: "kal 11:59 pm tak submit karna hai"
- A bill payment due: "Please send βΉ500 for wifi via GPay"
- Someone directly asking you a question: "Ishaan, did you push the commit?"
SlothBrief channels your inner sloth. It runs locally on your Mac while you sleep, filters out the clutter, reads group chats using a local Google Gemma 3 model, resolves relative deadlinesβ¦
How I Built It
WhatsApp .txt export
β parser (Android/iOS formats, 12h/24h times, multi-line messages)
β rule-based noise filter (greetings, stickers, forwards; never drops dates, βΉ amounts or my name)
β SQLite store (dedupe + "new since last brief" cursor)
β Gemma 3 4B via Ollama (map-reduce summaries + action extraction, JSON output)
β grounding check (drop any item whose evidence isn't in a real message)
β Needs You rules (mentions me? deadline? payment? already done? sent by me?)
β Streamlit app + overnight.py β briefs/YYYY-MM-DD.md + macOS notification
A few things I learned building it:
1. Summarizing is the easy part. Deciding what's mine is hard. My first version flagged 16 "Needs You" items across 45 demo messages. Most were wrong: my own messages, someone else's task, a payment I'd already made, the same message counted three times. Getting it down to the handful that matter took more rules than prompts: skip my own messages, merge tags per message, skip completed actions, and treat "transfer to Ishaan" as money owed to me.
2. The model will happily make up a fact. One early summary said "Ishaan paid βΉ899". I hadn't; I'd only been asked to. I tightened the prompt so requests stay requests, and every extracted action item has to quote evidence that actually appears in the chat. If it doesn't, it's dropped and counted.
3. Indian group chats are Hinglish. "kal", "parso", "shaam 5 baje", "11:59 pm tak": the date resolver works relative to each message's timestamp, so "kal" on Oct 21 means Oct 22.
4. Structured output keeps a 4B model reliable. Ollama's format="json", temperature near 0, Pydantic validation and one repair retry. If the model still fails, the brief says so instead of guessing.
The repo has 69 pytest tests covering the parser, noise filter, date resolution, Needs You rules, metrics, and a privacy test that blocks any non-localhost socket connection while the pipeline runs.
Why Does Open Innovation Matter?
Because group chats are other people's words. My flatmates never agreed to have their messages uploaded to an AI company's servers so I could skip reading them. With an open-weight model running locally:
- The chats stay on my machine. The pipeline only talks to Ollama on localhost, and I turned off Streamlit's usage stats.
- It costs nothing to run every night. No API bill for summarizing hundreds of messages a day.
- It works offline, which matters more than you'd think when the wifi bill hasn't been paid π
- I can swap the model. One environment variable switches Gemma 3 4B to a smaller model for older laptops.
A closed API might write slightly smoother summaries. But for this job, where the data is private and the run happens every single night, local Gemma is the better fit.
The Lazy Payoff
The old routine: open each group, scroll back to wherever I stopped reading, skim past the stickers and forwards, and hope I didn't miss the one message that mattered.
The new routine: one brief, three or four cards that actually need me, then back to my chai. β
The biggest win wasn't speed, it was trust. Once SlothBrief stopped flagging my own messages and other people's tasks, I could believe that an empty "Needs You" list meant I really could ignore that group for the morning.
What's still rough:
- Weekday phrases ("quiz on Friday") and ambiguous ownership ("someone should book the room") can be missed or mislabelled.
- WhatsApp has no API, so exporting the chat is still a manual step.
- SlothBrief is a morning filter, not a task manager. I still glance at the original chat before paying anyone.
Prize Categories
- Best Use of Gemma: Gemma 3 4B runs locally via Ollama and does all the summarization and action extraction.
Happy (belated) International Sloth Day. Let Gemma do the reading. π¦₯β
Top comments (0)