👻 Memoria Local: An Offline AI Digital Ofrenda for Día de los Muertos
This is a submission for the Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine What I Built I built Memoria Local , a completely offline Python CLI tool that helps families build a "Digital Ofrenda" for Día de los Muertos. You feed it an audio recording of a family member sharing

Hacktoberfest Open-Source AI Challenge: Ghost in the Machine Submission 👻🌼
This is a submission for the Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine
I built Memoria Local, a completely offline Python CLI tool that helps families build a "Digital Ofrenda" for Día de los Muertos. You feed it an audio recording of a family member sharing a memory about a passed loved one. It uses a local open-weight speech model to transcribe the story, and a local open-weight LLM to extract life lessons, favorite memories, and format it into a beautiful, printable tribute.
The inspiration came from the fleeting nature of oral history. When elders pass, their stories often go with them. I wanted a way to capture and honor those voices without sending deeply intimate family grief and memories to corporate cloud servers.
Here is the terminal output when processing a recording of my grandfather talking about my late grandmother:
$ python memoria.py grandma_story.wav 🕯️ Loading Whisper locally... transcribing the spirits... 🦙 Waking up the local archivist (Llama 3.2)... --- 🌼 Ofrenda Tribute: The Keeper of the Garden --- Life Lessons She Taught Us: 1. Patience is the water that makes the seeds grow. 2.
A shared meal is the strongest bridge between strangers. 3. Never let the sun set on an unspoken "I love you." Closing Blessing: May her memory be a light on the path of the ancestors, and may the scent of cempasúchil always guide her home to us. ------------------------------------ Enter fullscreen mode Exit fullscreen mode Code Since I'm keeping this lightweight and repo-free for this challenge, here is the core logic.
It relies on openai-whisper for local audio transcription and ollama for local text generation.
import whisper import ollama import sys def create_ofrenda ( audio_path ): print ( " 🕯️ Loading Whisper locally... transcribing the spirits... " ) model = whisper. load_model ( " base " ) result = model. transcribe ( audio_path ) transcript = result [ " text " ] print ( " 🦙 Waking up the local archivist (Llama 3.2)... " ) prompt = f """ You are a compassionate archivist for Día de los Muertos.
Based on this memory shared about a loved one, write a beautiful ' Ofrenda Tribute '. Include: - A poetic title. - 3 core life lessons they taught. - A short, warm closing blessing. Memory: { transcript } """ response = ollama. chat ( model = ' llama3.2 ', messages = [{ ' role ': ' user ', ' content ': prompt }]) print ( " \n --- 🌼 Ofrenda Tribute --- " ) print ( response [ ' message ' ][ ' content ' ]) print ( " -------------------------- " ) if __name__ == " __main__ ": create_ofrenda ( sys. argv [ 1 ]) Enter fullscreen mode Exit fullscreen mode How I Built It I built this using Python, OpenAI's Whisper (open-weight speech-to-text), and Ollama running the llama3.2 open-weight LLM.
The pipeline is entirely local. First, the audio file is passed to Whisper, which runs entirely on the CPU/GPU without touching the network. The resulting transcript is then injected into a carefully crafted system prompt designed to honor the deceased, which is passed to the local Ollama daemon. The "ghost in the machine" here is quite literal—the AI is channeling the raw audio of the past into a structured tribute for the present, running entirely on a laptop with the Wi-Fi turned off.
Open innovation is the absolute core of this project for two reasons:
While this isn't a multi-step agentic workflow, the "agent" here acts as a compassionate archivist. I spent time iterating on the prompt in Ollama to ensure the model didn't hallucinate facts, but rather synthesized the emotional core of the transcript into a respectful tribute. Getting the tone right—somber but celebratory—required testing different open-weight models until Llama 3.2 nailed the cultural nuance of an Ofrenda.
I tested this with a 3-minute audio clip of my father talking about his own father, who passed away before I was born. Hearing the AI transcribe his voice and then beautifully summarize a man I never met into a printable tribute brought tears to my father's eyes. It didn't just process data; it created a tangible artifact of memory that we placed on our physical Ofrenda this year.