DEV Community

Sourav
Sourav

Posted on

My Grandpa Measures in Handfuls: Turning His Voice Memos Into a Family Recipe Book

This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend (https://dev.to/challenges/hacktoberfest-weekend-2026-10-01).
What I Built

Garp turns my grandpa Thatha's voice memos into a family recipe book. He talks, the app listens, and a 3D book page appears with the recipe written the way he actually said it.
The problem is simple. Thatha is getting older and his recipes live nowhere except his head and a pile of phone voice notes. When he says "a handful of dal" or "don't rush the onions, they'll punish you," no normal recipe app knows what to do with that. Write it down wrong and the dish dies with him.
So I built him a book that accepts voice memos and live recordings, figures out whether the note is actually a recipe, and refuses anything that isn't. A story about the neighbor's dog never lands in the book. A dal memo becomes a Dal page, ingredients first, numbered steps after, his tip quoted at the bottom, signed Grandpa.

Demo
There is no public link yet. It runs on my machine with two commands:
PORT=8001 python3 -m extractor.server
then open http://127.0.0.1:8001. The homepage is the 3D book. Click "Add a voice or live memo," pick Voice to upload a file or Live to record in the browser. A real memo I recorded came back as the Dal page: five ingredients, six steps, 2970 STT credits spent, one tinker call. Non-recipe audio gets a plain "Not added" message and nothing is saved.
Repo: https://github.com/LusterSourav/Garp

Code
The whole server is Python stdlib, no framework. The pipeline is one file per job: memo_ingest.py guards the upload, transcribe.py turns speech into text, extract.py turns text into recipe JSON, to_nyum.py writes the book file, bookview.py renders the 3D pages. test_smoke.py keeps it honest offline.

https://github.com/LusterSourav/Garp

How I Built It
The open pieces are the core, not decoration.
Transcription tries local first. If faster-whisper is installed, the memo never leaves the laptop: the transcript gets scored on word count, confidence, no-speech probability, and repetition loops, and only a clean transcript is accepted. If local fails or nothing is installed, the same saved temp file goes to ElevenLabs Scribe automatically. The user never re-uploads. Credits burn only when the cloud actually runs.

Extraction has a local path too through Ollama and Qwen, with Backboard's Claude Haiku as the hosted fallback. The prompt is strict: speaker's own words for quantities, never invent, vague things go in unclear, non-food returns empty and gets rejected with a 422. The recipe is written in whatever language Thatha spoke.
The book itself is vendored everything: Barlow and Lora fonts, Tabler icons redrawn on canvas with rough.js, no CDN. Long recipes paginate inside the 3D page and turn with a curl animation, no buttons, just tap left or right.

Why Does Open Innovation Matter?
Because this book cannot depend on anyone's server but ours. Faster-whisper means Thatha's voice can stay on a laptop in his house. Qwen through Ollama means extraction works with no account and no bill. MIT-licensed templates and icons mean the whole thing is mine to keep, fork, and hand to my cousins without asking permission.
A closed API could do each step. It could never give me this: a gift I can copy onto a ten-year-old laptop, run offline at his kitchen table, and know it will still work when the free credits are long gone. Open made it a family heirloom instead of a subscription.

Prize Categories
Entering for the overall prize only.

Top comments (0)