This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend
What I Built
My mom regularly needs help with technology, and I can usually only help her over the phone.
The hard part is figuring out what she sees. I’m describing a button while she’s looking at a different screen, or explaining a step that assumes something she hasn’t learned yet. A small technical problem becomes a long conversation.
I built Call Mac to give her patient guidance when I can’t be beside her.
She describes a problem in her own words. Call Mac offers one manageable next step, then waits for her response: Fixed it, Still broken, or I don’t understand. She can also describe what happened or what she sees.
That feedback shapes the next response. The assistant can ask for missing context, explain an instruction, or change approach instead of continuing through a generic checklist.
Saved profiles remember devices and technical comfort. Confirmed fixes stay in local memory, so future conversations can draw on what worked before. Guest mode lets someone try it without saving a profile.
I wanted to build something around the way my mom needs help: clear instructions, room to ask questions, and patience when the first attempt doesn’t work.
Demo
Watch the Call Mac video demo.
Check out the GitHub Pages demo.
The local application includes saved profiles and remembered fixes.
The repository also includes a separate browser demo with a labeled fictional walkthrough and an option to connect directly to the visitor’s own Ollama installation. That version keeps conversations in the current tab and does not include persistent memory.
Code
The repository includes installation guides, screenshots, automated tests, and fictional scenarios for evaluating model behavior.
How I Built It
Call Mac uses Python, Streamlit, SQLite, Pydantic, and Gemma through Ollama.
Gemma handles the contextual conversation. Each request includes the user’s problem, device profile, previous attempts, observations, and relevant remembered fixes. The model chooses whether to ask a question, give an instruction, explain an existing step, or change approach.
I used gemma2:9b for most of my experiments. The application defaults to gemma3:4b as a smaller starting point for users, and supports selecting other installed Gemma models.
I request structured responses through Ollama and validate them with Pydantic before displaying them. Invalid output gets one retry. The application also rejects exact and near-identical failed instructions, although it cannot reliably detect every semantic repetition.
Successful fixes are stored in SQLite and retrieved through keyword overlap. They are presented to the model as previous experiences, not guaranteed solutions.
Feedback is saved before the next inference request. If the model server fails, the user can retry without losing what they already reported.
Recognized liquid-damage situations have explicit safety routing that takes priority over ordinary troubleshooting.
The readiness review passed 44 Python tests and browser integration checks covering validation, retries, privacy behavior, and mobile layout. These checks use controlled responses: they verify application behavior, not the correctness of every model answer.
Why Does Open Innovation Matter?
Tech-support conversations can contain personal information: device details, filenames, and descriptions of what someone sees on their screen.
Gemma’s open weights and Ollama make it possible to run inference on the same computer that stores those conversations. After downloading dependencies and model weights, that setup can work without a hosted AI service or per-request API payments.
For a tool built for my mom, that control matters. I can inspect and change the prompts, adjust the response rules, and replace the model without rebuilding the application around a different provider.
A closed API could power a similar interface, but it would introduce an external inference dependency. Local inference gives Call Mac a useful alternative.
There are still boundaries: SQLite is unencrypted, and choosing a remote Ollama server sends conversation context to that server. Those details are documented.
Call Mac is an MVP. It accepts text, cannot inspect the device, and can give incorrect advice. My next priority is trying it with my mom and discovering which instructions still assume too much.
My Agent Session
I used Codex to review the repository, run automated checks, investigate the browser-demo deployment, and help draft this submission.
The session below contains curated excerpts from that final review. It does not include the earlier implementation history. Private machine paths and credentials were omitted.
Prize Categories
Best Use of Gemma
Gemma powers Call Mac’s contextual troubleshooting, follow-up questions, and explanations. Most of my experimentation used gemma2:9b; the app ships with gemma3:4b as its default.

Top comments (0)