Vivamate 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. The Problem My 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. So I decided to build something specifically for them. 💡 The Solution I built VivaMate, a local AI-powered viva preparation assistant. It helps my friend: 📚 Understand difficult topics in simple language 🎤 Generate viva questions 🧠 Practice follow-up questions 📝 Use their own study material 🔒 Keep their study material private 🤖 Open-Source AI VivaMate uses an open-weight AI model running locally through Ollama. This was important because the project isn't just using AI as an external API. The AI actually runs on the user's own computer. This means: 🔒 Study material can stay on the laptop 🌐 It can work without sending data to a cloud AI provider 💰 No per-request API cost 🔄 The model can be replaced with another compatible open model 🛠️ I have more control over how the assistant behaves 🛠️ Tech Stack Python ↓ Streamlit ↓ Ollama ↓ Open-weight AI model ❤️ Built for a Real Friend I didn't build VivaMate as a generic AI chatbot. I built it for one friend who actually has this problem. After giving it to them, I'll include their genuine feedback here: “ Write what my friend actually said after trying it. ” 🎥 Demo import streamlit as st import subprocess st.set page config page title="VivaMate", page icon="🎓" st.title "🎓 VivaMate" st.write "Your private local AI viva preparation partner" question = st.text area "Ask your viva question:", placeholder="Example: What is a linked list?" if st.button "Ask VivaMate" : if question.strip : prompt = f""" You are VivaMate, a helpful college viva preparation assistant. Answer the following question in simple language. Give: Question: {question} """ result = subprocess.run "ollama", "run", "gemma3:4b", prompt , capture output=True, text=True st.subheader "Answer" st.write result.stdout else: st.warning "Please enter a question."