<?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: Smith Bhosale</title>
    <description>The latest articles on DEV Community by Smith Bhosale (@smith_bhosale_433f2bbba56).</description>
    <link>https://dev.to/smith_bhosale_433f2bbba56</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%2F3738193%2F8c6c019b-078e-4f2d-ad70-a854a27d3582.png</url>
      <title>DEV Community: Smith Bhosale</title>
      <link>https://dev.to/smith_bhosale_433f2bbba56</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/smith_bhosale_433f2bbba56"/>
    <language>en</language>
    <item>
      <title>FriendStudy: A Private AI Tutor That Runs on My Laptop</title>
      <dc:creator>Smith Bhosale</dc:creator>
      <pubDate>Sun, 04 Oct 2026 20:19:17 +0000</pubDate>
      <link>https://dev.to/smith_bhosale_433f2bbba56/friendstudy-a-private-ai-tutor-that-runs-on-my-laptop-2i2a</link>
      <guid>https://dev.to/smith_bhosale_433f2bbba56/friendstudy-a-private-ai-tutor-that-runs-on-my-laptop-2i2a</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;
  
  
  What I Built
&lt;/h1&gt;

&lt;p&gt;I built &lt;strong&gt;FriendStudy&lt;/strong&gt;, a private AI study companion for a friend who was struggling to understand concepts from their college study material.&lt;/p&gt;

&lt;p&gt;Instead of giving them a generic chatbot, I wanted to build something around the material they were actually studying.&lt;/p&gt;

&lt;p&gt;They can upload their PDF notes and ask questions such as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Explain DBSCAN in simple terms."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;FriendStudy finds the most relevant sections from their notes and uses a local AI model to generate an explanation.&lt;/p&gt;

&lt;p&gt;It also has three simple study modes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📖 &lt;strong&gt;Explain&lt;/strong&gt; — explain a concept in simple language&lt;/li&gt;
&lt;li&gt;📝 &lt;strong&gt;Summarize&lt;/strong&gt; — create a concise revision summary&lt;/li&gt;
&lt;li&gt;🧠 &lt;strong&gt;Quiz Me&lt;/strong&gt; — generate questions from the uploaded notes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal was simple: give my friend a study companion that understands their notes without requiring their study material to be uploaded to a third-party AI service.&lt;/p&gt;

&lt;h1&gt;
  
  
  Demo
&lt;/h1&gt;

&lt;p&gt;The demo shows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Uploading a PDF&lt;/li&gt;
&lt;li&gt;Processing the study material&lt;/li&gt;
&lt;li&gt;Asking a question&lt;/li&gt;
&lt;li&gt;Retrieving relevant sections from the notes&lt;/li&gt;
&lt;li&gt;Generating an answer using the local AI model&lt;/li&gt;
&lt;li&gt;Using the summarization and quiz features&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Code
&lt;/h1&gt;

&lt;p&gt;💻 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/smitbhosale/notesApp-DEV-.git" rel="noopener noreferrer"&gt;https://github.com/smitbhosale/notesApp-DEV-.git&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is built with Python and is designed to run locally.&lt;/p&gt;

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

&lt;p&gt;The entire AI pipeline runs locally using open-source/open-weight components.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python&lt;/strong&gt; — application logic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streamlit&lt;/strong&gt; — user interface&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PyPDF&lt;/strong&gt; — PDF text extraction&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ChromaDB&lt;/strong&gt; — local vector database&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama&lt;/strong&gt; — local model inference&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Qwen3 4B&lt;/strong&gt; — open-weight language model&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;nomic-embed-text&lt;/strong&gt; — local embedding model&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The pipeline looks like this:&lt;/p&gt;

&lt;p&gt;PDF Notes&lt;br&gt;
↓&lt;br&gt;
Text Extraction&lt;br&gt;
↓&lt;br&gt;
Text Chunking&lt;br&gt;
↓&lt;br&gt;
Local Embeddings&lt;br&gt;
↓&lt;br&gt;
ChromaDB&lt;br&gt;
↓&lt;br&gt;
Question&lt;br&gt;
↓&lt;br&gt;
Relevant Note Retrieval&lt;br&gt;
↓&lt;br&gt;
Qwen3 4B&lt;br&gt;
↓&lt;br&gt;
Answer&lt;/p&gt;

&lt;p&gt;When my friend asks a question, FriendStudy doesn't need to send the entire document to a cloud API.&lt;/p&gt;

&lt;p&gt;It retrieves the most relevant sections of the uploaded notes and gives those sections to the local language model as context.&lt;/p&gt;

&lt;p&gt;This gives the project a simple local RAG architecture.&lt;/p&gt;

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

&lt;p&gt;This is the part of the project that mattered most to me.&lt;/p&gt;

&lt;p&gt;Study notes can contain personal information, college information, assignments, and other material that someone may not want to upload to an external AI service.&lt;/p&gt;

&lt;p&gt;With FriendStudy, the AI model runs locally through Ollama.&lt;/p&gt;

&lt;p&gt;Once the models are downloaded, the application can run without an internet connection.&lt;/p&gt;

&lt;p&gt;That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;My friend's notes can stay on their computer.&lt;/li&gt;
&lt;li&gt;There is no per-request API bill.&lt;/li&gt;
&lt;li&gt;The application doesn't depend on a closed AI provider.&lt;/li&gt;
&lt;li&gt;I can replace Qwen with another compatible open-weight model.&lt;/li&gt;
&lt;li&gt;I can change the prompts and retrieval system myself.&lt;/li&gt;
&lt;li&gt;The vector database also stays local.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A closed API could have made the first prototype faster, but the local approach gave me something more important for this particular project: &lt;strong&gt;control and privacy&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The fact that I can see and modify the entire pipeline — from document processing and retrieval to the model generating the final answer — is exactly why open innovation made sense for FriendStudy.&lt;/p&gt;

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

&lt;p&gt;The most interesting part wasn't simply connecting an LLM to a chatbot.&lt;/p&gt;

&lt;p&gt;I learned how the pieces of a local AI application fit together:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;documents → embeddings → vector search → retrieved context → local LLM&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I also learned that building something useful for one person is very different from building a generic AI demo.&lt;/p&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What cool AI application can I build?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I started with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What does my friend actually struggle with?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That changed the project significantly.&lt;/p&gt;

&lt;h1&gt;
  
  
  My Agent Session
&lt;/h1&gt;

&lt;p&gt;Optional — I used AI-assisted development while building the project.&lt;/p&gt;

&lt;p&gt;[Add your DevRelay agent session here if you have one.]&lt;/p&gt;

&lt;h1&gt;
  
  
  Prize Categories
&lt;/h1&gt;

&lt;p&gt;I'm not entering a partner category because the current version does not use any of the listed partner technologies.&lt;/p&gt;

&lt;h1&gt;
  
  
  Final Thoughts
&lt;/h1&gt;

&lt;p&gt;FriendStudy started as a small idea: help one friend study.&lt;/p&gt;

&lt;p&gt;It ended up becoming a small experiment in what a useful AI application can look like when the AI is &lt;strong&gt;local, private, customizable, and open&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It's not meant to replace a teacher.&lt;/p&gt;

&lt;p&gt;It's meant to be the study buddy that's available whenever my friend needs one.&amp;gt;&lt;/p&gt;

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