<?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: Shah_Dev</title>
    <description>The latest articles on DEV Community by Shah_Dev (@shah_dev).</description>
    <link>https://dev.to/shah_dev</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%2F4151803%2Fe61a9ab5-64f6-48a5-90ce-4ebf52d808eb.jpg</url>
      <title>DEV Community: Shah_Dev</title>
      <link>https://dev.to/shah_dev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shah_dev"/>
    <language>en</language>
    <item>
      <title>I Built FriendOS: An Adaptive AI Learning Companion for a Friend</title>
      <dc:creator>Shah_Dev</dc:creator>
      <pubDate>Mon, 05 Oct 2026 06:16:41 +0000</pubDate>
      <link>https://dev.to/shah_dev/i-built-friendos-an-adaptive-ai-learning-companion-for-a-friend-55f8</link>
      <guid>https://dev.to/shah_dev/i-built-friendos-an-adaptive-ai-learning-companion-for-a-friend-55f8</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;
  
  
  FriendOS — An AI That Learns How You Learn
&lt;/h1&gt;

&lt;p&gt;Most learning apps ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What do you want to learn?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I wanted to build something that asks a different question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"How do you actually learn?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So I built &lt;strong&gt;FriendOS&lt;/strong&gt;, an adaptive AI learning companion for my friend.&lt;/p&gt;

&lt;p&gt;Instead of simply generating explanations and questions, FriendOS builds a learning profile from what the learner actually does inside the application and uses that evidence to decide what should happen next.&lt;/p&gt;




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

&lt;p&gt;&lt;strong&gt;FriendOS&lt;/strong&gt; is an AI-powered adaptive learning companion.&lt;/p&gt;

&lt;p&gt;A learner starts by providing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Their name&lt;/li&gt;
&lt;li&gt;Their learning goal&lt;/li&gt;
&lt;li&gt;Topics they already know&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They can then upload their own learning material, such as a PDF.&lt;/p&gt;

&lt;p&gt;FriendOS analyzes the material and creates a learning structure from it.&lt;/p&gt;

&lt;p&gt;The learner then takes a diagnostic assessment, practices questions, and interacts with the system.&lt;/p&gt;

&lt;p&gt;The important part is what happens next.&lt;/p&gt;

&lt;p&gt;FriendOS observes measurable learning behavior such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Correct and incorrect answers&lt;/li&gt;
&lt;li&gt;Number of attempts&lt;/li&gt;
&lt;li&gt;Time spent answering&lt;/li&gt;
&lt;li&gt;Hints requested&lt;/li&gt;
&lt;li&gt;Questions skipped&lt;/li&gt;
&lt;li&gt;Topic performance&lt;/li&gt;
&lt;li&gt;Difficulty&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It then uses this evidence to adapt the next learning recommendation.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;A learner who is struggling with a topic, taking longer to answer, and repeatedly requesting hints may receive:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Review Concept&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;While a learner who is consistently answering correctly without hints may receive:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Move to Next Topic&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The goal is simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't just teach the learner. Learn how the learner is learning.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Core Loop
&lt;/h2&gt;

&lt;p&gt;FriendOS follows this loop:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Plan → Act → Observe → Learn → Adapt&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Plan
&lt;/h3&gt;

&lt;p&gt;The learner provides their goal and learning material.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Act
&lt;/h3&gt;

&lt;p&gt;They answer questions and practice inside FriendOS.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Observe
&lt;/h3&gt;

&lt;p&gt;The system records measurable behavior.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Learn
&lt;/h3&gt;

&lt;p&gt;The system updates the learner's skill and behavior profile.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Adapt
&lt;/h3&gt;

&lt;p&gt;The AI recommends the next learning action.&lt;/p&gt;

&lt;p&gt;This creates a continuous feedback loop instead of a static question generator.&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://friend-os-rho.vercel.app" rel="noopener noreferrer"&gt;https://friend-os-rho.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Try the complete flow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a learner profile&lt;/li&gt;
&lt;li&gt;Upload learning material&lt;/li&gt;
&lt;li&gt;Take the diagnostic&lt;/li&gt;
&lt;li&gt;Practice questions&lt;/li&gt;
&lt;li&gt;Submit answers&lt;/li&gt;
&lt;li&gt;See the adaptive recommendation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The backend is deployed separately and communicates with the frontend through the API.&lt;/p&gt;




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

&lt;p&gt;The complete project is open source:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Codie-ds/FriendOS" rel="noopener noreferrer"&gt;https://github.com/Codie-ds/FriendOS&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next.js / React frontend&lt;/li&gt;
&lt;li&gt;FastAPI backend&lt;/li&gt;
&lt;li&gt;MongoDB Atlas database&lt;/li&gt;
&lt;li&gt;Gemma-powered AI services&lt;/li&gt;
&lt;li&gt;PDF learning-material processing&lt;/li&gt;
&lt;li&gt;Diagnostic assessment&lt;/li&gt;
&lt;li&gt;Behavior tracking&lt;/li&gt;
&lt;li&gt;Adaptive recommendation engine&lt;/li&gt;
&lt;/ul&gt;




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

&lt;h3&gt;
  
  
  Frontend
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;Vite&lt;/li&gt;
&lt;li&gt;Tailwind CSS&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Backend
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;FastAPI&lt;/li&gt;
&lt;li&gt;Pydantic&lt;/li&gt;
&lt;li&gt;PyMuPDF&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Database
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;MongoDB Atlas&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  AI
&lt;/h3&gt;

&lt;p&gt;The core AI model is &lt;strong&gt;Gemma&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Gemma is used for tasks such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Extracting learning topics from uploaded material&lt;/li&gt;
&lt;li&gt;Generating diagnostic questions&lt;/li&gt;
&lt;li&gt;Generating adaptive learning recommendations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, FriendOS does &lt;strong&gt;not&lt;/strong&gt; blindly ask the LLM to calculate everything.&lt;/p&gt;

&lt;p&gt;Deterministic calculations such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accuracy&lt;/li&gt;
&lt;li&gt;Attempts&lt;/li&gt;
&lt;li&gt;Average response time&lt;/li&gt;
&lt;li&gt;Hint count&lt;/li&gt;
&lt;li&gt;Skip count&lt;/li&gt;
&lt;li&gt;Topic performance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;are calculated by Python.&lt;/p&gt;

&lt;p&gt;Gemma then receives this structured evidence and makes the higher-level learning recommendation.&lt;/p&gt;

&lt;p&gt;This separation makes the system more predictable and prevents the AI from inventing behavioral evidence.&lt;/p&gt;




&lt;h2&gt;
  
  
  From PDF to Adaptive Learning
&lt;/h2&gt;

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

&lt;p&gt;&lt;strong&gt;PDF&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Topic Extraction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Diagnostic Questions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Initial Skill Profile&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learning Session&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Behavior Events&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Behavior + Skill Analysis&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemma Recommendation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next Learning Action&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This means the PDF tells FriendOS &lt;strong&gt;what should be learned&lt;/strong&gt;, while the learner's actual interaction tells FriendOS &lt;strong&gt;how the learner is performing&lt;/strong&gt;.&lt;/p&gt;




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

&lt;p&gt;Open innovation made it possible for me to build the core intelligence of FriendOS without treating AI as a black box.&lt;/p&gt;

&lt;p&gt;Using Gemma allowed me to build an AI layer that I could integrate directly into my own application architecture.&lt;/p&gt;

&lt;p&gt;More importantly, the project combines open AI technology with transparent application logic.&lt;/p&gt;

&lt;p&gt;The system doesn't simply say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The AI thinks you are weak at Arrays."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead, it can ground the recommendation in observable evidence such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Low accuracy&lt;/li&gt;
&lt;li&gt;Multiple attempts&lt;/li&gt;
&lt;li&gt;Frequent hints&lt;/li&gt;
&lt;li&gt;Longer response times&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That makes the adaptation easier to understand and reason about.&lt;/p&gt;

&lt;p&gt;Open innovation also allowed me to combine different open technologies into one system rather than depending on a single closed platform.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Makes FriendOS Different?
&lt;/h2&gt;

&lt;p&gt;A lot of AI learning tools focus on generating content.&lt;/p&gt;

&lt;p&gt;FriendOS focuses on the &lt;strong&gt;learning loop&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It doesn't just ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What answer did the student give?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It also asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What happened while they were learning?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The goal is to eventually make the system increasingly personalized based on real interaction rather than only a user's initial prompt.&lt;/p&gt;




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

&lt;p&gt;I used AI coding agents during the development of FriendOS for implementation, debugging, testing, and production-readiness work.&lt;/p&gt;

&lt;p&gt;The development process was divided into phases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Backend foundation&lt;/li&gt;
&lt;li&gt;Learning-material processing&lt;/li&gt;
&lt;li&gt;Diagnostic assessment&lt;/li&gt;
&lt;li&gt;Behavior tracking&lt;/li&gt;
&lt;li&gt;Adaptive learning engine&lt;/li&gt;
&lt;li&gt;Practice system&lt;/li&gt;
&lt;li&gt;Full end-to-end testing&lt;/li&gt;
&lt;li&gt;UI/UX refinement&lt;/li&gt;
&lt;li&gt;Production security audit&lt;/li&gt;
&lt;li&gt;Deployment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also used automated testing throughout development to make sure the adaptive learning flow remained stable as new features were added.&lt;/p&gt;




&lt;h2&gt;
  
  
  Production
&lt;/h2&gt;

&lt;p&gt;FriendOS is deployed as:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Frontend:&lt;/strong&gt; Vercel&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backend:&lt;/strong&gt; Render&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Database:&lt;/strong&gt; MongoDB Atlas&lt;/p&gt;

&lt;p&gt;The application is fully connected end-to-end, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User onboarding&lt;/li&gt;
&lt;li&gt;PDF processing&lt;/li&gt;
&lt;li&gt;AI topic extraction&lt;/li&gt;
&lt;li&gt;Diagnostic generation&lt;/li&gt;
&lt;li&gt;Skill profiling&lt;/li&gt;
&lt;li&gt;Practice&lt;/li&gt;
&lt;li&gt;Behavior tracking&lt;/li&gt;
&lt;li&gt;Adaptive recommendations&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;I'm entering FriendOS for the categories that match the technologies actually used in the project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gemma&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MongoDB Atlas&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Render&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;FriendOS is currently focused on the core adaptive-learning loop.&lt;/p&gt;

&lt;p&gt;Future improvements could include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Voice-based learning with ElevenLabs&lt;/li&gt;
&lt;li&gt;Better learning-resource discovery&lt;/li&gt;
&lt;li&gt;More sophisticated long-term learner modeling&lt;/li&gt;
&lt;li&gt;Additional learning formats&lt;/li&gt;
&lt;li&gt;Spaced repetition&lt;/li&gt;
&lt;li&gt;More granular topic mastery&lt;/li&gt;
&lt;li&gt;Personalized learning plans&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But the core idea is already working:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;FriendOS doesn't just teach you. It learns from how you learn.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;I built FriendOS because I wanted to explore a simple question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if an AI learning companion could adapt to your actual behavior instead of treating every learner the same?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The result is FriendOS — a small experiment in building learning software around an adaptive feedback loop rather than just an AI chatbot.&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

&lt;p&gt;If you try the demo, I'd love to hear what you think.&lt;/p&gt;

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