DEV Community

Mackenzie
Mackenzie

Posted on

Call Mac: Patient AI Tech Support for My Mom

Hacktoberfest Weekend Challenge: Build for a Friend Submission 🤝

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.

Call Mac Home Screen

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

View Call Mac on GitHub.

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.

Call Mac: challenge readiness review and submission writeup
You

is this repo ready to go? i also need a writeup for the challenge but it doesnt need to be commited here:

Agent

I’ll check the repo’s setup, demo workflow, and validation, then draft a challenge writeup you can paste into DEV. I’ll use the DevRelay challenge and community skills to check the submission requirements and inform the review.

Agent

The main release blocker is that nearly all the app files are still untracked; the committed repo currently contains only the README and agent instructions. The project fits the open-weight AI requirement, but the writeup needs a true account of one specific person it’s for. The deadline is October 5 at 2:59 AM Eastern.

You

My mom; she always needs help with technology and it is hard because I can only provide help over the phone

Agent
Agent

I see the app has now been committed and pushed, and the Pages deployment is running—that clears the missing-code blocker. The secret scan found no leaks in the publishable files. There’s no LICENSE file yet; I recommend choosing one so others have permission to reuse the code. The writeup will use the existing video link while Pages finishes deploying.

Agent
Agent

The repo is ready for a challenge submission using your video demo. The browser demo isn’t deployed yet. The Pages workflow passed its tests but failed because Pages isn’t enabled. In Settings → Pages → Source, select GitHub Actions, then rerun it. You can submit with the video without waiting for Pages. I also recommend adding a LICENSE. Live model quality wasn’t revalidated in this review.

View the review session.

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)