This is a submission for the Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine
What I Built
Ofrenda is a private, offline remembrance builder for Día de los Muertos.
You enter a loved one's name, your relationship, their favorite foods and songs, and a memory. A local open weight model then writes three things: a short remembrance honoring them, a gentle "letter back" in a warm voice, and a list of items to place on your ofrenda. It all appears on a candlelit, marigold themed page.
I read the theme "Ghost in the Machine" as the people who live on in our stories. On Día de los Muertos, the line between past and present gets thinner, and the machine here isn't haunted. It helps carry a memory forward. The most personal prompts I can imagine giving an AI are stories about people I miss, so I built it so those stories never leave my computer.
Code
[Link your GitHub repo here, or paste it with:
🕯️ Ofrenda
A private, offline remembrance builder for Día de los Muertos, powered by an open-weight model running entirely on your own computer.
Enter a loved one's name, favorite foods, favorite songs, and a memory. Gemma writes:
- A remembrance honoring them
- A "letter back" in a warm, gentle voice
- A list of items to place on your ofrenda
All inside a candlelit, marigold-themed page.
Built for the Ghost in the Machine open-source AI challenge.
Why open matters here
These are stories about people we love. Ofrenda uses an open-weight model running locally, so:
- Private: nothing you type ever leaves your machine. No server, no account, no API key.
- Offline: it works with Wi-Fi turned off.
- Free: no usage costs or rate limits.
- Durable: it can't disappear if a service shuts down or changes its terms.
-
Swappable: change one line (
MODEL) to use any other open model, or a…
How I Built It
- Model: Gemma3 : 4b, an open weight model from Google, running locally on my Mac
-
Inference: Ollama, serving the model at
localhost:11434 -
Backend: about 40 lines of Python (standard library HTTP server plus
requests) that takes the form data, builds a prompt, and sends it to the local model - Frontend: a single HTML file with plain CSS and JavaScript, no frameworks
The prompt asks the model for three sections (REMEMBRANCE, LETTER BACK, OFRENDA ITEMS) and tells it not to invent specific facts beyond what the person shared. That matters because the "letter back" should feel true to the person, not like made up fiction about them.
The model name is one line of config, so any other model shown by ollama list can be swapped in.
Why Does Open Innovation Matter?
This project is about real people we love, so privacy isn't a nice to have.
-
Private by design. The only network traffic is to
localhost. A grandmother's recipes, a father's favorite song, a childhood story: none of it touches a server I don't control. - Works with the lights off. [I tested it with Wi-Fi off, and it works exactly the same.]
- Costs nothing. No API key, no account, no rate limits, no per token bill for grief.
- Can't disappear. A remembrance tool shouldn't vanish because a company changes its terms, raises prices, or shuts down. The model weights and the code live on my machine.
- Swappable and tunable. I can change models with one line, or fine tune one locally on a family's own stories, which a closed API wouldn't let me do.
A closed API would have worked technically, but it would have meant sending the most personal text I could imagine to someone else's server. For this project, open wasn't just cheaper. It was the right way to build it.
Top comments (0)