{"slug": "vivamate", "title": "Vivamate", "summary": "A developer built VivaMate, a local AI-powered viva preparation assistant that runs an open-weight model through Ollama to help a friend revise college notes. The Streamlit and Python tool generates practice and follow-up questions from the user's own study material while keeping it private and avoiding per-request API costs.", "body_md": "The Problem\n\nMy friend often finds it difficult to revise lengthy college notes before viva examinations. They need quick explanations and practice questions instead of going through everything repeatedly.\n\nSo I decided to build something specifically for them.\n\n💡 The Solution\n\nI built VivaMate, a local AI-powered viva preparation assistant.\n\nIt helps my friend:\n\n📚 Understand difficult topics in simple language\n\n🎤 Generate viva questions\n\n🧠 Practice follow-up questions\n\n📝 Use their own study material\n\n🔒 Keep their study material private\n\n🤖 Open-Source AI\n\nVivaMate uses an open-weight AI model running locally through Ollama.\n\nThis was important because the project isn't just using AI as an external API. The AI actually runs on the user's own computer.\n\nThis means:\n\n🔒 Study material can stay on the laptop\n\n🌐 It can work without sending data to a cloud AI provider\n\n💰 No per-request API cost\n\n🔄 The model can be replaced with another compatible open model\n\n🛠️ I have more control over how the assistant behaves\n\n🛠️ Tech Stack\n\nPython\n\n   ↓\n\nStreamlit\n\n   ↓\n\nOllama\n\n   ↓\n\nOpen-weight AI model\n\n❤️ Built for a Real Friend\n\nI didn't build VivaMate as a generic AI chatbot.\n\nI built it for one friend who actually has this problem.\n\nAfter giving it to them, I'll include their genuine feedback here:\n\n“[Write what my friend actually said after trying it.]”\n\n🎥 Demo\n\nimport streamlit as st\n\nimport subprocess\n\nst.set_page_config(\n\n    page_title=\"VivaMate\",\n\n    page_icon=\"🎓\"\n\n)\n\nst.title(\"🎓 VivaMate\")\n\nst.write(\"Your private local AI viva preparation partner\")\n\nquestion = st.text_area(\n\n    \"Ask your viva question:\",\n\n    placeholder=\"Example: What is a linked list?\"\n\n)\n\nif st.button(\"Ask VivaMate\"):\n\n    if question.strip():\n\n        prompt = f\"\"\"\n\nYou are VivaMate, a helpful college viva preparation assistant.\n\nAnswer the following question in simple language.\n\nGive:\n\nQuestion:\n\n{question}\n\n\"\"\"\n\n```\n    result = subprocess.run(\n        [\"ollama\", \"run\", \"gemma3:4b\", prompt],\n        capture_output=True,\n        text=True\n    )\n\n    st.subheader(\"Answer\")\n    st.write(result.stdout)\nelse:\n    st.warning(\"Please enter a question.\")\n```\n\n", "url": "https://wpnews.pro/news/vivamate", "canonical_source": "https://dev.to/bhagyashree_vijkape_07ee6/vivamate-dip", "published_at": "2026-10-04 12:33:13+00:00", "updated_at": "2026-10-04 12:42:26.186932+00:00", "lang": "en", "topics": ["ai-tools", "large-language-models", "ai-products"], "entities": ["VivaMate", "Ollama", "Streamlit", "Python", "Gemma 3"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/vivamate", "markdown": "https://wpnews.pro/news/vivamate.md", "text": "https://wpnews.pro/news/vivamate.txt", "jsonld": "https://wpnews.pro/news/vivamate.jsonld"}}