# Vivamate

> Source: <https://dev.to/bhagyashree_vijkape_07ee6/vivamate-dip>
> Published: 2026-10-04 12:33:13+00:00

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.")
```


