This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend
What I Built
When I read the prompt about building something for a loved one, I could think of one person, my mom. She runs a business, she's always busy and she skips her multivitamins, more than she takes it. I am not around always to remind her, and when I do I get the same reply,
"lelungi baad mein" (I'll take it later). Honestly, it annoys me sometimes.
So I built Reme (from remember me). It's a small helper that reminds her on WhatsApp, the only app she actually uses. It writes from my own number, in the Hinglish we text each other in, so to her it's just me checking in.
This is what our chats looked like before Reme. I was the reminder system:
Me: mummy khana done? (Mummy, eaten?)
Mummy: Han krungi thodi der mein (Yeah, I'll eat in a bit)
...an hour later...
Me: done?
Mummy: Haa beta ho gya just abhi (Yes dear, just did)
Me: Vitamins le liye? (Took your vitamins?)
Mummy: Ha le liya (Yes, took it)
What Reme does:
- At 11:45, after her breakfast (she eats around 11 to 11:30), it asks "Mummy, nashta ho gaya?" (had breakfast?)
- When she says yes, it reminds her to take the vitamin.
- It understands "10 min ruko" (wait 10 min), "lelungi baad mein"(I will take it later) and "aaj nahi lena, pet kharab hai" (not today, upset stomach) and waits or backs off.
- If she ignores three nudges, it stops nagging her and messages me instead: "Ek call kar lo?" (maybe give her a call?)
- It stays quiet on everything else. When she asks "Ab ghar kab aaogi?" (when are you coming home?), that's a conversation for me, not a bot.
Demo
Code
Reme
Remember me. A WhatsApp nudge that reminds my mummy to take her daily multivitamin after breakfast, in Hinglish, from my own number.
It understands her replies ("Haan", "Ha leli", "10 min ruko", "aaj nahi lena") with Gemma 3 4B running locally through Ollama, so her messages never leave my laptop.
15:20 Reme β mummy: Mummy, lunch ho gaya? π½οΈ
15:22 mummy: Haan [gemma: meal_done]
15:23 Reme β mummy: Mummy, vitamin le lijiye π
15:23 mummy: Ok [ignored: just an acknowledgement]
15:23 mummy: Ha leli [gemma: vitamin_taken]
15:23 Reme β mummy: Shabaash mummy! πβ€οΈ
(the first real run, 4 Oct 2026)
How it works
- One vitamin a day, after breakfast (she eats around 11 to 11:30). Once it's taken, Reme goes quiet for the day.
- She messages first ("nashta ho gaya"): Reme reminds her 15 minutes later.
- She doesn't: at 11:45 Reme asks "nashta ho gaya?", then nudgesβ¦
How I Built It
The open Stack:
- Gemma 3 4B (Google's open-weight model) running locally with Ollama on my MacBook Air. About 2 seconds per message.
- Baileys, an open-source WhatsApp Web client (no browser needed), linked to my own WhatsApp like WhatsApp Web.
- Node.js + TypeScript, and SQLite (built into Node) so reminders survive a restart.
Gemma has exactly one job: read her message and say what it means. Ollama's format option takes a JSON schema, so Gemma has to answer in this shape:
const Intent = z.object({
intent: z.enum(["meal_done", "vitamin_taken", "snooze", "skip", "other"]),
meal: z.enum(["breakfast", "lunch", "dinner", "unknown"]).nullable(),
snooze_minutes: z.number().int().nullable(),
reply: z.string(),
});
const res = await ollama.chat({
model: "gemma3:4b",
messages: [
{ role: "system", content: SYSTEM },
{ role: "user", content: `Your last message to her: ${lastSent}\nHer message: ${text}` },
],
format: z.toJSONSchema(Intent),
options: { temperature: 0 },
});
Everything after that is ordinary code: when to remind, how many times, when to tell me. Every message she receives is written by me in one file. I tried letting Gemma write the replies and got gems like "Aaja mummy, tumhari dawa bhi le hi le" (roughly "come mummy, just take your medicine too"). When it's your mom on the other end, predictable beats clever.
Making a 4B model reliable
I tested every change against real messages, most of them my mom's actual texts.
Four bugs that taught me something:
firstly, "Ok" counted as "vitamin taken". even If the ok was out of context. remember would stop reminding. Rewording the prompt didn't fix it, so a few lines of code do: a bare ok/acha/π to a statement is never "taken".
My own question was ambiguous. The check-in used to say "lunch ho gaya? Ho gaya ho to vitamin le lijiye" (had lunch? if so, take the vitamin), so "haan" could mean either. I fixed the wording, not the model.
"Our Lunch ho gya" at 2:35pm was classified as dinner. Now the meal comes from the word she used, or else the clock. The model doesn't guess.
Fixing one thing broke another. "Han krungi thodi der mein" (yeah, I'll do it in a bit) was read as "done". When I explained future tense in the prompt, Gemma started calling a plain "haan" a snooze. Future tense in Hindi has a visible ending (-ungi), so it became one line of code instead.
The lesson from all four: with a small model, keep the prompt for fuzzy language and move every predictable rule into code.
To test whole mornings without waiting for real ones, pnpm simulate runs a fake clock through five scenarios (she replies, she says "lelungi baad mein", she says "not today", she ignores it) in seconds.
Why Does Open Innovation Matter?
Uhmm, so,
- These are my mother's health details and her personal chats with her daughter. With Gemma running locally, no AI company ever sees them, so her messages never leave my laptop.
- Its free, and works.
My Agent Session
Prize Categories
Best Use of Gemma
Best Use of Entire
My mother's reply
I told her that it wasn't me who texted her last day, she said,(rough translation) "I didnot know, I thought it was you. My daughter couldn't even text me herself huhu" lol.
Top comments (0)