<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mayank Tiwari</title>
    <description>The latest articles on DEV Community by Mayank Tiwari (@mayank_tiwari_1710).</description>
    <link>https://dev.to/mayank_tiwari_1710</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4158027%2Fe54fef4e-b704-4ec6-ae31-93b313afd494.jpg</url>
      <title>DEV Community: Mayank Tiwari</title>
      <link>https://dev.to/mayank_tiwari_1710</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mayank_tiwari_1710"/>
    <language>en</language>
    <item>
      <title>StudyBuddy: A Private AI Study Assistant Built for a Friend</title>
      <dc:creator>Mayank Tiwari</dc:creator>
      <pubDate>Sun, 04 Oct 2026 16:15:46 +0000</pubDate>
      <link>https://dev.to/mayank_tiwari_1710/studybuddy-a-private-ai-study-assistant-built-for-a-friend-hkg</link>
      <guid>https://dev.to/mayank_tiwari_1710/studybuddy-a-private-ai-study-assistant-built-for-a-friend-hkg</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  StudyBuddy: A Private AI Study Assistant Built for a Friend
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;StudyBuddy&lt;/strong&gt;, a simple AI-powered study assistant for a friend who spends a lot of time going through lengthy lecture notes and PDFs before exams.&lt;/p&gt;

&lt;p&gt;Instead of repeatedly searching through hundreds of pages, they can upload their study material to StudyBuddy and interact with it like a personal study assistant.&lt;/p&gt;

&lt;p&gt;The app can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📚 Upload and process PDF notes&lt;/li&gt;
&lt;li&gt;💬 Ask questions about the uploaded material&lt;/li&gt;
&lt;li&gt;🧠 Explain difficult concepts in simpler language&lt;/li&gt;
&lt;li&gt;📝 Generate multiple-choice quizzes from the notes&lt;/li&gt;
&lt;li&gt;⚡ Create quick revision notes before an exam&lt;/li&gt;
&lt;li&gt;🔎 Show the relevant information retrieved from the uploaded documents&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The main idea was simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Turn the notes my friend already has into something they can actually talk to.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I wanted to build something small enough to finish in a weekend, but useful enough that my friend could actually use it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;🚀 &lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://studybuddy-hackoctober-mkt.streamlit.app/" rel="noopener noreferrer"&gt;https://studybuddy-hackoctober-mkt.streamlit.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The basic workflow is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Upload PDF → Process Notes → Ask a Question → Retrieve Relevant Content → Generate Answer&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;💻 &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/mayank-aiml/HackOctober-Study-Buddy" rel="noopener noreferrer"&gt;https://github.com/mayank-aiml/HackOctober-Study-Buddy&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is intentionally kept small and easy to understand.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;StudyBuddy/
│
├── app.py
├── rag.py
├── pdf_processor.py
├── prompts.py
├── requirements.txt
├── README.md
└── .gitignore
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The goal wasn't to create a huge AI framework. I wanted every part of the application to be understandable and replaceable.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;The most important part of StudyBuddy is that the AI isn't simply a call to a closed AI API.&lt;/p&gt;

&lt;p&gt;I built the application around &lt;strong&gt;open-weight AI and open-source tools&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tech Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🐍 Python&lt;/li&gt;
&lt;li&gt;🎈 Streamlit&lt;/li&gt;
&lt;li&gt;🦙 Ollama/Grok&lt;/li&gt;
&lt;li&gt;🤖 Open-weight LLM&lt;/li&gt;
&lt;li&gt;🔗 LangChain&lt;/li&gt;
&lt;li&gt;🧠 Hugging Face embeddings&lt;/li&gt;
&lt;li&gt;🗄️ ChromaDB&lt;/li&gt;
&lt;li&gt;📄 PDF processing&lt;/li&gt;
&lt;li&gt;🔍 Retrieval-Augmented Generation (RAG)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The application follows a relatively simple RAG pipeline:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 PDF Notes
                    │
                    ▼
             Extract Text
                    │
                    ▼
              Split into Chunks
                    │
                    ▼
            Generate Embeddings
                    │
                    ▼
               ChromaDB
                    │
          ┌─────────┴─────────┐
          │                   │
     User Question       Retrieved Chunks
          │                   │
          └─────────┬─────────┘
                    ▼
             Open-weight LLM
                    │
                    ▼
               AI Response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When my friend asks a question, StudyBuddy doesn't simply ask the model to answer from its general knowledge.&lt;/p&gt;

&lt;p&gt;Instead, it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Converts the question into an embedding.&lt;/li&gt;
&lt;li&gt;Searches the local vector database.&lt;/li&gt;
&lt;li&gt;Retrieves the most relevant sections from the uploaded notes.&lt;/li&gt;
&lt;li&gt;Gives those sections to the open-weight model.&lt;/li&gt;
&lt;li&gt;Generates an answer based on the retrieved information.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This makes the application much more useful for questions that are specific to the friend's own study material.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;This is probably the most important part of the project for me.&lt;/p&gt;

&lt;p&gt;I could have built the entire application around a closed AI API.&lt;/p&gt;

&lt;p&gt;It would have been easier.&lt;/p&gt;

&lt;p&gt;But using open-weight AI made the project more interesting and more useful for this particular problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔒 Privacy
&lt;/h3&gt;

&lt;p&gt;Study notes can contain personal information, assignments, internal college material, or other documents that someone may not want to upload to a third-party AI service.&lt;/p&gt;

&lt;p&gt;With a local setup using Ollama and an open-weight model, the documents can stay on the user's machine.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Traditional API approach:

PDF → Cloud Service → AI Model → Response


StudyBuddy local approach:

PDF → Local RAG → Local Model → Response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🔄 Models Can Be Swapped
&lt;/h3&gt;

&lt;p&gt;I'm not locked into one model.&lt;/p&gt;

&lt;p&gt;If a better open-weight model becomes available, I can replace the model without redesigning the entire application.&lt;/p&gt;

&lt;p&gt;The same application can experiment with different models based on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Speed&lt;/li&gt;
&lt;li&gt;Accuracy&lt;/li&gt;
&lt;li&gt;Hardware&lt;/li&gt;
&lt;li&gt;Model size&lt;/li&gt;
&lt;li&gt;Reasoning capability&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;p&gt;I'm entering the categories that best match the project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Open Innovation / Open Source AI&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build for a Friend&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If there are specific partner categories required by the challenge, I'll update this section accordingly.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;The biggest takeaway from this project wasn't building another chatbot.&lt;/p&gt;

&lt;p&gt;It was seeing how much can be built with relatively small open-source components.&lt;/p&gt;

&lt;p&gt;A few building blocks:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PDF parsing + embeddings + vector search + an open-weight model + Streamlit&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;can become a genuinely useful personal application.&lt;/p&gt;

&lt;p&gt;And because those pieces are open and replaceable, the project can continue evolving.&lt;/p&gt;

&lt;p&gt;My friend doesn't need another generic AI chatbot.&lt;/p&gt;

&lt;p&gt;They needed something that understands &lt;strong&gt;their notes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So that's what I built.&lt;/p&gt;




&lt;p&gt;Built for a friend.&lt;br&gt;&lt;br&gt;
Built with open AI.&lt;br&gt;&lt;br&gt;
Built to be modified. 🚀&lt;/p&gt;

&lt;h1&gt;
  
  
  Hacktoberfest #AI #OpenSource #RAG #LLM #Streamlit #Python #GenAI #BuildForAFriend
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
  </channel>
</rss>
