{"slug": "vivamate-an-ai-viva-partner-built-for-a-friend", "title": "VivaMate — An AI Viva Partner Built for a Friend", "summary": "A developer built VivaMate, an AI-powered mock viva practice platform, for a friend preparing for technical university vivas. The tool chains a React/Vite frontend on Vercel with a FastAPI backend on Render, using open-weight Qwen3 4B run locally via Ollama during development and through Hugging Face Inference Providers in production, all behind a model-agnostic AI service layer. It generates grounded viva questions from uploaded study material, evaluates each answer with a score, correctness assessment, ideal answer and follow-up question, then produces an end-of-session performance report.", "body_md": "*This is a submission for the [Hacktoberfest Weekend Challenge: Build for a Friend](https://dev.to/challenges/hacktoberfest-weekend-2026-10-01).*\n\nVivaMate is an AI-powered viva practice platform I built for a friend who has to prepare for technical university vivas.\n\nThe problem was simple: studying from notes is one thing, but actually answering questions and getting meaningful feedback is another. Finding someone who is always available to conduct a mock viva is not always practical.\n\nSo I built VivaMate to act as an on-demand viva practice partner.\n\nYou can:\n\nThe goal isn't to replace a professor or a real viva. It's to give a student a way to practice repeatedly before the real thing.\n\nVivaMate is deployed with a React/Vite frontend on Vercel and a FastAPI backend on Render.\n\n**Flow:**\n\nStudy Material → Question Generation → Mock Viva → AI Evaluation → Performance Report\n\nThe complete source code is available on GitHub:\n\nVivaMate is built around open-weight AI rather than making a proprietary AI API the core of the application.\n\nThe core model is **Qwen3 4B**.\n\nDuring local development, I run Qwen3 4B locally through **Ollama**. This allowed me to develop and test the AI workflow directly on my own machine.\n\nThe local architecture is:\n\nReact + Vite\n\n↓\n\nFastAPI\n\n↓\n\nAI Service Layer\n\n↓\n\nOllama\n\n↓\n\nQwen3 4B\n\nFor the deployed version, the same AI service abstraction allows the application to use **Hugging Face Inference Providers** with Qwen3 4B.\n\nThe production architecture is:\n\nVercel\n\n↓\n\nReact + Vite\n\n↓\n\nRender\n\n↓\n\nFastAPI\n\n↓\n\nAI Service Layer\n\n↓\n\nHugging Face Inference Providers\n\n↓\n\nQwen3 4B\n\nI deliberately kept the AI integration behind a service abstraction so the application isn't tightly coupled to a single model or inference implementation.\n\nThe main technologies are:\n\nThe AI is used for two important parts of the application:\n\nGiven a topic or uploaded study material, Qwen3 generates structured viva questions with difficulty levels.\n\nWhen study material is provided, the generated questions are instructed to stay grounded primarily in that material.\n\nAfter the student answers a question, Qwen3 evaluates the response and returns:\n\nThe application doesn't expose the model's internal reasoning. It only uses the structured evaluation needed by the student.\n\nVivaMate is designed around a simple practice loop:\n\n**Upload → Generate → Answer → Evaluate → Improve**\n\nThe student answers each question one at a time and receives structured feedback from Qwen3 4B, including a score, correctness assessment, ideal answer, and a follow-up question.\n\nAt the end of the session, VivaMate summarizes performance and highlights areas that need further practice.\n\nFor VivaMate, open innovation isn't just a technology choice. It changes what the project can be.\n\nBecause Qwen3 4B can run locally through Ollama, I could build and test the complete AI workflow on my own machine without making a proprietary cloud AI API a mandatory part of the development setup.\n\nThat matters for a study tool because uploaded material can contain personal notes, assignments, or course content.\n\nWith local inference, the development version can process the AI requests on the student's own machine rather than requiring every request to be sent to a proprietary AI service.\n\nOpen-weight models also give the project flexibility.\n\nVivaMate's AI service is separated from the rest of the application, so the model or inference provider can be changed without rewriting the entire viva system.\n\nFor me, the biggest difference was that I wasn't simply building a UI around someone else's AI API. I was able to build the actual learning workflow around an AI model that I could run and experiment with locally.\n\nI used Google Antigravity as a coding agent while building VivaMate.\n\nThe agent helped me implement and verify the React frontend, FastAPI backend, AI integration, document extraction, structured AI responses, mock viva flow, and performance report.\n\nI did not use a DevRelay agent-session link for this submission.\n\nVivaMate started with a simple idea:\n\n**Instead of telling my friend to \"practice more,\" why not build them something they can actually practice with?**\n\nThat became VivaMate.", "url": "https://wpnews.pro/news/vivamate-an-ai-viva-partner-built-for-a-friend", "canonical_source": "https://dev.to/anmolchaudhary617ux/-vivamate-an-ai-viva-partner-built-for-a-friend-48l0", "published_at": "2026-10-03 22:03:45+00:00", "updated_at": "2026-10-03 22:08:03.422308+00:00", "lang": "en", "topics": ["artificial-intelligence", "large-language-models", "ai-tools", "ai-products", "developer-tools"], "entities": ["VivaMate", "Qwen3 4B", "Ollama", "Hugging Face Inference Providers", "FastAPI", "React", "Vercel", "Render"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/vivamate-an-ai-viva-partner-built-for-a-friend", "markdown": "https://wpnews.pro/news/vivamate-an-ai-viva-partner-built-for-a-friend.md", "text": "https://wpnews.pro/news/vivamate-an-ai-viva-partner-built-for-a-friend.txt", "jsonld": "https://wpnews.pro/news/vivamate-an-ai-viva-partner-built-for-a-friend.jsonld"}}