<?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: shetty sai kumar</title>
    <description>The latest articles on DEV Community by shetty sai kumar (@shetty_sai_kumar).</description>
    <link>https://dev.to/shetty_sai_kumar</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%2F4156768%2F639c14af-2c23-4209-afcb-2772c5e98777.jpeg</url>
      <title>DEV Community: shetty sai kumar</title>
      <link>https://dev.to/shetty_sai_kumar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shetty_sai_kumar"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>shetty sai kumar</dc:creator>
      <pubDate>Sun, 04 Oct 2026 22:27:14 +0000</pubDate>
      <link>https://dev.to/shetty_sai_kumar/-26i6</link>
      <guid>https://dev.to/shetty_sai_kumar/-26i6</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/shetty_sai_kumar/i-built-my-mother-an-ai-study-companion-that-still-works-without-the-internet-d3j" class="crayons-story__hidden-navigation-link"&gt;I Built My Mother an AI Study Companion That Still Works Without the Internet&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/shetty_sai_kumar" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4156768%2F639c14af-2c23-4209-afcb-2772c5e98777.jpeg" alt="shetty_sai_kumar profile" class="crayons-avatar__image" width="800" height="450"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/shetty_sai_kumar" class="crayons-story__secondary fw-medium m:hidden"&gt;
              shetty sai kumar
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                shetty sai kumar
                
                
              
              &lt;div id="story-author-preview-content-4797890" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/shetty_sai_kumar" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4156768%2F639c14af-2c23-4209-afcb-2772c5e98777.jpeg" class="crayons-avatar__image" alt="" width="800" height="450"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;shetty sai kumar&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/shetty_sai_kumar/i-built-my-mother-an-ai-study-companion-that-still-works-without-the-internet-d3j" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 4&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/shetty_sai_kumar/i-built-my-mother-an-ai-study-companion-that-still-works-without-the-internet-d3j" id="article-link-4797890"&gt;
          I Built My Mother an AI Study Companion That Still Works Without the Internet
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/weekendchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;weekendchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/hf26challenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;hf26challenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/shetty_sai_kumar/i-built-my-mother-an-ai-study-companion-that-still-works-without-the-internet-d3j" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/shetty_sai_kumar/i-built-my-mother-an-ai-study-companion-that-still-works-without-the-internet-d3j#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>learning</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I Built My Mother an AI Study Companion That Still Works Without the Internet</title>
      <dc:creator>shetty sai kumar</dc:creator>
      <pubDate>Sun, 04 Oct 2026 22:24:36 +0000</pubDate>
      <link>https://dev.to/shetty_sai_kumar/i-built-my-mother-an-ai-study-companion-that-still-works-without-the-internet-d3j</link>
      <guid>https://dev.to/shetty_sai_kumar/i-built-my-mother-an-ai-study-companion-that-still-works-without-the-internet-d3j</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;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;For the past three months, my mother has been learning &lt;strong&gt;10 English words every day&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Telugu is our native language, and she wants to become more comfortable understanding and speaking English. Her consistency wasn't the problem — &lt;strong&gt;retention was&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;She could learn ten words today, but weeks later, when I used one of those words in conversation, she would sometimes struggle to remember what it meant or how it was used.&lt;/p&gt;

&lt;p&gt;That gave me the idea for &lt;strong&gt;FriendForge — a Personal AI Study Companion&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I didn't want to build another chatbot that simply answers questions. I wanted something that could help her:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;learn words through simple explanations and examples&lt;/li&gt;
&lt;li&gt;quiz herself&lt;/li&gt;
&lt;li&gt;revise what she struggled with&lt;/li&gt;
&lt;li&gt;learn from uploaded notes&lt;/li&gt;
&lt;li&gt;listen to explanations&lt;/li&gt;
&lt;li&gt;continue learning even when internet connectivity isn't available&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last requirement became one of the most important parts of FriendForge.&lt;/p&gt;

&lt;p&gt;My mother sometimes travels to villages and places where internet connectivity can be unreliable. So FriendForge has two different ways to learn:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🌐 Online Study&lt;/strong&gt; — Llama through Backboard, with RAG, study memory, quizzes, revision, and ElevenLabs voice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💻 Local AI&lt;/strong&gt; — Gemma 3 4B running locally through Ollama, allowing general study conversations without an internet connection once the model is installed.&lt;/p&gt;

&lt;p&gt;The idea behind FriendForge became:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;RAG remembers the material. Memory remembers the learner.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




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

&lt;p&gt;🎥 &lt;strong&gt;Video Demo&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/dbDdB4gLBN0" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;🌐 &lt;strong&gt;Live Application&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://friendforge-gbqq.onrender.com" rel="noopener noreferrer"&gt;https://friendforge-gbqq.onrender.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🔑 &lt;strong&gt;Demo access:&lt;/strong&gt; &lt;code&gt;HACKTOBERFEST2026!&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The hosted version demonstrates FriendForge's Online Study experience. Local AI runs through Ollama on the user's own computer, so I demonstrate that separately in the video.&lt;/p&gt;




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

&lt;p&gt;The complete project is available on GitHub:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/shettysaikumar20" rel="noopener noreferrer"&gt;
        shettysaikumar20
      &lt;/a&gt; / &lt;a href="https://github.com/shettysaikumar20/FriendForge" rel="noopener noreferrer"&gt;
        FriendForge
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      AI study companion with RAG, learner memory, local Gemma inference, and voice explanations.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;⚡ FriendForge&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;An AI Learning Companion — Learn. Practice. Remember. Revise.&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;RAG remembers the material. Memory remembers the learner.&lt;/strong&gt;&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/6b823cd6ffc954e74c23071418f5b1223ac0c504101798f98844875fbaf4fad7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4861636b746f626572666573742d323032362d4646364233353f7374796c653d666f722d7468652d6261646765"&gt;&lt;img src="https://camo.githubusercontent.com/6b823cd6ffc954e74c23071418f5b1223ac0c504101798f98844875fbaf4fad7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4861636b746f626572666573742d323032362d4646364233353f7374796c653d666f722d7468652d6261646765" alt="Hacktoberfest"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/52c131dfabbe1d51aca31326f86d92cbcc6b443ea0a14cb67bab9178f4277b35/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f52656163742d31382d3631444146423f7374796c653d666f722d7468652d6261646765266c6f676f3d7265616374266c6f676f436f6c6f723d626c61636b"&gt;&lt;img src="https://camo.githubusercontent.com/52c131dfabbe1d51aca31326f86d92cbcc6b443ea0a14cb67bab9178f4277b35/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f52656163742d31382d3631444146423f7374796c653d666f722d7468652d6261646765266c6f676f3d7265616374266c6f676f436f6c6f723d626c61636b" alt="React"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/3ef71814e7617e3d30ed2bfcc355d65ff29e3bd863eb1d866c34a979d9ab105d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e6f64652e6a732d4261636b656e642d3333393933333f7374796c653d666f722d7468652d6261646765266c6f676f3d6e6f64652e6a73266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/3ef71814e7617e3d30ed2bfcc355d65ff29e3bd863eb1d866c34a979d9ab105d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e6f64652e6a732d4261636b656e642d3333393933333f7374796c653d666f722d7468652d6261646765266c6f676f3d6e6f64652e6a73266c6f676f436f6c6f723d7768697465" alt="Node.js"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/05b2ce627087db51587e5da8fd33c499f5c72ad757425a106da5496a89fecdb3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f47656d6d615f332d34425f4c6f63616c5f41492d3432383546343f7374796c653d666f722d7468652d6261646765266c6f676f3d676f6f676c65266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/05b2ce627087db51587e5da8fd33c499f5c72ad757425a106da5496a89fecdb3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f47656d6d615f332d34425f4c6f63616c5f41492d3432383546343f7374796c653d666f722d7468652d6261646765266c6f676f3d676f6f676c65266c6f676f436f6c6f723d7768697465" alt="Gemma"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/b176017c667f4265d744b4a2dcc53ddde972485538d8c748040a581bf61238b4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4f6c6c616d612d4c6f63616c5f496e666572656e63652d3030303030303f7374796c653d666f722d7468652d6261646765"&gt;&lt;img src="https://camo.githubusercontent.com/b176017c667f4265d744b4a2dcc53ddde972485538d8c748040a581bf61238b4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4f6c6c616d612d4c6f63616c5f496e666572656e63652d3030303030303f7374796c653d666f722d7468652d6261646765" alt="Ollama"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/66ce0d29d5d0448754cacd4ab32b17a111c3230e0086a20566e6013a71c1d3cb/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f52656e6465722d4465706c6f796d656e742d3436453342373f7374796c653d666f722d7468652d6261646765266c6f676f3d72656e646572266c6f676f436f6c6f723d626c61636b"&gt;&lt;img src="https://camo.githubusercontent.com/66ce0d29d5d0448754cacd4ab32b17a111c3230e0086a20566e6013a71c1d3cb/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f52656e6465722d4465706c6f796d656e742d3436453342373f7374796c653d666f722d7468652d6261646765266c6f676f3d72656e646572266c6f676f436f6c6f723d626c61636b" alt="Render"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;&lt;strong&gt;Online Study ☁️ · Document RAG 📚 · Study Memory 🧠 · Quizzes 📝 · Voice 🔊 · Local AI 💻&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ What is FriendForge?&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;FriendForge&lt;/strong&gt; is a personal AI learning companion built for the &lt;strong&gt;Hacktoberfest 2026 — Build for a Friend Challenge&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Instead of acting as just another chatbot, FriendForge combines learning material, contextual explanations, active recall, quizzes, revision, learner memory, voice accessibility, and optional local AI.&lt;/p&gt;
&lt;p&gt;A learner can upload study material, ask questions about it, simplify difficult concepts, test understanding, revisit weak areas, and switch to a locally running open-weight model when hosted AI is not appropriate or internet connectivity is unavailable.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The goal isn't only to answer a question. It's to help the learner understand it, test it, and come back to what they haven't mastered&lt;/strong&gt;…&lt;/p&gt;
&lt;/blockquote&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/shettysaikumar20/FriendForge" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;FriendForge uses a React/Vite frontend with a Node.js/Express backend.&lt;/p&gt;




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

&lt;p&gt;FriendForge has two intentionally separate AI paths.&lt;/p&gt;

&lt;h3&gt;
  
  
  🌐 Online Study
&lt;/h3&gt;

&lt;p&gt;The online workflow is approximately:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;React → Express → Backboard → Llama&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Backboard provides the infrastructure for the online AI experience, including document retrieval and learner memory.&lt;/p&gt;

&lt;p&gt;Users can upload PDF or TXT study material and ask questions based on those documents.&lt;/p&gt;

&lt;p&gt;FriendForge also provides &lt;strong&gt;Quiz Me&lt;/strong&gt; and &lt;strong&gt;Revise&lt;/strong&gt; workflows so learning doesn't stop after receiving an explanation.&lt;/p&gt;

&lt;p&gt;For voice learning, I integrated &lt;strong&gt;ElevenLabs text-to-speech&lt;/strong&gt;. Voice generation happens only when the learner explicitly presses Listen.&lt;/p&gt;

&lt;h3&gt;
  
  
  💻 Local AI
&lt;/h3&gt;

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

&lt;p&gt;&lt;code&gt;React → Express → Ollama → Gemma 3 4B&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This was particularly important to me.&lt;/p&gt;

&lt;p&gt;Once Ollama and Gemma are installed, the model inference happens directly on the laptop. FriendForge doesn't silently fall back to a cloud model when Local AI is selected.&lt;/p&gt;

&lt;p&gt;Local mode deliberately has a smaller feature set. It doesn't pretend to have Backboard document RAG, persistent cloud memory, or ElevenLabs voice.&lt;/p&gt;

&lt;p&gt;It is simply a local study companion.&lt;/p&gt;

&lt;h3&gt;
  
  
  Building for an 8 GB Laptop
&lt;/h3&gt;

&lt;p&gt;I didn't develop the offline feature on a powerful AI workstation.&lt;/p&gt;

&lt;p&gt;I tested Gemma 3 4B on my &lt;strong&gt;8 GB RAM laptop using CPU inference&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That exposed a very real trade-off.&lt;/p&gt;

&lt;p&gt;The hosted model responds quickly. Local Gemma can take considerably longer — sometimes tens of seconds depending on model loading and the prompt.&lt;/p&gt;

&lt;p&gt;But it works without internet access.&lt;/p&gt;

&lt;p&gt;For this project, that trade-off was worth making visible instead of hiding it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Things Broke Along the Way
&lt;/h3&gt;

&lt;p&gt;One of my favorite parts of this project was discovering that making an AI feature work is different from making it &lt;strong&gt;reliable&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;During RAG testing, I found a case where the model correctly recognized that information wasn't present in the uploaded notes, but then continued by supplying outside knowledge anyway.&lt;/p&gt;

&lt;p&gt;That wasn't the behavior I wanted for a question explicitly asking about uploaded material.&lt;/p&gt;

&lt;p&gt;I tightened the retrieval boundaries and added tests around that behavior.&lt;/p&gt;

&lt;p&gt;I found a similar problem with local Gemma. Initially, it could imply that it had access to uploaded notes even though Local AI intentionally doesn't have access to Backboard RAG.&lt;/p&gt;

&lt;p&gt;So I strengthened the Local AI capability boundaries and tested them as well.&lt;/p&gt;

&lt;p&gt;Even production deployment gave me another surprise.&lt;/p&gt;

&lt;p&gt;ElevenLabs successfully generated audio, but the browser refused to play it because my Content Security Policy didn't permit the generated Blob URL.&lt;/p&gt;

&lt;p&gt;The fix was intentionally narrow:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;media-src 'self' blob:;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then I added a regression test instead of weakening the rest of the CSP.&lt;/p&gt;

&lt;p&gt;These failures ended up teaching me as much as implementing the original features.&lt;/p&gt;




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

&lt;p&gt;For FriendForge, open innovation isn't an abstract argument.&lt;/p&gt;

&lt;p&gt;It's the reason part of this application can continue working when the internet disappears.&lt;/p&gt;

&lt;p&gt;Running &lt;strong&gt;Gemma 3 4B locally through Ollama&lt;/strong&gt; means the core local study conversation doesn't require sending every question to a hosted AI service.&lt;/p&gt;

&lt;p&gt;It also gives me freedom to experiment with the model and local inference architecture rather than making the entire learning experience dependent on one remote API.&lt;/p&gt;

&lt;p&gt;There is a cost.&lt;/p&gt;

&lt;p&gt;On my hardware, local inference is significantly slower than the hosted experience.&lt;/p&gt;

&lt;p&gt;But when I disconnected Wi-Fi and watched FriendForge continue generating an answer, the advantage became very clear to me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Speed wasn't the advantage. Independence was.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open-weight models make it possible to build experiences where cloud AI and local AI don't have to compete. They can solve different parts of the same problem.&lt;/p&gt;

&lt;p&gt;FriendForge uses the cloud when connectivity and richer features are available, and provides a smaller local experience when independence matters more.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Most Important Test
&lt;/h2&gt;

&lt;p&gt;Eventually, I gave FriendForge to the person I actually built it for.&lt;/p&gt;

&lt;p&gt;My mother tried it.&lt;/p&gt;

&lt;p&gt;The difference between the two modes was immediately noticeable. Online Llama was fast, while local Gemma took more time to respond on my laptop.&lt;/p&gt;

&lt;p&gt;But the part that surprised her was that the local AI could still answer when there was no internet connection.&lt;/p&gt;

&lt;p&gt;She told me she was &lt;strong&gt;proud of me&lt;/strong&gt; and that the project would be &lt;strong&gt;useful to her&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That mattered more to me than another benchmark.&lt;/p&gt;

&lt;p&gt;FriendForge isn't something I built by imagining what a hypothetical user might want.&lt;/p&gt;

&lt;p&gt;It came from watching someone I love consistently try to learn something, noticing where technology could help, and then letting her actually use what I built.&lt;/p&gt;




&lt;h2&gt;
  
  
  What FriendForge Can't Do Yet
&lt;/h2&gt;

&lt;p&gt;I also want to be transparent about its limitations.&lt;/p&gt;

&lt;p&gt;Local AI currently provides general study conversations. It doesn't have the document RAG, persistent Backboard study memory, or ElevenLabs voice available in Online Study.&lt;/p&gt;

&lt;p&gt;Local inference is also considerably slower on my CPU-only 8 GB laptop.&lt;/p&gt;

&lt;p&gt;And the hosted Render deployment cannot access Ollama running on somebody's laptop. Local AI is therefore used through the locally launched FriendForge application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Those aren't features I want to disguise. They're boundaries that make the two modes understandable and predictable.
&lt;/h2&gt;

&lt;h2&gt;
  
  
  🤖 My Agent Sessions
&lt;/h2&gt;

&lt;p&gt;I used an AI-assisted development workflow throughout FriendForge and preserved the development process with DevRelay.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Building FriendForge &amp;amp; the RAG Foundation
&lt;/h3&gt;

&lt;p&gt;This session covers the initial architecture, React/Vite frontend, Express backend, Backboard integration, and the development of the document-based RAG workflow.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/agent_sessions/friendforge-open-weight-ai-study-companion-full-development-rag-journey-ddiqhi"&gt;https://dev.to/agent_sessions/friendforge-open-weight-ai-study-companion-full-development-rag-journey-ddiqhi&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Reliability, Local AI &amp;amp; Final Refinement
&lt;/h3&gt;

&lt;p&gt;This session captures the later engineering and reliability work as FriendForge evolved into the final application.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/agent_sessions/friendforge-open-weight-ai-study-companion-full-build-reliability-journey-ly6gby"&gt;https://dev.to/agent_sessions/friendforge-open-weight-ai-study-companion-full-build-reliability-journey-ly6gby&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Technology
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 3 4B&lt;/strong&gt; — open-weight local model&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama&lt;/strong&gt; — local inference&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backboard&lt;/strong&gt; — online AI, RAG, and memory&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Llama&lt;/strong&gt; — online language model&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ElevenLabs&lt;/strong&gt; — text-to-speech&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React + Vite&lt;/strong&gt; — frontend&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Node.js + Express&lt;/strong&gt; — backend&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Render&lt;/strong&gt; — deployment&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;I'm submitting FriendForge for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Overall Challenge&lt;/li&gt;
&lt;li&gt;Gemma&lt;/li&gt;
&lt;li&gt;Backboard&lt;/li&gt;
&lt;li&gt;ElevenLabs&lt;/li&gt;
&lt;li&gt;Render&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;I started FriendForge because my mother was learning ten English words every day.&lt;/p&gt;

&lt;p&gt;I finished it after watching her use something I had built specifically for the way she learns — including seeing her surprise when the AI continued responding without an internet connection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Speed wasn't the advantage. Independence was.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And for me, building something genuinely useful for someone I love is exactly what &lt;strong&gt;Build for a Friend&lt;/strong&gt; meant.&lt;/p&gt;

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