<?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: PRAVIN KUMAR</title>
    <description>The latest articles on DEV Community by PRAVIN KUMAR (@pravin_kumar_06).</description>
    <link>https://dev.to/pravin_kumar_06</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%2F4145326%2Fa37cdfdd-00d6-4960-b461-0a4764b9a156.jpeg</url>
      <title>DEV Community: PRAVIN KUMAR</title>
      <link>https://dev.to/pravin_kumar_06</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pravin_kumar_06"/>
    <language>en</language>
    <item>
      <title>GhostGPT: Building a Local AI Horror Story Generator with Ollama</title>
      <dc:creator>PRAVIN KUMAR</dc:creator>
      <pubDate>Mon, 26 Oct 2026 22:59:03 +0000</pubDate>
      <link>https://dev.to/pravin_kumar_06/ghostgpt-building-a-local-ai-horror-story-generator-with-ollama-3mp1</link>
      <guid>https://dev.to/pravin_kumar_06/ghostgpt-building-a-local-ai-horror-story-generator-with-ollama-3mp1</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week4-2026-10-26"&gt;Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built &lt;strong&gt;GhostGPT&lt;/strong&gt;, a local AI-powered horror story generator inspired by the “Ghost in the Machine” theme.&lt;/p&gt;

&lt;p&gt;GhostGPT uses Python, Flask, Ollama, and the open-weight Gemma 3 1B model to generate spooky stories locally on your machine. Users can choose horror categories, generate stories, copy their favorite stories, and save them for later.&lt;/p&gt;

&lt;p&gt;My goal was to explore how AI can create mysterious and chilling stories while running locally, without depending on a cloud-based AI API for story generation.&lt;/p&gt;

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

&lt;p&gt;🎬 &lt;strong&gt;Watch the GhostGPT Demo Video:&lt;/strong&gt; &lt;a href="https://drive.google.com/file/d/1qqUkmGLp0BMwjNL-z_Y0NbrZmkEMPwJR/view?usp=drive_link" rel="noopener noreferrer"&gt;Watch on Google Drive&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/PRAVIN-KUMAR-295/GhostGPT" rel="noopener noreferrer"&gt;https://github.com/PRAVIN-KUMAR-295/GhostGPT&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GhostGPT is a local AI-powered horror story generator built with Python, Flask, Ollama, and Gemma 3 1B.&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/PRAVIN-KUMAR-295/GhostGPT" rel="noopener noreferrer"&gt;GhostGPT — View Source Code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GhostGPT is built using the following technologies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python &amp;amp; Flask&lt;/strong&gt; — Backend application&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama&lt;/strong&gt; — Local AI model inference&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 3 1B&lt;/strong&gt; — Open-weight language model for horror story generation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTML, CSS &amp;amp; JavaScript&lt;/strong&gt; — Frontend interface&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Explore the repository to find the source code and instructions for running GhostGPT locally.&lt;/p&gt;

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

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

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

&lt;h2&gt;
  
  
  The Spirit of It
&lt;/h2&gt;

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

&lt;p&gt;&amp;lt;!-- Thanks for participating! --&amp;gt;  issme kiya karna hia&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>opensource</category>
      <category>flask</category>
    </item>
    <item>
      <title>StudySloth AI: Study Less, Understand More with Open-Weight AI 🦥</title>
      <dc:creator>PRAVIN KUMAR</dc:creator>
      <pubDate>Tue, 20 Oct 2026 10:52:25 +0000</pubDate>
      <link>https://dev.to/pravin_kumar_06/studysloth-ai-study-less-understand-more-with-open-weight-ai-1ajp</link>
      <guid>https://dev.to/pravin_kumar_06/studysloth-ai-study-less-understand-more-with-open-weight-ai-1ajp</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week3-2026-10-19"&gt;Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built &lt;strong&gt;StudySloth AI&lt;/strong&gt;, a study assistant designed to make revision easier and less time-consuming.&lt;/p&gt;

&lt;p&gt;Students often have long notes to review before an exam. StudySloth AI helps turn those notes into concise summaries, extract important key points, and generate interactive quizzes for practice.&lt;/p&gt;

&lt;p&gt;The goal is simple: spend less time organizing study material and more time understanding it.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Video demo:&lt;/strong&gt; [&lt;a href="https://youtu.be/o7pFxF4dSrc?si=fnNZWl_tSDHlAgxq" rel="noopener noreferrer"&gt;https://youtu.be/o7pFxF4dSrc?si=fnNZWl_tSDHlAgxq&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;The demo shows the app processing study notes, generating a summary, highlighting key points, and creating quiz questions.&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/PRAVIN-KUMAR-295/StudySloth-AI" rel="noopener noreferrer"&gt;https://github.com/PRAVIN-KUMAR-295/StudySloth-AI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repository contains the Flask application, frontend, AI integration, setup instructions, and automated tests.&lt;/p&gt;

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

&lt;p&gt;StudySloth AI is built with Python, Flask, HTML, CSS, and JavaScript.&lt;/p&gt;

&lt;p&gt;Its primary AI engine uses Google's Gemma open-weight model (&lt;code&gt;gemma-4-26b-a4b-it&lt;/code&gt;) through hosted inference. This means users do not need to download a large model or configure a local GPU to use the application.&lt;/p&gt;

&lt;p&gt;The app uses the model to generate study summaries, key points, and quiz questions. It also includes an optional proprietary Gemini fallback when the primary model encounters certain failures or rate limits. The interface distinguishes between open-weight inference, fallback mode, and demo mode so users can understand which engine is active.&lt;/p&gt;

&lt;p&gt;The project includes input validation and automated tests for its main features.&lt;/p&gt;

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

&lt;p&gt;Open-weight models give developers more flexibility to inspect, evaluate, adapt, and build around model weights under the applicable license.&lt;/p&gt;

&lt;p&gt;For StudySloth AI, Gemma makes it possible to build a study assistant without making a proprietary model the only option. Hosted inference also makes the application easier to try on an ordinary laptop without requiring a local GPU or a large model download.&lt;/p&gt;

&lt;p&gt;There is an important trade-off: hosted inference requires an internet connection, and submitted notes are sent to the inference provider for processing. This version is not an offline or fully local AI application.&lt;/p&gt;

&lt;p&gt;I believe open innovation matters because it gives developers more choice in how AI-powered tools are built and improved.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Lazy Payoff
&lt;/h2&gt;

&lt;p&gt;Instead of manually condensing every page of notes and writing practice questions from scratch, students can use StudySloth AI to create a starting point for revision in one place.&lt;/p&gt;

&lt;p&gt;It is designed to reduce repetitive study preparation, not replace learning. Students should still review generated summaries and verify important facts before an exam.&lt;/p&gt;

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

&lt;p&gt;This submission is for the overall Hacktoberfest Open-Source AI Challenge Week 3.&lt;/p&gt;

&lt;p&gt;I am not claiming entry into any partner prize category.&lt;/p&gt;

&lt;p&gt;Thanks for checking out StudySloth AI! 🦥&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>TRACEFORGE AI: Investigating Microservice Incidents with Graph-Based Reasoning</title>
      <dc:creator>PRAVIN KUMAR</dc:creator>
      <pubDate>Sun, 18 Oct 2026 12:59:46 +0000</pubDate>
      <link>https://dev.to/pravin_kumar_06/traceforge-ai-investigating-microservice-incidents-with-graph-based-reasoning-20gd</link>
      <guid>https://dev.to/pravin_kumar_06/traceforge-ai-investigating-microservice-incidents-with-graph-based-reasoning-20gd</guid>
      <description>&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Modern applications often consist of multiple interconnected microservices. When one service fails, the impact can spread through its dependencies and cause cascading errors across the system.&lt;/p&gt;

&lt;p&gt;Finding the original cause can require engineers to inspect logs, trace dependencies, and correlate evidence across multiple services. TRACEFORGE AI is my project to make this investigation process more structured and easier to follow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing TRACEFORGE AI
&lt;/h2&gt;

&lt;p&gt;TRACEFORGE AI is an AI-assisted incident investigation tool designed to help engineers explore service dependencies, investigate cascading failures, and identify potential root causes.&lt;/p&gt;

&lt;p&gt;The application brings together a service topology, graph-query exploration, incident investigation context, and recommended remediation actions. Its goal is to help engineers move from an alert toward an evidence-informed hypothesis and a practical next step.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Graphs?
&lt;/h2&gt;

&lt;p&gt;Microservice architectures naturally contain relationships: an API gateway communicates with downstream services, checkout depends on payment processing, and authentication components may depend on caches or other infrastructure.&lt;/p&gt;

&lt;p&gt;Representing these relationships as a graph makes it possible to explore how services are connected and which dependencies may be relevant to an incident.&lt;/p&gt;

&lt;p&gt;TRACEFORGE AI models services as graph nodes and their dependencies as relationships. Cypher-style graph queries can then be used to explore connected services and investigate possible failure propagation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where FalkorDB Fits
&lt;/h2&gt;

&lt;p&gt;The backend includes a native FalkorDB client intended for graph-backed operations. FalkorDB is relevant to this project because graph queries provide a natural way to represent service dependencies and traverse relationships during incident investigation.&lt;/p&gt;

&lt;p&gt;The project also includes an in-memory Cypher engine as a fallback for environments where a live FalkorDB server is unavailable. At the time of writing, the public deployment uses this fallback, and live FalkorDB connectivity has not yet been verified in the deployed environment. This distinction is important when evaluating the current demo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Investigation Workflow
&lt;/h2&gt;

&lt;p&gt;The TRACEFORGE AI demo showcases the following workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Incident overview:&lt;/strong&gt; Review an incident and its reported symptoms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Service topology:&lt;/strong&gt; Explore the graph of connected services and their dependencies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Graph query exploration:&lt;/strong&gt; Examine dependency relationships using graph-query concepts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Incident investigation:&lt;/strong&gt; Organize available evidence and investigation findings into potential root-cause hypotheses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remediation recommendations:&lt;/strong&gt; Present possible next steps while keeping remediation decisions under human control.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The intention is not to replace engineers. It is to provide a more organized starting point for investigating complex incidents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges and Lessons Learned
&lt;/h2&gt;

&lt;p&gt;One important engineering lesson is that a working application interface does not automatically prove that its intended database is connected and being used by the deployed service.&lt;/p&gt;

&lt;p&gt;A graph-backed application needs clear configuration, reliable connection handling, useful fallback behavior, and a way to verify which backend is active. A fallback can keep a demo usable, but it should not be confused with a successful live database connection.&lt;/p&gt;

&lt;p&gt;I also learned the importance of making investigation results understandable. Showing service relationships, evidence, hypotheses, and recommended actions helps make an AI-assisted workflow easier for engineers to review.&lt;/p&gt;

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

&lt;p&gt;The next steps for TRACEFORGE AI include verifying live FalkorDB connectivity in a configured environment, strengthening end-to-end tests against the actual graph database, and improving the traceability between graph-query results, incident evidence, and remediation recommendations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;TRACEFORGE AI explores how graph-based dependency analysis can help engineers investigate cascading microservice failures. By combining service relationships with an AI-assisted investigation workflow and human-reviewed recommendations, the project aims to make incident response more structured and understandable.&lt;/p&gt;

&lt;p&gt;The project is a work in progress, and verifying the live graph-database path is an important part of making the deployment match the intended architecture.&lt;/p&gt;

</description>
      <category>devchallengesvg</category>
      <category>hf26challengesvg</category>
      <category>ai</category>
      <category>python</category>
    </item>
    <item>
      <title>Local Seller AI: An AI-Powered Marketing Copilot for Small Businesses</title>
      <dc:creator>PRAVIN KUMAR</dc:creator>
      <pubDate>Wed, 14 Oct 2026 04:41:23 +0000</pubDate>
      <link>https://dev.to/pravin_kumar_06/local-seller-ai-an-ai-powered-marketing-copilot-for-small-businesses-iff</link>
      <guid>https://dev.to/pravin_kumar_06/local-seller-ai-an-ai-powered-marketing-copilot-for-small-businesses-iff</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built &lt;strong&gt;Local Seller AI&lt;/strong&gt;, an AI-powered marketing copilot for small business owners, local shopkeepers, and side hustlers.&lt;/p&gt;

&lt;p&gt;It helps sellers create product descriptions, social media captions, WhatsApp promotional messages, and SEO keywords. It also includes a pricing calculator and a 7-day marketing planner.&lt;/p&gt;

&lt;p&gt;Small sellers often have limited time and budget for marketing. This tool brings these tasks together in one simple app, helping them save time and organize their business activities.&lt;/p&gt;

&lt;p&gt;It is designed for local shopkeepers, home-based businesses, and freelancers who want an affordable way to manage everyday marketing tasks.&lt;/p&gt;

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

&lt;p&gt;Try Local Seller AI here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://local-seller-ai.onrender.com" rel="noopener noreferrer"&gt;https://local-seller-ai.onrender.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Explore the marketing content generator, pricing calculator, and 7-day marketing planner.&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/PRAVIN-KUMAR-295/local-seller-ai" rel="noopener noreferrer"&gt;https://github.com/PRAVIN-KUMAR-295/local-seller-ai&lt;/a&gt;&lt;br&gt;
The repository includes the Streamlit application, marketing content generator, pricing calculator, 7-day marketing planner, and automated tests.&lt;/p&gt;

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

&lt;p&gt;I built Local Seller AI using &lt;strong&gt;Python&lt;/strong&gt; and &lt;strong&gt;Streamlit&lt;/strong&gt; to create a simple, interactive web application.&lt;/p&gt;

&lt;p&gt;The project is organized into separate modules for marketing content generation, pricing calculations, and weekly marketing planning.&lt;/p&gt;

&lt;p&gt;For AI-powered content generation, I integrated Hugging Face's InferenceClient with open-weight language models, including Qwen2.5 and Llama 3.2.&lt;/p&gt;

&lt;p&gt;The app generates product descriptions, social media captions, WhatsApp promotional messages, and SEO keywords in English, Hindi, and Hinglish. It also includes a Demo Mode so users can explore the features using sample content.&lt;/p&gt;

&lt;p&gt;I wrote automated tests for the main features and error-handling scenarios. All &lt;strong&gt;27 automated tests passed&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The deployed app's live AI generation depends on the Hugging Face token, model availability, and inference service. The tests include mocked API responses, so I still need to verify live AI inference separately if it has not already been tested.&lt;/p&gt;

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

&lt;p&gt;Open innovation matters because small businesses need affordable, flexible tools that can adapt to their needs.&lt;/p&gt;

&lt;p&gt;By integrating open-weight language models through Hugging Face, Local Seller AI can explore different models instead of depending entirely on a single closed AI provider.&lt;/p&gt;

&lt;p&gt;This flexibility is useful for a marketing tool that supports English, Hindi, and Hinglish. Different models can be evaluated for content quality, language support, availability, and inference cost.&lt;/p&gt;

&lt;p&gt;Open-weight models also give developers more control over how their AI applications are built and improved over time.&lt;/p&gt;

&lt;p&gt;My goal is to make AI-assisted marketing more accessible to small sellers who may not have the budget for a dedicated marketing team.&lt;/p&gt;

&lt;p&gt;Currently, the app uses Hugging Face inference integration, so live generation depends on the configured model and inference service. Fully offline operation is not currently claimed.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>python</category>
    </item>
    <item>
      <title>TouchGrass AI: An Open-Source AI Outdoor Mission Planner</title>
      <dc:creator>PRAVIN KUMAR</dc:creator>
      <pubDate>Wed, 07 Oct 2026 20:57:44 +0000</pubDate>
      <link>https://dev.to/pravin_kumar_06/touchgrass-ai-an-open-source-ai-outdoor-mission-planner-50n6</link>
      <guid>https://dev.to/pravin_kumar_06/touchgrass-ai-an-open-source-ai-outdoor-mission-planner-50n6</guid>
      <description>&lt;h1&gt;
  
  
  TouchGrass AI: An Open-Source AI Outdoor Mission Planner
&lt;/h1&gt;

&lt;p&gt;What if AI helped you spend less time looking at a screen?&lt;/p&gt;

&lt;p&gt;That was the idea behind &lt;strong&gt;TouchGrass AI&lt;/strong&gt;, an outdoor mission planner built for the Hacktoberfest 2026 Open-Source AI Challenge: Week 1.&lt;/p&gt;

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

&lt;p&gt;TouchGrass AI creates short, practical outdoor missions based on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Available time: 15, 30, or 60 minutes&lt;/li&gt;
&lt;li&gt;Activity: Walking, Nature, Photography, Exercise, or Social&lt;/li&gt;
&lt;li&gt;Difficulty: Easy, Medium, or Hard&lt;/li&gt;
&lt;li&gt;Mode: Solo or With Friends&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of keeping the user inside the app, the goal is to use the screen briefly, get a mission, and then put the phone away.&lt;/p&gt;

&lt;p&gt;For example, a 30-minute nature mission can ask you to walk without looking at a screen, observe different plants, notice a natural sound, and spend a few quiet minutes outside.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;A lot of digital products are designed to keep us on the screen.&lt;/p&gt;

&lt;p&gt;For this challenge, I wanted to build the opposite: an AI experience where the screen is only the starting point.&lt;/p&gt;

&lt;p&gt;The useful part of the experience happens outside.&lt;/p&gt;

&lt;h2&gt;
  
  
  The "Touch Grass" Idea
&lt;/h2&gt;

&lt;p&gt;The core interaction is intentionally simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Choose → Generate → Go outside → Complete → Come back&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The app gives the user an actionable outdoor objective and encourages them to put their phone away once the mission starts.&lt;/p&gt;

&lt;p&gt;This makes the AI a short planning tool rather than another reason to keep scrolling.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;The user selects their available time.&lt;/li&gt;
&lt;li&gt;They choose an outdoor activity.&lt;/li&gt;
&lt;li&gt;They choose difficulty and solo/friends mode.&lt;/li&gt;
&lt;li&gt;The backend creates a structured mission.&lt;/li&gt;
&lt;li&gt;The user starts the mission.&lt;/li&gt;
&lt;li&gt;The app provides an actionable checklist.&lt;/li&gt;
&lt;li&gt;The user goes outside and completes it.&lt;/li&gt;
&lt;li&gt;The completed mission is saved to history and reflected in statistics.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;TouchGrass AI also keeps a history of completed missions and shows outdoor minutes and streak information.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Architecture
&lt;/h2&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; React + Vite&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; FastAPI + Python&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; SQLite + SQLAlchemy&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI layer:&lt;/strong&gt; Open-weight Gemma integration with a deterministic fallback&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTTP:&lt;/strong&gt; httpx&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment:&lt;/strong&gt; Render&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The frontend is deployed as a Render Static Site and the FastAPI backend runs as a Render Web Service.&lt;/p&gt;

&lt;p&gt;GitHub:&lt;br&gt;
&lt;a href="https://github.com/PRAVIN-KUMAR-295/touchgrass-ai" rel="noopener noreferrer"&gt;https://github.com/PRAVIN-KUMAR-295/touchgrass-ai&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Live Demo:&lt;br&gt;
&lt;a href="https://touchgrass-ai-2.onrender.com" rel="noopener noreferrer"&gt;https://touchgrass-ai-2.onrender.com&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How Gemma Is Used
&lt;/h2&gt;

&lt;p&gt;The project was designed around an AI provider abstraction so that an open-weight model can generate outdoor mission content without tightly coupling the application to one provider.&lt;/p&gt;

&lt;p&gt;The intended hosted model is:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;google/gemma-3-4b-it&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The application also includes a deterministic fallback so the core mission experience remains usable when hosted AI credentials are unavailable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Important disclosure
&lt;/h3&gt;

&lt;p&gt;For the deployed demo, I did &lt;strong&gt;not&lt;/strong&gt; configure a hosted Gemma API key, so I have not claimed that the live deployment is currently performing real Gemma inference.&lt;/p&gt;

&lt;p&gt;The deployed application is using the tested deterministic fallback path.&lt;/p&gt;

&lt;p&gt;This keeps the demo honest while preserving the open-weight Gemma integration in the architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Open Innovation Matters
&lt;/h2&gt;

&lt;p&gt;The open-weight approach makes the AI layer more replaceable and easier to experiment with.&lt;/p&gt;

&lt;p&gt;Instead of building the entire application around a closed provider, the AI service is separated from the rest of the product. This makes it possible to change the model or serving infrastructure without redesigning the outdoor mission experience.&lt;/p&gt;

&lt;p&gt;For this project, that flexibility is more important than making the AI itself the main attraction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Taking It Outside
&lt;/h2&gt;

&lt;p&gt;I actually used the deployed application for an outdoor mission.&lt;/p&gt;

&lt;p&gt;I generated a mission, started it, put the phone away, went outside, completed the activity, and then returned to mark the mission complete.&lt;/p&gt;

&lt;p&gt;The completed mission appeared in History and the Statistics page updated with completed missions, outdoor minutes, and the streak.&lt;/p&gt;

&lt;p&gt;This was the part of the project I liked most: the successful outcome was not spending more time inside the app.&lt;/p&gt;

&lt;h2&gt;
  
  
  Screenshots
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Home
&lt;/h3&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2Fqpxamk920p5is81pclkq.png" class="article-body-image-wrapper"&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%2Farticles%2Fqpxamk920p5is81pclkq.png" alt=" " width="799" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Mission Planning
&lt;/h3&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2Fhjzkz64yiftfbq45rfcg.png" class="article-body-image-wrapper"&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%2Farticles%2Fhjzkz64yiftfbq45rfcg.png" alt=" " width="800" height="623"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Generated Mission
&lt;/h3&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2F712qzxhkcuk4n31yf4xg.png" class="article-body-image-wrapper"&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%2Farticles%2F712qzxhkcuk4n31yf4xg.png" alt=" " width="799" height="645"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Mission in Progress
&lt;/h3&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2F9xrox55vhuoes6o6xn87.png" class="article-body-image-wrapper"&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%2Farticles%2F9xrox55vhuoes6o6xn87.png" alt=" " width="800" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  History
&lt;/h3&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2Fc8a9b6do3v7f5q8eubce.png" class="article-body-image-wrapper"&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%2Farticles%2Fc8a9b6do3v7f5q8eubce.png" alt=" " width="799" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Statistics
&lt;/h3&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2Fy75xguehcqxq9m2vsdz0.png" class="article-body-image-wrapper"&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%2Farticles%2Fy75xguehcqxq9m2vsdz0.png" alt=" " width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;One of the biggest lessons was that building an AI application does not have to mean building an experience that keeps users interacting with AI.&lt;/p&gt;

&lt;p&gt;The best part of TouchGrass AI happens after the AI finishes its job.&lt;/p&gt;

&lt;p&gt;I also learned a lot about separating the AI service from the application logic, building a reliable fallback path, testing the complete mission lifecycle, and deploying a React + FastAPI application to production.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Disclosure
&lt;/h2&gt;

&lt;p&gt;AI tools were used during development to help with implementation, debugging, documentation, and development workflow.&lt;/p&gt;

&lt;p&gt;The project itself was designed, tested, deployed, and verified as a working application.&lt;/p&gt;

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

&lt;p&gt;TouchGrass AI started with a simple question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can AI help us use our phones less?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of optimizing for another screen session, this project tries to make the screen the shortest part of the experience.&lt;/p&gt;

&lt;p&gt;Choose a mission.&lt;/p&gt;

&lt;p&gt;Put the phone away.&lt;/p&gt;

&lt;p&gt;Go touch grass. 🌱&lt;/p&gt;




&lt;p&gt;Built for the Ha&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>TouchGrass AI: An Open-Source AI Outdoor Mission Planner</title>
      <dc:creator>PRAVIN KUMAR</dc:creator>
      <pubDate>Wed, 07 Oct 2026 20:32:57 +0000</pubDate>
      <link>https://dev.to/pravin_kumar_06/touchgrass-ai-an-open-source-ai-outdoor-mission-planner-4ijg</link>
      <guid>https://dev.to/pravin_kumar_06/touchgrass-ai-an-open-source-ai-outdoor-mission-planner-4ijg</guid>
      <description>&lt;h1&gt;
  
  
  TouchGrass AI: An Open-Source AI Outdoor Mission Planner
&lt;/h1&gt;

&lt;p&gt;What if AI helped you spend less time looking at a screen?&lt;/p&gt;

&lt;p&gt;That was the idea behind &lt;strong&gt;TouchGrass AI&lt;/strong&gt;, an outdoor mission planner built for the Hacktoberfest 2026 Open-Source AI Challenge: Week 1.&lt;/p&gt;

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

&lt;p&gt;TouchGrass AI creates short, practical outdoor missions based on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Available time: 15, 30, or 60 minutes&lt;/li&gt;
&lt;li&gt;Activity: Walking, Nature, Photography, Exercise, or Social&lt;/li&gt;
&lt;li&gt;Difficulty: Easy, Medium, or Hard&lt;/li&gt;
&lt;li&gt;Mode: Solo or With Friends&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of keeping the user inside the app, the goal is to use the screen briefly, get a mission, and then put the phone away.&lt;/p&gt;

&lt;p&gt;For example, a 30-minute nature mission can ask you to walk without looking at a screen, observe different plants, notice a natural sound, and spend a few quiet minutes outside.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;A lot of digital products are designed to keep us on the screen.&lt;/p&gt;

&lt;p&gt;For this challenge, I wanted to build the opposite: an AI experience where the screen is only the starting point.&lt;/p&gt;

&lt;p&gt;The useful part of the experience happens outside.&lt;/p&gt;

&lt;h2&gt;
  
  
  The "Touch Grass" Idea
&lt;/h2&gt;

&lt;p&gt;The core interaction is intentionally simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Choose → Generate → Go outside → Complete → Come back&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The app gives the user an actionable outdoor objective and encourages them to put their phone away once the mission starts.&lt;/p&gt;

&lt;p&gt;This makes the AI a short planning tool rather than another reason to keep scrolling.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;The user selects their available time.&lt;/li&gt;
&lt;li&gt;They choose an outdoor activity.&lt;/li&gt;
&lt;li&gt;They choose difficulty and solo/friends mode.&lt;/li&gt;
&lt;li&gt;The backend creates a structured mission.&lt;/li&gt;
&lt;li&gt;The user starts the mission.&lt;/li&gt;
&lt;li&gt;The app provides an actionable checklist.&lt;/li&gt;
&lt;li&gt;The user goes outside and completes it.&lt;/li&gt;
&lt;li&gt;The completed mission is saved to history and reflected in statistics.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;TouchGrass AI also keeps a history of completed missions and shows outdoor minutes and streak information.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Architecture
&lt;/h2&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; React + Vite&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; FastAPI + Python&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; SQLite + SQLAlchemy&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI layer:&lt;/strong&gt; Open-weight Gemma integration with a deterministic fallback&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTTP:&lt;/strong&gt; httpx&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment:&lt;/strong&gt; Render&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The frontend is deployed as a Render Static Site and the FastAPI backend runs as a Render Web Service.&lt;/p&gt;

&lt;p&gt;GitHub:&lt;br&gt;
&lt;a href="https://github.com/PRAVIN-KUMAR-295/touchgrass-ai" rel="noopener noreferrer"&gt;https://github.com/PRAVIN-KUMAR-295/touchgrass-ai&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Live Demo:&lt;br&gt;
&lt;a href="https://touchgrass-ai-2.onrender.com" rel="noopener noreferrer"&gt;https://touchgrass-ai-2.onrender.com&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How Gemma Is Used
&lt;/h2&gt;

&lt;p&gt;The project was designed around an AI provider abstraction so that an open-weight model can generate outdoor mission content without tightly coupling the application to one provider.&lt;/p&gt;

&lt;p&gt;The intended hosted model is:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;google/gemma-3-4b-it&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The application also includes a deterministic fallback so the core mission experience remains usable when hosted AI credentials are unavailable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Important disclosure
&lt;/h3&gt;

&lt;p&gt;For the deployed demo, I did &lt;strong&gt;not&lt;/strong&gt; configure a hosted Gemma API key, so I have not claimed that the live deployment is currently performing real Gemma inference.&lt;/p&gt;

&lt;p&gt;The deployed application is using the tested deterministic fallback path.&lt;/p&gt;

&lt;p&gt;This keeps the demo honest while preserving the open-weight Gemma integration in the architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Open Innovation Matters
&lt;/h2&gt;

&lt;p&gt;The open-weight approach makes the AI layer more replaceable and easier to experiment with.&lt;/p&gt;

&lt;p&gt;Instead of building the entire application around a closed provider, the AI service is separated from the rest of the product. This makes it possible to change the model or serving infrastructure without redesigning the outdoor mission experience.&lt;/p&gt;

&lt;p&gt;For this project, that flexibility is more important than making the AI itself the main attraction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Taking It Outside
&lt;/h2&gt;

&lt;p&gt;I actually used the deployed application for an outdoor mission.&lt;/p&gt;

&lt;p&gt;I generated a mission, started it, put the phone away, went outside, completed the activity, and then returned to mark the mission complete.&lt;/p&gt;

&lt;p&gt;The completed mission appeared in History and the Statistics page updated with completed missions, outdoor minutes, and the streak.&lt;/p&gt;

&lt;p&gt;This was the part of the project I liked most: the successful outcome was not spending more time inside the app.&lt;/p&gt;

&lt;h2&gt;
  
  
  Screenshots
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Home
&lt;/h3&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2Fqpxamk920p5is81pclkq.png" class="article-body-image-wrapper"&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%2Farticles%2Fqpxamk920p5is81pclkq.png" alt=" " width="799" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Mission Planning
&lt;/h3&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2Fhjzkz64yiftfbq45rfcg.png" class="article-body-image-wrapper"&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%2Farticles%2Fhjzkz64yiftfbq45rfcg.png" alt=" " width="800" height="623"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Generated Mission
&lt;/h3&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2F712qzxhkcuk4n31yf4xg.png" class="article-body-image-wrapper"&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%2Farticles%2F712qzxhkcuk4n31yf4xg.png" alt=" " width="799" height="645"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Mission in Progress
&lt;/h3&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2F9xrox55vhuoes6o6xn87.png" class="article-body-image-wrapper"&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%2Farticles%2F9xrox55vhuoes6o6xn87.png" alt=" " width="800" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  History
&lt;/h3&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2Fc8a9b6do3v7f5q8eubce.png" class="article-body-image-wrapper"&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%2Farticles%2Fc8a9b6do3v7f5q8eubce.png" alt=" " width="799" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Statistics
&lt;/h3&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2Fy75xguehcqxq9m2vsdz0.png" class="article-body-image-wrapper"&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%2Farticles%2Fy75xguehcqxq9m2vsdz0.png" alt=" " width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;One of the biggest lessons was that building an AI application does not have to mean building an experience that keeps users interacting with AI.&lt;/p&gt;

&lt;p&gt;The best part of TouchGrass AI happens after the AI finishes its job.&lt;/p&gt;

&lt;p&gt;I also learned a lot about separating the AI service from the application logic, building a reliable fallback path, testing the complete mission lifecycle, and deploying a React + FastAPI application to production.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Disclosure
&lt;/h2&gt;

&lt;p&gt;AI tools were used during development to help with implementation, debugging, documentation, and development workflow.&lt;/p&gt;

&lt;p&gt;The project itself was designed, tested, deployed, and verified as a working application.&lt;/p&gt;

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

&lt;p&gt;TouchGrass AI started with a simple question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can AI help us use our phones less?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of optimizing for another screen session, this project tries to make the screen the shortest part of the experience.&lt;/p&gt;

&lt;p&gt;Choose a mission.&lt;/p&gt;

&lt;p&gt;Put the phone away.&lt;/p&gt;

&lt;p&gt;Go touch grass. 🌱&lt;/p&gt;




&lt;p&gt;Built for the Hacktoberfest 2026 Open-Source AI Challenge: Week 1.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>BuddyLens AI: An Open-Source AI Study Companion Built for a Friend</title>
      <dc:creator>PRAVIN KUMAR</dc:creator>
      <pubDate>Sat, 03 Oct 2026 17:38:07 +0000</pubDate>
      <link>https://dev.to/pravin_kumar_06/buddylens-ai-an-open-source-ai-study-companion-built-for-a-friend-2ch8</link>
      <guid>https://dev.to/pravin_kumar_06/buddylens-ai-an-open-source-ai-study-companion-built-for-a-friend-2ch8</guid>
      <description>&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built BuddyLens AI, an open-source AI study companion that helps students turn their lecture notes and PDFs into something they can actually study from.&lt;/p&gt;

&lt;p&gt;Instead of reading through a long PDF and manually creating questions or a revision schedule, a student can upload their notes and use BuddyLens AI to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ask questions grounded in their notes&lt;/li&gt;
&lt;li&gt;Get simple explanations with relevant section citations&lt;/li&gt;
&lt;li&gt;Generate multiple-choice quizzes&lt;/li&gt;
&lt;li&gt;Create a prioritized revision plan&lt;/li&gt;
&lt;li&gt;Track study activity and insights&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal was simple: make studying from existing notes more interactive and less overwhelming.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built for a Friend 🤝
&lt;/h2&gt;

&lt;p&gt;I built BuddyLens AI around a real problem faced by a college friend: studying from long lecture PDFs made it difficult to quickly identify the important concepts, practice questions, and organize what to revise first.&lt;/p&gt;

&lt;p&gt;I wanted to build something that could work directly with the notes they already had instead of requiring them to manually convert every lecture into flashcards, questions, and revision plans.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

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

&lt;p&gt;Upload Notes → Extract Text → Split into Relevant Chunks → Retrieve Relevant Sections → Generate with Gemma → Show the Result&lt;/p&gt;

&lt;p&gt;When a student asks a question, BuddyLens first retrieves relevant parts of the uploaded study material. Those sections are then provided as context to the AI model.&lt;/p&gt;

&lt;p&gt;This makes the responses grounded in the student's own material rather than relying only on general model knowledge.&lt;/p&gt;

&lt;p&gt;The same approach is used for quiz generation and revision planning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Architecture
&lt;/h2&gt;

&lt;p&gt;BuddyLens AI is a full-stack application with an open-weight AI model at its core.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;React 19&lt;/li&gt;
&lt;li&gt;Vite&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;FastAPI&lt;/li&gt;
&lt;li&gt;SQLite&lt;/li&gt;
&lt;li&gt;pypdf for PDF text extraction&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Retrieval
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;BM25 / TF-IDF based retrieval&lt;/li&gt;
&lt;li&gt;Note chunking and relevant-section retrieval&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Gemma 3 4B&lt;/li&gt;
&lt;li&gt;Model: &lt;code&gt;google/gemma-3-4b-it&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Served through an OpenAI-compatible hosted endpoint&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Deployment
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Frontend: Render&lt;/li&gt;
&lt;li&gt;Backend: Render&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The application also uses an AI provider abstraction so the AI layer can be changed between different serving approaches. The project includes support for local Ollama-based inference as well as a hosted model configuration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Gemma and Open Innovation Matter
&lt;/h2&gt;

&lt;p&gt;For this project, I wanted the AI layer to be based on an open-weight model rather than tightly coupling the application to a single proprietary model.&lt;/p&gt;

&lt;p&gt;BuddyLens AI uses Gemma 3 4B as its AI engine.&lt;/p&gt;

&lt;p&gt;Using an open-weight model makes the architecture more flexible. The model can be served through different infrastructure, and the application can keep the retrieval, study logic, and user experience separate from the model provider.&lt;/p&gt;

&lt;p&gt;For a student-focused tool, this also makes experimentation easier: the same study workflow can evolve as better open models and serving options become available.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the App Can Do
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Grounded AI Q&amp;amp;A
&lt;/h3&gt;

&lt;p&gt;A student can ask questions about their uploaded notes and receive an explanation based on the relevant sections.&lt;/p&gt;

&lt;p&gt;The response can include citations back to the study material, making it easier to verify where the answer came from.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Active Recall Quiz
&lt;/h3&gt;

&lt;p&gt;BuddyLens can generate multiple-choice questions from the uploaded notes.&lt;/p&gt;

&lt;p&gt;The student can answer the questions directly inside Quiz Mode and use the results to identify knowledge gaps.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Revision Plan
&lt;/h3&gt;

&lt;p&gt;Instead of simply summarizing the notes, BuddyLens can create a prioritized revision plan based on the uploaded material.&lt;/p&gt;

&lt;p&gt;This turns a large set of notes into a smaller set of actionable study steps.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Study Insights
&lt;/h3&gt;

&lt;p&gt;The application also provides activity and study insights so the student can see how they are using the study workspace.&lt;/p&gt;

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

&lt;p&gt;Live application:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://buddylens-ai-3.onrender.com" rel="noopener noreferrer"&gt;https://buddylens-ai-3.onrender.com&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://buddylens-ai-2.onrender.com" rel="noopener noreferrer"&gt;https://buddylens-ai-2.onrender.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The live application is running with:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Hosted Gemma (google/gemma-3-4b-it)&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Screenshots
&lt;/h2&gt;

&lt;h3&gt;
  
  
  AI Q&amp;amp;A with Note Citations
&lt;/h3&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2Fcn8jjh64rfs7u3n4j2yy.png" class="article-body-image-wrapper"&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%2Farticles%2Fcn8jjh64rfs7u3n4j2yy.png" alt=" " width="800" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Active Recall Quiz
&lt;/h3&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2Fjoox1h75cm5df6a73o0j.png" class="article-body-image-wrapper"&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%2Farticles%2Fjoox1h75cm5df6a73o0j.png" alt=" " width="800" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2Ftjsavk42ehq5uw1kda2w.png" class="article-body-image-wrapper"&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%2Farticles%2Ftjsavk42ehq5uw1kda2w.png" alt=" " width="800" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2Fcjh6pbudgv4xrdi6sryb.png" class="article-body-image-wrapper"&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%2Farticles%2Fcjh6pbudgv4xrdi6sryb.png" alt=" " width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Revision Plan
&lt;/h3&gt;

&lt;p&gt;&lt;a href="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%2Farticles%2Fvgrblxr29tynzi3go5oz.png" class="article-body-image-wrapper"&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%2Farticles%2Fvgrblxr29tynzi3go5oz.png" alt=" " width="800" height="364"&gt;&lt;/a&gt;&lt;/p&gt;

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

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

&lt;p&gt;&lt;a href="https://github.com/PRAVIN-KUMAR-295/buddylens-ai" rel="noopener noreferrer"&gt;https://github.com/PRAVIN-KUMAR-295/buddylens-ai&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Building BuddyLens AI taught me that making an AI application useful is not only about connecting a model to a chat interface.&lt;/p&gt;

&lt;p&gt;The retrieval layer, grounding, citations, UI flow, quiz experience, and revision workflow are all important parts of the product.&lt;/p&gt;

&lt;p&gt;I also learned how much difference it makes to keep the AI provider separate from the application logic. It makes it easier to experiment with different open models and serving approaches.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Disclosure
&lt;/h2&gt;

&lt;p&gt;I used AI coding assistance during development. I reviewed, tested, debugged, and integrated the generated code into the project, and verified the application's backend, frontend build, AI integration, and deployment.&lt;/p&gt;

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

&lt;p&gt;BuddyLens AI started with a simple idea: if a student already has their notes, the AI should help them actually learn from those notes.&lt;/p&gt;

&lt;p&gt;Instead of replacing the student's study material, BuddyLens works as a study companion around it.&lt;/p&gt;

&lt;p&gt;The project is open source, uses Gemma at its core, and is designed so that the AI serving layer can evolve as open models and infrastructure evolve.&lt;/p&gt;

&lt;p&gt;Thanks for checking out BuddyLens AI!&lt;/p&gt;

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