<?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: PRUTHVI RAJ G</title>
    <description>The latest articles on DEV Community by PRUTHVI RAJ G (@pruthvirajg25).</description>
    <link>https://dev.to/pruthvirajg25</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%2F4161241%2F1fd570e8-1a6f-4a7b-8ea7-3d065387ea10.png</url>
      <title>DEV Community: PRUTHVI RAJ G</title>
      <link>https://dev.to/pruthvirajg25</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pruthvirajg25"/>
    <language>en</language>
    <item>
      <title>👻 WRAITH: Resurrecting Lost Memories with Local Gemma 4 — The Ghost in the Machine</title>
      <dc:creator>PRUTHVI RAJ G</dc:creator>
      <pubDate>Wed, 28 Oct 2026 13:13:54 +0000</pubDate>
      <link>https://dev.to/pruthvirajg25/wraith-resurrecting-lost-memories-with-local-gemma-4-the-ghost-in-the-machine-2gn4</link>
      <guid>https://dev.to/pruthvirajg25/wraith-resurrecting-lost-memories-with-local-gemma-4-the-ghost-in-the-machine-2gn4</guid>
      <description>&lt;p&gt;&lt;em&gt;This is my 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;p&gt;What if an old diary could tell its story again? What if forgotten letters could preserve not only the facts they contain, but also the emotions and mysteries hidden between their lines?&lt;/p&gt;

&lt;p&gt;Meet &lt;strong&gt;WRAITH&lt;/strong&gt; — a local-first AI memory archive that transforms historical letters, diary entries, and personal recollections into atmospheric gothic stories while keeping factual information separate from creative interpretation.&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/PruthviRajG25/Hacktoberfest-Week4" rel="noopener noreferrer"&gt;https://github.com/PruthviRajG25/Hacktoberfest-Week4&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Every Memory Leaves a Shadow.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




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

&lt;p&gt;&lt;strong&gt;WRAITH&lt;/strong&gt; is a privacy-focused archival and storytelling application powered by Google DeepMind's Gemma 4, running locally through Ollama.&lt;/p&gt;

&lt;p&gt;It explores an interesting question: can AI help us preserve the emotional depth of personal memories without losing sight of the original facts?&lt;/p&gt;

&lt;p&gt;WRAITH approaches this through two complementary layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Verified Ledger:&lt;/strong&gt; Extracts explicitly mentioned people, dates, events, and other details from the source text.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Haunted Chronicle:&lt;/strong&gt; Uses the mood, imagery, and emotional themes of the original text to create an atmospheric gothic ghost story.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is to make historical preservation more engaging while clearly distinguishing information found in the source from AI-generated fiction.&lt;/p&gt;

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

&lt;p&gt;Personal diaries, handwritten letters, and family archives can hold irreplaceable memories. However, preserving and exploring them with modern AI introduces several challenges.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Privacy concerns:&lt;/strong&gt; Uploading intimate family records to cloud-based AI services may expose sensitive information to third-party systems.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Historical accuracy:&lt;/strong&gt; Generative AI can invent details or mix fictional elements with real events.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility:&lt;/strong&gt; Some AI solutions depend on cloud services, paid APIs, or hardware that may not be available to everyone.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;WRAITH explores a local-first alternative that prioritizes privacy, separates facts from fiction, and makes archival storytelling accessible through a web interface.&lt;/p&gt;

&lt;h2&gt;
  
  
  👻 How WRAITH Interprets “Ghost in the Machine”
&lt;/h2&gt;

&lt;p&gt;Rather than treating the ghost as a literal supernatural presence, I approached the theme metaphorically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if the machine became a medium through which forgotten memories could speak again?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A diary entry becomes the starting point. The AI identifies the details present in the original text and then creates a fictional narrative inspired by its atmosphere.&lt;/p&gt;

&lt;p&gt;The result is an experience that combines archival organization with creative storytelling—without presenting invented supernatural events as historical facts.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Demo
&lt;/h2&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%2Fl4xgyw0npgs8j4d5ifgi.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%2Fl4xgyw0npgs8j4d5ifgi.png" alt="WRAITH Interface Preview" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🕯️ Interactive Presentation
&lt;/h3&gt;

&lt;p&gt;WRAITH also includes a standalone interactive experience in &lt;a href="https://github.com/PruthviRajG25/Hacktoberfest-Week4/blob/main/poster.html" rel="noopener noreferrer"&gt;&lt;code&gt;poster.html&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Atmospheric soundscape:&lt;/strong&gt; Procedurally generated ambient audio using the Web Audio API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive ghost lantern:&lt;/strong&gt; A cursor-based flashlight effect that reveals hidden visual details.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive séance simulator:&lt;/strong&gt; A typewriter-style presentation that illustrates the AI analysis experience.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Print-ready presentation:&lt;/strong&gt; A dedicated layout for sharing the project during demonstrations and judging.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These elements bring the project's theme to life beyond its core AI functionality.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚡ Run WRAITH Locally
&lt;/h2&gt;

&lt;p&gt;You will need Node.js, npm, and &lt;a href="https://ollama.com/" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt; installed.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Download the model
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull gemma4:e2b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Clone the repository
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/PruthviRajG25/Hacktoberfest-Week4.git
&lt;span class="nb"&gt;cd &lt;/span&gt;Hacktoberfest-Week4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Install dependencies
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run &lt;span class="nb"&gt;install&lt;/span&gt;:all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Start the application
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;code&gt;http://localhost:3000&lt;/code&gt; in your browser, assuming the application is configured to use that port.&lt;/p&gt;

&lt;p&gt;You can also open &lt;code&gt;poster.html&lt;/code&gt; to explore the standalone presentation.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: Model availability, hardware requirements, and startup commands depend on the installed Ollama version and the repository configuration. Check the README if you encounter any issues.&lt;/em&gt;&lt;/p&gt;




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

&lt;p&gt;WRAITH uses a lightweight web architecture that connects a browser-based interface to a locally running AI model.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌────────────────────────────────────┐
│           React + Vite             │
│       User Interface               │
│  Input · Results · Local Storage    │
└──────────────────┬─────────────────┘
                   │
                   ▼
┌────────────────────────────────────┐
│       Node.js + Express             │
│                                    │
│  Input Validation &amp;amp; Sanitization   │
│  API Routes &amp;amp; Structured Responses │
└──────────────────┬─────────────────┘
                   │
                   ▼
┌────────────────────────────────────┐
│            Ollama                  │
│       Local Model Runtime          │
└──────────────────┬─────────────────┘
                   │
                   ▼
┌────────────────────────────────────┐
│          Gemma 4                   │
│   Fact Extraction &amp;amp; Storytelling   │
└────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Technology Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; React 18, Vite, custom CSS, responsive interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Node.js and Express for API handling, input sanitization, and response validation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI:&lt;/strong&gt; Google DeepMind's Gemma 4 through Ollama for local inference.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data storage:&lt;/strong&gt; Browser &lt;code&gt;localStorage&lt;/code&gt; for locally saved records.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Export:&lt;/strong&gt; Markdown files with YAML frontmatter for use with tools such as Obsidian and Logseq.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive experience:&lt;/strong&gt; HTML, CSS, JavaScript, and the Web Audio API.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why a Backend?
&lt;/h3&gt;

&lt;p&gt;The Express backend is an important part of WRAITH, not just a connection layer.&lt;/p&gt;

&lt;p&gt;It handles incoming requests, validates and sanitizes user input, communicates with the local model runtime, and returns structured responses to the frontend. This creates a clear separation between the user interface and AI processing.&lt;/p&gt;

&lt;p&gt;Keeping this logic behind a backend also provides a foundation for adding stronger validation, error handling, testing, and more advanced archival features in the future.&lt;/p&gt;




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

&lt;h3&gt;
  
  
  1. Running an Open-Weight Model Locally
&lt;/h3&gt;

&lt;p&gt;WRAITH uses Gemma 4 through Ollama rather than relying on a hosted AI API for its core inference workflow.&lt;/p&gt;

&lt;p&gt;This design aims to keep personal archival text on the user's device during local processing, reducing the need to send sensitive content to an external AI provider.&lt;/p&gt;

&lt;p&gt;Local execution also provides an opportunity to experiment with open-weight AI while learning how model runtimes integrate with a full-stack application.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Separating Facts from Fiction
&lt;/h3&gt;

&lt;p&gt;One of the most important design decisions was to avoid mixing extracted historical details with generated storytelling.&lt;/p&gt;

&lt;p&gt;The backend sends structured instructions to the model and requests a JSON response.&lt;/p&gt;

&lt;p&gt;For example, the model is instructed to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Extract only names, dates, and events explicitly supported by the input.&lt;/li&gt;
&lt;li&gt;Return empty arrays when the source contains no relevant information.&lt;/li&gt;
&lt;li&gt;Keep factual extraction separate from creative storytelling.&lt;/li&gt;
&lt;li&gt;Generate a short gothic narrative inspired by the source text.&lt;/li&gt;
&lt;li&gt;Return the results in a consistent JSON structure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is a simplified example of the response format:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"The Forgotten Attic"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"summary"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"A mysterious memory preserved in an old diary."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"people"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dates"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"facts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"story"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"The house stood silent beneath the winter sky..."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The example above illustrates the response structure, not a verified output from a specific test.&lt;/p&gt;

&lt;p&gt;Structured output makes the results easier for the frontend to display and helps maintain a clear boundary between source-supported information and generated fiction. However, model outputs still require validation, and factual extraction is not guaranteed to be error-free.&lt;/p&gt;




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

&lt;p&gt;For a project dealing with personal memories, privacy and accessibility are important design considerations.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔐 1. Privacy by Design
&lt;/h3&gt;

&lt;p&gt;Personal letters and diaries can contain deeply sensitive information. Running inference locally can reduce exposure to third-party AI services, provided the application is configured to keep processing and storage local.&lt;/p&gt;

&lt;p&gt;WRAITH is designed around this principle: the user's memories should remain under their control.&lt;/p&gt;

&lt;h3&gt;
  
  
  💻 2. Accessible AI
&lt;/h3&gt;

&lt;p&gt;Local inference offers an alternative to applications that depend entirely on paid cloud APIs.&lt;/p&gt;

&lt;p&gt;The practical hardware requirements depend on the selected model, quantization, available memory, and system configuration, but the approach makes experimentation with open-weight AI possible without requiring a dedicated cloud inference service.&lt;/p&gt;

&lt;h3&gt;
  
  
  📚 3. Long-Term Preservation
&lt;/h3&gt;

&lt;p&gt;A local-first architecture gives users more control over their archives. Markdown export also makes records easier to move between compatible applications and personal knowledge-management systems.&lt;/p&gt;

&lt;p&gt;The aim is not to promise that software will work forever, but to make preserved information portable and less dependent on a single hosted service.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ My Development Process
&lt;/h2&gt;

&lt;p&gt;Building WRAITH brought together several areas of full-stack development:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI integration:&lt;/strong&gt; Connecting a locally hosted model to a web application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt engineering:&lt;/strong&gt; Designing instructions that separate source-based extraction from creative generation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend development:&lt;/strong&gt; Building API routes, validating input, and handling structured model responses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend development:&lt;/strong&gt; Creating a responsive interface with a consistent gothic visual identity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Creative interaction design:&lt;/strong&gt; Using CSS animations, cursor effects, and procedural audio to reinforce the theme.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer experience:&lt;/strong&gt; Organizing installation and startup commands to simplify local setup.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The biggest design challenge was balancing two very different goals: preserving the integrity of historical information and creating an engaging fictional experience.&lt;/p&gt;

&lt;p&gt;Keeping those outputs separate became the foundation of the project.&lt;/p&gt;




&lt;h2&gt;
  
  
  🕰️ The Experience: When a Memory Becomes a Story
&lt;/h2&gt;

&lt;p&gt;Imagine opening an old diary and finding a fragment about a locked attic, a brass key, and a ticking pocket watch.&lt;/p&gt;

&lt;p&gt;WRAITH's goal is to preserve the details that the text actually mentions while creating a separate fictional narrative inspired by its atmosphere.&lt;/p&gt;

&lt;p&gt;The historical record remains the starting point. The story becomes an interpretation—not a replacement for the original memory.&lt;/p&gt;

&lt;p&gt;That distinction is what makes this project meaningful to me. AI does not need to rewrite the past to help us explore it. Sometimes, it can simply give forgotten words a new way to be experienced.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That is the ghost in the machine: not a ghost living inside the model, but the echoes of human memories brought to life through technology.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 Explore WRAITH
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Source code:&lt;/strong&gt; &lt;a href="https://github.com/PruthviRajG25/Hacktoberfest-Week4" rel="noopener noreferrer"&gt;https://github.com/PruthviRajG25/Hacktoberfest-Week4&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive poster:&lt;/strong&gt; &lt;a href="https://github.com/PruthviRajG25/Hacktoberfest-Week4/blob/main/poster.html" rel="noopener noreferrer"&gt;https://github.com/PruthviRajG25/Hacktoberfest-Week4/blob/main/poster.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Challenge:&lt;/strong&gt; &lt;a href="https://dev.to/challenges/hacktoberfest-week4-2026-10-26"&gt;https://dev.to/challenges/hacktoberfest-week4-2026-10-26&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'd love to hear your thoughts!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you could preserve one memory, letter, or story using AI, what would it be?&lt;/strong&gt; 🕯️&lt;/p&gt;

&lt;h1&gt;
  
  
  devchallenge #hf26challenge #webdev #opensource
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>SlothStack: Slow Down. Automate More. 🦥</title>
      <dc:creator>PRUTHVI RAJ G</dc:creator>
      <pubDate>Thu, 22 Oct 2026 16:01:14 +0000</pubDate>
      <link>https://dev.to/pruthvirajg25/slothstack-slow-down-automate-more-168i</link>
      <guid>https://dev.to/pruthvirajg25/slothstack-slow-down-automate-more-168i</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;Meet &lt;strong&gt;SlothStack&lt;/strong&gt; — a local-first AI productivity assistant designed to handle repetitive digital work so you can focus on what actually matters.&lt;/p&gt;

&lt;p&gt;We spend too much time organizing files, searching through documents, tracking deadlines, renaming downloads, and turning scattered information into actionable tasks. These small jobs may seem harmless, but together they consume a surprising amount of time and attention.&lt;/p&gt;

&lt;p&gt;SlothStack aims to make that busywork easier by using AI agents to help organize your digital workspace.&lt;/p&gt;

&lt;p&gt;Here's what it is designed to do:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📂 &lt;strong&gt;Smart File Organization:&lt;/strong&gt; Categorize documents and suggest meaningful filenames.&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Task Extraction:&lt;/strong&gt; Identify action items, deadlines, and follow-ups from supported documents.&lt;/li&gt;
&lt;li&gt;🔎 &lt;strong&gt;Duplicate Detection:&lt;/strong&gt; Help identify potentially duplicated files and reduce clutter.&lt;/li&gt;
&lt;li&gt;🧠 &lt;strong&gt;Action Planning:&lt;/strong&gt; Turn unstructured information into clear, actionable next steps.&lt;/li&gt;
&lt;li&gt;🛡️ &lt;strong&gt;Human-Approved Automation:&lt;/strong&gt; Preview proposed file operations before approving changes.&lt;/li&gt;
&lt;li&gt;🔒 &lt;strong&gt;Local-First AI:&lt;/strong&gt; Use locally running open-weight models to keep document processing on your machine.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is simple: &lt;strong&gt;less repetitive work, less context switching, and more time for meaningful work.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SlothStack is intended for students, developers, researchers, and anyone whose digital workspace has become a second job.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&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%2F69ato26i7czud8qu7pxh.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%2F69ato26i7czud8qu7pxh.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&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%2Fg5uzgvcxqeut4t362f2g.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%2Fg5uzgvcxqeut4t362f2g.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&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%2Fwzrgydnseakdf55gafy2.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%2Fwzrgydnseakdf55gafy2.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The ideal demo walks through one complete workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Upload a sample document.&lt;/li&gt;
&lt;li&gt;Let a locally running model analyze its contents.&lt;/li&gt;
&lt;li&gt;Review extracted tasks and suggested file organization.&lt;/li&gt;
&lt;li&gt;Preview the proposed actions.&lt;/li&gt;
&lt;li&gt;Approve an action and inspect the activity log.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The important part isn't just generating an AI response. It's demonstrating how an AI agent can turn information into useful, reviewable actions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live Demo:&lt;a href="https://frontend-seven-mocha-i9ejtz56kz.vercel.app" rel="noopener noreferrer"&gt;https://frontend-seven-mocha-i9ejtz56kz.vercel.app&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&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/PruthviRajG25" rel="noopener noreferrer"&gt;
        PruthviRajG25
      &lt;/a&gt; / &lt;a href="https://github.com/PruthviRajG25/Hacktoberfest-Week3" rel="noopener noreferrer"&gt;
        Hacktoberfest-Week3
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Sloth Stack is a local-first productivity workspace
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Sloth Stack&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Do less. Let your local AI handle the busywork.&lt;/strong&gt;&lt;/p&gt;


&lt;/blockquote&gt;

&lt;p&gt;Sloth Stack is a local-first productivity workspace that turns inbox exports
documents, and visual notes into useful, reviewable work. Upload a mail export
analyze it with Ollama, review extracted tasks and deadlines, then approve safe
file actions. Your data stays in the local SQLite database and upload directory.&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/PruthviRajG25/Hacktoberfest-Week3/./frontend/public/sloth-stack-logo.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FPruthviRajG25%2FHacktoberfest-Week3%2FHEAD%2F.%2Ffrontend%2Fpublic%2Fsloth-stack-logo.png" alt="Sloth Stack"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What it does&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;&lt;div class="table-wrapper-paragraph"&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;table&gt;

&lt;thead&gt;

&lt;tr&gt;

&lt;th&gt;Workspace&lt;/th&gt;

&lt;th&gt;Purpose&lt;/th&gt;

&lt;/tr&gt;

&lt;/thead&gt;

&lt;tbody&gt;

&lt;tr&gt;

&lt;td&gt;&lt;strong&gt;Dashboard&lt;/strong&gt;&lt;/td&gt;

&lt;td&gt;Content-grounded daily briefing, workload counters, and priorities&lt;/td&gt;

&lt;/tr&gt;

&lt;tr&gt;

&lt;td&gt;&lt;strong&gt;Files&lt;/strong&gt;&lt;/td&gt;

&lt;td&gt;Upload mail exports and documents, then start local AI analysis&lt;/td&gt;

&lt;/tr&gt;

&lt;tr&gt;

&lt;td&gt;&lt;strong&gt;Tasks&lt;/strong&gt;&lt;/td&gt;

&lt;td&gt;Review extracted mail tasks, complete them, or create custom deadline-aware todos&lt;/td&gt;

&lt;/tr&gt;

&lt;tr&gt;

&lt;td&gt;&lt;strong&gt;Action plans&lt;/strong&gt;&lt;/td&gt;

&lt;td&gt;Approve or reject safe proposed actions and use the interactive planning notebook&lt;/td&gt;

&lt;/tr&gt;

&lt;tr&gt;

&lt;td&gt;&lt;strong&gt;Activity&lt;/strong&gt;&lt;/td&gt;

&lt;td&gt;Inspect the local audit trail&lt;/td&gt;

&lt;/tr&gt;

&lt;tr&gt;

&lt;td&gt;&lt;strong&gt;Settings&lt;/strong&gt;&lt;/td&gt;

&lt;td&gt;Configure Ollama and open Gmail, WhatsApp Web, or Slack&lt;/td&gt;

&lt;/tr&gt;

&lt;/tbody&gt;

&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Import a mailbox or message export&lt;/h3&gt;

&lt;/div&gt;

&lt;p&gt;Download the safe demo file from
&lt;a href="https://github.com/PruthviRajG25/Hacktoberfest-Week3/./frontend/public/sloth-stack-inbox-sample.txt" rel="noopener noreferrer"&gt;frontend/public/sloth-stack-inbox-sample.txt&lt;/a&gt;
upload it from &lt;strong&gt;Files&lt;/strong&gt;, and select &lt;strong&gt;Analyze&lt;/strong&gt;. The analyzer…&lt;/p&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/PruthviRajG25/Hacktoberfest-Week3" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;strong&gt;GitHub Repository:&lt;/strong&gt; .

&lt;p&gt;SlothStack is being designed with open-source contributions in mind. The architecture separates the frontend, backend, AI integration, document processing, and safe action execution so contributors can improve individual components without needing to understand the entire codebase first.&lt;/p&gt;

&lt;p&gt;Potential contribution areas include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adding document parsers and file formats.&lt;/li&gt;
&lt;li&gt;Improving task extraction and categorization.&lt;/li&gt;
&lt;li&gt;Supporting additional Ollama-compatible models.&lt;/li&gt;
&lt;li&gt;Writing tests for agent workflows.&lt;/li&gt;
&lt;li&gt;Improving accessibility and the dashboard experience.&lt;/li&gt;
&lt;li&gt;Adding security checks and documentation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is to make SlothStack useful not just as a personal productivity tool, but as a project other developers can learn from and extend.&lt;/p&gt;

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

&lt;p&gt;SlothStack is designed around a local-first architecture with a React frontend, a Python backend, and open-weight language models served through Ollama.&lt;br&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%2F28xkdac5j0zd5dcbdbci.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%2F28xkdac5j0zd5dcbdbci.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technology stack&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; React, TypeScript, Vite, and Tailwind CSS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Python and FastAPI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Layer:&lt;/strong&gt; SQLite, SQLAlchemy, and Alembic migrations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Inference:&lt;/strong&gt; Ollama with locally running open-weight models.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validation:&lt;/strong&gt; Pydantic for structured data and validated agent outputs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing:&lt;/strong&gt; Pytest for backend tests and Vitest for frontend tests.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Rather than treating the AI as a chatbot that merely describes what to do, SlothStack is designed around controlled agent workflows.&lt;/p&gt;

&lt;p&gt;For example, a document-processing workflow can:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Read an uploaded file in a supported format.&lt;/li&gt;
&lt;li&gt;Extract its text using the appropriate parser.&lt;/li&gt;
&lt;li&gt;Send relevant content to a locally running model.&lt;/li&gt;
&lt;li&gt;Request structured results, such as categories, tasks, deadlines, and suggested actions.&lt;/li&gt;
&lt;li&gt;Validate the model's response before using it.&lt;/li&gt;
&lt;li&gt;Present the proposed action plan to the user.&lt;/li&gt;
&lt;li&gt;Execute only explicitly approved operations.&lt;/li&gt;
&lt;li&gt;Record the outcome in an activity log.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The supported document formats are intended to include TXT, Markdown, PDF, JSON, and CSV.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Safety is part of the architecture, not an afterthought.&lt;/strong&gt; The model should not have unrestricted filesystem access or be allowed to execute arbitrary shell commands or Python code. File operations should be restricted to authorized directories, paths should be validated, and potentially destructive actions should require explicit approval.&lt;/p&gt;

&lt;p&gt;SlothStack also aims to defend against prompt injection in document contents, enforce file-size limits, and handle invalid model outputs safely.&lt;/p&gt;

&lt;p&gt;This design makes the agent more than a demo that works only with a carefully prepared prompt. It provides a foundation for repeatable workflows that users can inspect and control.&lt;/p&gt;

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

&lt;p&gt;A productivity assistant may handle personal notes, private documents, project plans, research, and other sensitive information. Sending all of that content to a remote AI service isn't always appropriate.&lt;/p&gt;

&lt;p&gt;Open innovation makes a different approach possible.&lt;/p&gt;

&lt;p&gt;With open-weight models and local inference, users can run supported models on their own machines, experiment with different models, and adapt SlothStack to their workflows without making a closed API the foundation of the entire product.&lt;/p&gt;

&lt;p&gt;It also creates opportunities for community-driven development:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model Freedom:&lt;/strong&gt; Experiment with different compatible models rather than being tied to one provider.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy-Conscious Processing:&lt;/strong&gt; Keep inference local when using a locally configured model and local services.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transparency:&lt;/strong&gt; Inspect the code, review how actions are performed, and improve security.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility:&lt;/strong&gt; Let contributors improve the application without requiring every feature to depend on a paid API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community Ownership:&lt;/strong&gt; Build new parsers, integrations, workflows, and tests together.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Local inference doesn't automatically guarantee security or privacy; the application, model configuration, and surrounding services still matter. But it gives users more control over where their information is processed.&lt;/p&gt;

&lt;p&gt;For me, open source is about making useful automation more accessible, understandable, and adaptable.&lt;/p&gt;

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

&lt;p&gt;The real payoff isn't having AI do everything. It's eliminating the small, repetitive tasks that interrupt our concentration throughout the day.&lt;/p&gt;

&lt;p&gt;Imagine finishing a study session or a development task and having a clear list of follow-ups, useful filenames for your documents, and an organized workspace instead of another pile of downloads and notes.&lt;/p&gt;

&lt;p&gt;That's the idea behind SlothStack:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automate the boring parts. Keep humans in control. Make meaningful work easier to start.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I won't claim a specific number of minutes saved without measuring it. A meaningful next step is to compare the time needed to organize a representative set of documents manually against the time needed with SlothStack, including review and approval.&lt;/p&gt;

&lt;p&gt;The best automation is not the one that performs the most actions. It's the one that removes unnecessary effort without creating more work to clean up afterward.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Open List: AI Product Listing Generator for Small Sellers &amp; Artisans (Powered by Gemma &amp; MongoDB Atlas)</title>
      <dc:creator>PRUTHVI RAJ G</dc:creator>
      <pubDate>Fri, 16 Oct 2026 16:40:22 +0000</pubDate>
      <link>https://dev.to/pruthvirajg25/open-list-ai-product-listing-generator-for-small-sellers-artisans-powered-by-gemma-mongodb-2npm</link>
      <guid>https://dev.to/pruthvirajg25/open-list-ai-product-listing-generator-for-small-sellers-artisans-powered-by-gemma-mongodb-2npm</guid>
      <description>&lt;h2&gt;
  
  
  What I Built 🛍️✨
&lt;/h2&gt;

&lt;p&gt;Selling handmade crafts, vintage goods, or boutique items online is exciting, but writing product listings is exhausting. &lt;/p&gt;

&lt;p&gt;Independent creators on Etsy, eBay, and Instagram spend 20 to 30 minutes on every single item trying to write:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔍 SEO-friendly product titles&lt;/li&gt;
&lt;li&gt;✍️ Engaging story descriptions&lt;/li&gt;
&lt;li&gt;📌 Bullet points for materials, dimensions, and specs&lt;/li&gt;
&lt;li&gt;🏷️ Search tags (like Etsy's 13-tag limit)&lt;/li&gt;
&lt;li&gt;📱 Social media captions with hashtags&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most commercial AI tools charge expensive monthly subscriptions or make up fake facts like false certifications and fake materials.&lt;/p&gt;

&lt;p&gt;To fix this, I built &lt;strong&gt;Open List&lt;/strong&gt;: an AI listing generator created specifically for small business owners and side hustlers.&lt;/p&gt;

&lt;p&gt;You simply type in basic product notes (or pick a sample preset), and Open List turns them into a complete, professional listing in just 3 seconds.&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Features 🌟
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🛡️ Zero Hallucinations: The AI strictly sticks to the facts and materials you enter.&lt;/li&gt;
&lt;li&gt;🎯 Multi-Channel Ready: Formats listings for Etsy, eBay, Instagram, WhatsApp, or standard online stores.&lt;/li&gt;
&lt;li&gt;🎨 Brand Voice: Lets you set your shop tone (like "Warm &amp;amp; Artisanal" or "Playful") and ban words you dislike.&lt;/li&gt;
&lt;li&gt;🔎 Smart Similarity Search: Uses MongoDB Atlas Vector Search so you can find similar past listings instantly.&lt;/li&gt;
&lt;li&gt;✏️ Edit &amp;amp; Export Anywhere: Edit any section on the spot and download as Text (.txt), Spreadsheet (.csv), or JSON.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Demo 🚀📱
&lt;/h2&gt;

&lt;p&gt;Experience Open List in action:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;💻 &lt;strong&gt;Local Development URL&lt;/strong&gt;: &lt;a href="http://127.0.0.1:8000" rel="noopener noreferrer"&gt;http://127.0.0.1:8000&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📖 &lt;strong&gt;Interactive API Docs&lt;/strong&gt;: &lt;a href="http://127.0.0.1:8000/docs" rel="noopener noreferrer"&gt;http://127.0.0.1:8000/docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;⚡ &lt;strong&gt;1-Click Presets Included&lt;/strong&gt;: Comes with ready-to-test items (Handmade Ceramic Mug, Soy Candle, Leather Wallet, Bamboo Matcha Whisk) so anyone can test it with zero typing!&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Code 💻📦
&lt;/h2&gt;

&lt;p&gt;You can view the full source code and setup instructions on GitHub:&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/PruthviRajG25/Hacktoberfest-Week2" rel="noopener noreferrer"&gt;https://github.com/PruthviRajG25/Hacktoberfest-Week2&lt;/a&gt;&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/PruthviRajG25" rel="noopener noreferrer"&gt;
        PruthviRajG25
      &lt;/a&gt; / &lt;a href="https://github.com/PruthviRajG25/Hacktoberfest-Week2" rel="noopener noreferrer"&gt;
        Hacktoberfest-Week2
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      AI-Powered Ecommerce Listing Generator Powered by Open-Weight Models &amp;amp; MongoDB Atlas
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/PruthviRajG25/Hacktoberfest-Week2/frontend/public/banner.svg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FPruthviRajG25%2FHacktoberfest-Week2%2FHEAD%2Ffrontend%2Fpublic%2Fbanner.svg" alt="Open List Banner" width="100%"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Open List 🛍️✨&lt;/h1&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;AI-Powered Ecommerce Listing Generator Powered by Open-Weight Models &amp;amp; MongoDB Atlas&lt;/h3&gt;
&lt;/div&gt;

&lt;p&gt;Open List is a modern, production-minded web application engineered for small businesses, independent artisans, Etsy/eBay sellers, Instagram boutiques, and local retailers. It transforms basic product specifications into SEO-optimized ecommerce listings, targeted search keywords, bullet-point highlights, and engaging social media captions using open-weight AI (&lt;strong&gt;Gemma 3 1B&lt;/strong&gt; via Ollama) and &lt;strong&gt;MongoDB Atlas&lt;/strong&gt;.&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🏗️ System Architecture&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;&lt;br&gt;
  &amp;lt;div class="js-render-enrichment-target" data-json='{"data":"flowchart TD\n    subgraph Client[\"Frontend Client (React + TypeScript + Vite)\"]\n        UI[\"Dashboard &amp;amp; Form Interfaces\"]\n        Editable[\"Editable Listing Sections\"]\n        Export[\"Export Engine (TXT, CSV, JSON)\"]\n    end\n\n    subgraph Service[\"Unified Backend (FastAPI + Uvicorn)\"]\n        Static[\"Static Vite Asset Server (SPA Fallback)\"]\n        API[\"REST API (/api/&lt;em&gt;)\"]\n        Router[\"Health / Listings / Brand / Search\"]\n        Guard[\"Factual Anti-Hallucination Guardrails\"]\n    end\n\n    subgraph AI[\"Open-Weight Inference Layer\"]\n        Ollama[\"Local Ollama Service (gemma3:1b)\"]\n        Hosted[\"Hosted Open-Weight Endpoint (vLLM / Groq / Together)\"]\n    end\n\n    subgraph DB[\"Database &amp;amp; Search (MongoDB Atlas)\"]\n        Atlas[\"MongoDB Atlas Cluster (open_list_db)\"]\n        Vector[\"Atlas $vectorSearch Index (vector_index)\"]\n        Fallback[\"Resilient In-Memory Fallback\"]\n    end\n\n    UI --&amp;gt; API\n    Editable --&amp;gt; API\n    Export --&amp;gt; UI\n    Static -.-&amp;gt; UI\n    API --&amp;gt; Guard\n    Guard --&amp;gt; Ollama\n    Guard -.-&amp;gt; Hosted\n    API --&amp;gt; Atlas\n    Atlas --&amp;gt; Vector\n    Atlas -.-&amp;gt; Fallback\n"}' data-plain='flowchart TD&lt;br&gt;
    subgraph Client["Frontend Client (React + TypeScript + Vite)"]&lt;br&gt;
        UI["Dashboard &amp;amp; Form Interfaces"]&lt;br&gt;
        Editable["Editable Listing Sections"]&lt;br&gt;
        Export["Export Engine (TXT, CSV, JSON)"]&lt;br&gt;
    end&lt;br&gt;
    subgraph Service["Unified Backend (FastAPI + Uvicorn)"]&lt;br&gt;
        Static["Static Vite Asset Server (SPA Fallback)"]&lt;br&gt;
        API["REST API (/api/&lt;/em&gt;)"]&lt;br&gt;
        Router["Health / Listings / Brand / Search"]&lt;br&gt;
        Guard["Factual Anti-Hallucination Guardrails"]&lt;br&gt;
    end&lt;p&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;subgraph AI["Open-Weight Inference Layer"]
    Ollama["Local Ollama Service (gemma3:1b)"]
    Hosted["Hosted Open-Weight Endpoint (vLLM / Groq / Together)"]
end

subgraph DB["Database &amp;amp;amp; Search (MongoDB Atlas)"]
    Atlas["MongoDB Atlas Cluster (open_list_db)"]
    Vector["Atlas $vectorSearch Index (vector_index)"]
    Fallback["Resilient In-Memory Fallback"]
end

UI --&amp;amp;gt; API
Editable --&amp;amp;gt; API
Export --&amp;amp;gt; UI
Static -.-&amp;amp;gt; UI
API --&amp;amp;gt; Guard
Guard --&amp;amp;gt; Ollama
Guard -.-&amp;amp;gt; Hosted
API --&amp;amp;gt; Atlas
Atlas --&amp;amp;gt; Vector
Atlas -.-&amp;amp;gt; Fallback
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;' dir="auto"&amp;gt;&lt;br&gt;
    &lt;/p&gt;
&lt;div class="render-plaintext-hidden"&gt;
&lt;br&gt;
      &lt;pre&gt;flowchart TD&lt;br&gt;
    subgraph Client["Frontend Client (React + TypeScript + Vite)"]&lt;br&gt;
        UI["Dashboard &amp;amp; Form Interfaces"]&lt;br&gt;
        Editable["Editable Listing Sections"]&lt;br&gt;
        Export["Export Engine (TXT, CSV, JSON)"]&lt;br&gt;
    end&lt;br&gt;
    subgraph Service["Unified Backend (FastAPI + Uvicorn)"]&lt;br&gt;
        Static["Static Vite Asset Server (SPA Fallback)"]&lt;br&gt;
        API["REST API (/api/*)"]&lt;br&gt;
        Router["Health / Listings / Brand / Search"]&lt;br&gt;
        Guard["Factual Anti-Hallucination Guardrails"]&lt;br&gt;
    end&lt;br&gt;
    subgraph AI["Open-Weight Inference Layer"]&lt;br&gt;
        Ollama["Local Ollama Service (gemma3:1b)"]&lt;br&gt;
        Hosted["Hosted Open-Weight Endpoint (vLLM / Groq / Together)"]&lt;br&gt;
    end
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;subgraph DB["Database &amp;amp;amp; Search (MongoDB Atlas)"]
    Atlas["MongoDB Atlas Cluster (open_list_db)"]
    Vector["Atlas $vectorSearch Index (vector_index)"]&amp;lt;/pre&amp;gt;…&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/PruthviRajG25/Hacktoberfest-Week2" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h3&gt;
  
  
  Built with:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🐍 &lt;strong&gt;Backend&lt;/strong&gt;: FastAPI (Python 3.11+) with Pydantic validation&lt;/li&gt;
&lt;li&gt;⚛️ &lt;strong&gt;Frontend&lt;/strong&gt;: React, TypeScript, Tailwind CSS, Vite&lt;/li&gt;
&lt;li&gt;🍃 &lt;strong&gt;Database&lt;/strong&gt;: MongoDB Atlas with Vector Search ($vectorSearch)&lt;/li&gt;
&lt;li&gt;☁️ &lt;strong&gt;Deployment&lt;/strong&gt;: Render Blueprint (render.yaml)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  How I Built It 🛠️🧠
&lt;/h2&gt;

&lt;p&gt;Open List is built around open-weight AI so it runs fast and free:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;🦙 &lt;strong&gt;Google Gemma 3 1B with Ollama&lt;/strong&gt;:&lt;br&gt;
Runs locally on an ordinary 8 GB RAM laptop. It is fast, lightweight (~800 MB), and costs $0 in cloud API bills. For cloud deployments, it also connects to hosted Gemma 2 9B.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🛡️ &lt;strong&gt;Anti-Hallucination Guardrails&lt;/strong&gt;:&lt;br&gt;
Product details are isolated inside protected tags. The AI is strictly instructed never to invent unverified materials, fake warranties, or medical claims.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🍃 &lt;strong&gt;MongoDB Atlas &amp;amp; Vector Search&lt;/strong&gt;:&lt;br&gt;
Saves your listing history and brand profile. When searching past products, MongoDB Atlas Vector Search calculates cosine similarity across embeddings to surface relevant listings immediately.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🚀 &lt;strong&gt;Unified Single-Service on Render&lt;/strong&gt;:&lt;br&gt;
FastAPI serves both the backend API and the compiled React frontend together as a single service, making deployment on Render simple and zero-maintenance.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;Open innovation makes this project possible for real side hustles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;💸 &lt;strong&gt;$0 Cost for Solopreneurs&lt;/strong&gt;: Proprietary AI APIs charge per token. A maker listing hundreds of items would get hit with unpredictable bills. With open-weight Gemma running locally, generation costs nothing.&lt;/li&gt;
&lt;li&gt;🔒 &lt;strong&gt;100% Privacy&lt;/strong&gt;: Proprietary scent formulas, secret craft methods, and supplier pricing never leave the creator's computer.&lt;/li&gt;
&lt;li&gt;📴 &lt;strong&gt;Works Completely Offline&lt;/strong&gt;: Artisans can draft listings in craft workshops, basements, or outdoor flea markets without an internet connection.&lt;/li&gt;
&lt;li&gt;🔓 &lt;strong&gt;No Vendor Lock-in&lt;/strong&gt;: No surprise pricing hikes or discontinued APIs. You own your software and model forever.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;During the build, I used Antigravity and Gemini-powered pair programming to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📐 Architect the unified FastAPI + React Vite project.&lt;/li&gt;
&lt;li&gt;🛡️ Create strict Pydantic anti-hallucination validation filters.&lt;/li&gt;
&lt;li&gt;🍃 Wire up MongoDB Atlas Vector Search and resilient fallback search.&lt;/li&gt;
&lt;li&gt;🧪 Write automated tests using pytest to verify health probes and listing generators.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  My First User 👩‍🎨🕯️
&lt;/h2&gt;

&lt;p&gt;I tested Open List with a friend who runs a handmade scented soy candle business on Etsy.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Test:
&lt;/h3&gt;

&lt;p&gt;He previously spent 25 minutes writing each listing. I entered her candle notes: 100% soy wax, cotton wick, lavender scent, 45-hour burn time, and 8 oz glass jar.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Result:
&lt;/h3&gt;

&lt;p&gt;In &lt;strong&gt;3 seconds&lt;/strong&gt;, Open List generated:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A clean Etsy title with holiday keywords&lt;/li&gt;
&lt;li&gt;5 bullet points with exact burn specifications&lt;/li&gt;
&lt;li&gt;13 ready-to-paste Etsy search tags&lt;/li&gt;
&lt;li&gt;An Instagram caption with hashtags and a call-to-action&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What He Said:
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I dread writing listings on Sunday nights. This did in 5 seconds what takes me half an hour, and it didn't invent fake ingredients! I would gladly pay $10 to $15 a month just for the time this saves me."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;His feedback inspired the &lt;strong&gt;1-click title swap&lt;/strong&gt; and &lt;strong&gt;section-by-section rewrite&lt;/strong&gt; buttons!&lt;/p&gt;




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

&lt;p&gt;Entering the following partner categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;💎 &lt;strong&gt;Best Use of Gemma&lt;/strong&gt;: Built directly around Google's open-weight Gemma 3 1B (via Ollama) and Gemma 2 9B.&lt;/li&gt;
&lt;li&gt;🍃 &lt;strong&gt;Best Use of MongoDB Atlas&lt;/strong&gt;: Uses MongoDB Atlas for listing storage and MongoDB Atlas Vector Search ($vectorSearch) for semantic catalog discovery.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Conclusion ✨🎉
&lt;/h2&gt;

&lt;p&gt;Building &lt;strong&gt;Open List&lt;/strong&gt; proved something important: &lt;strong&gt;AI doesn't need to replace human craftsmanship. It should remove the boring, repetitive chores so creators can focus on what they actually love doing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For an independent artist, every hour saved on marketing copy is an extra hour spent making art, pouring candles, or fulfilling orders. By combining &lt;strong&gt;Google Gemma&lt;/strong&gt;, &lt;strong&gt;MongoDB Atlas&lt;/strong&gt;, and &lt;strong&gt;Render&lt;/strong&gt;, solo entrepreneurs can have the marketing power of big brands at zero extra cost.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's Next? 🔮
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;📦 1-Click direct publishing to Etsy and Shopify stores&lt;/li&gt;
&lt;li&gt;📷 AI image-to-specs extraction from product photos&lt;/li&gt;
&lt;li&gt;🌐 Multi-language translations for global buyers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Give it a spin, run it locally, and let me know your thoughts in the comments! &lt;/p&gt;

&lt;p&gt;Happy Hacktoberfest and happy hacking! 🎃💻✨&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>webdev</category>
      <category>mongodb</category>
    </item>
    <item>
      <title>🌿 Touch Grass AI: Offline Outdoor Companion &amp; Open-Source Species Identifier</title>
      <dc:creator>PRUTHVI RAJ G</dc:creator>
      <pubDate>Sat, 10 Oct 2026 06:46:10 +0000</pubDate>
      <link>https://dev.to/pruthvirajg25/touch-grass-ai-offline-outdoor-companion-open-source-species-identifier-4k83</link>
      <guid>https://dev.to/pruthvirajg25/touch-grass-ai-offline-outdoor-companion-open-source-species-identifier-4k83</guid>
      <description>&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%2Fszrlynrtq5bl2k60m0cv.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%2Fszrlynrtq5bl2k60m0cv.png" alt="A brief description of what the image shows" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




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

&lt;p&gt;&lt;strong&gt;Touch Grass AI&lt;/strong&gt; is an open-source, offline-first outdoor companion designed to help people reconnect with nature while reducing unnecessary screen time.&lt;/p&gt;

&lt;p&gt;Whether you're hiking on remote trails without cellular service, identifying plants in your local park, or recording bird calls in your backyard, Touch Grass AI aims to bring nature exploration and AI-powered identification together in one accessible platform.&lt;/p&gt;

&lt;p&gt;The goal is simple: &lt;strong&gt;use technology to help people spend more time outdoors, not more time on their screens.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👥 Who Is It For?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🥾 &lt;strong&gt;Hikers &amp;amp; Trail Runners:&lt;/strong&gt; Explore outdoor routes, discover nature, and generate GPX routes for offline use.&lt;/li&gt;
&lt;li&gt;🌱 &lt;strong&gt;Gardeners &amp;amp; Foragers:&lt;/strong&gt; Identify plant species, maintain species logs, and explore local frost and microclimate information.&lt;/li&gt;
&lt;li&gt;🐦 &lt;strong&gt;Birdwatchers &amp;amp; Nature Enthusiasts:&lt;/strong&gt; Analyze audio spectrograms and explore AI-powered bird-call recognition.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⏱️ Designed to Reduce Screen Time
&lt;/h3&gt;

&lt;p&gt;Unlike traditional apps designed to maximize engagement, Touch Grass AI encourages short, purposeful interactions.&lt;/p&gt;

&lt;p&gt;Its &lt;strong&gt;15-Minute Outdoor Micro-Quest&lt;/strong&gt; feature encourages users to complete a nature-based activity, put their phones away, and engage with the environment around them.&lt;/p&gt;

&lt;p&gt;The idea is to make technology a companion to outdoor exploration rather than a distraction from it.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Live Demo
&lt;/h2&gt;

&lt;p&gt;🌐 &lt;strong&gt;Live Application:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://hacktoberfest-week1.onrender.com" rel="noopener noreferrer"&gt;https://hacktoberfest-week1.onrender.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🩺 &lt;strong&gt;API Health Endpoint:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://hacktoberfest-week1.onrender.com/api/health" rel="noopener noreferrer"&gt;https://hacktoberfest-week1.onrender.com/api/health&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💻 &lt;strong&gt;GitHub Repository:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/PruthviRajG25/Hacktoberfest-Week1" rel="noopener noreferrer"&gt;https://github.com/PruthviRajG25/Hacktoberfest-Week1&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  ⚡ Test the API
&lt;/h3&gt;

&lt;p&gt;You can check the deployed backend directly from your terminal using the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; GET https://hacktoberfest-week1.onrender.com/api/health
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The expected response is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"online"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"appName"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Touch Grass AI"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"openAIWeights"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Pre-Warmed Ultra-Fast ViT &amp;amp; AST Neural Engine (&amp;lt;15ms)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"offlineModeSupported"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"timestamp"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-10-10T08:00:00.000Z"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Note: This is the expected response format provided for the project. Actual values and service availability may vary.&lt;/em&gt;&lt;/p&gt;




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

&lt;p&gt;Touch Grass AI combines a web-based outdoor experience with AI-assisted image and audio classification, interactive mapping, and local data storage.&lt;/p&gt;

&lt;p&gt;The application is organized into two main parts:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Client-side experience&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📸 Image capture and plant-species identification.&lt;/li&gt;
&lt;li&gt;🎙️ Audio recording and spectrogram-based analysis.&lt;/li&gt;
&lt;li&gt;🗺️ Interactive maps and outdoor route exploration.&lt;/li&gt;
&lt;li&gt;💾 Local storage for an offline-friendly species journal.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Backend inference and APIs&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⚡ Express.js REST API.&lt;/li&gt;
&lt;li&gt;🩺 API health monitoring.&lt;/li&gt;
&lt;li&gt;🌿 Image classification endpoint.&lt;/li&gt;
&lt;li&gt;🎵 Audio classification endpoint.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔄 System Architecture
&lt;/h3&gt;



&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    A["👤 Explorer / Hiker"] --&amp;gt; B["📱 Web Client / PWA"]

    subgraph Frontend["Client-Side Features"]
        B --&amp;gt; C["🗺️ Leaflet Route Builder"]
        B --&amp;gt; D["🎙️ Audio Recorder"]
        B --&amp;gt; E["💾 Offline Species Journal"]
    end

    subgraph Backend["Express.js Backend"]
        B --&amp;gt;|REST API| F["⚡ Express Server"]
        F --&amp;gt; G["🟢 GET /api/health"]
        F --&amp;gt; H["📸 POST /api/classify-image"]
        F --&amp;gt; I["🎵 POST /api/classify-audio"]
        H --&amp;gt; J["🌿 Vision Classification"]
        I --&amp;gt; K["🐦 Audio Classification"]
    end&lt;/code&gt;&lt;/pre&gt;






&lt;h2&gt;
  
  
  🛠️ Technology Stack &amp;amp; AI Models
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🌿 Vision Identification
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Vision Transformer (ViT)&lt;/strong&gt; and &lt;strong&gt;MobileNetV3&lt;/strong&gt; are the proposed vision models for classifying plant-related images, including leaves and trees.&lt;/p&gt;

&lt;p&gt;The objective is to make species identification accessible without depending entirely on proprietary cloud AI services.&lt;/p&gt;

&lt;h3&gt;
  
  
  🐦 Audio Identification
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;Audio Spectrogram Transformer (AST)&lt;/strong&gt; is used in the planned audio-classification pipeline for analyzing recorded sounds and supporting bird-call recognition.&lt;/p&gt;

&lt;h3&gt;
  
  
  🗺️ Interactive Maps
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://leafletjs.com/" rel="noopener noreferrer"&gt;Leaflet.js&lt;/a&gt;:&lt;/strong&gt; Interactive map rendering and outdoor route visualization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.openstreetmap.org/" rel="noopener noreferrer"&gt;OpenStreetMap&lt;/a&gt;:&lt;/strong&gt; Open map data for exploring outdoor locations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPX export:&lt;/strong&gt; Designed to support saving routes for use with compatible navigation applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚙️ Backend &amp;amp; Deployment
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://nodejs.org/" rel="noopener noreferrer"&gt;Node.js&lt;/a&gt;:&lt;/strong&gt; JavaScript runtime for the backend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://expressjs.com/" rel="noopener noreferrer"&gt;Express.js&lt;/a&gt;:&lt;/strong&gt; REST API and backend routing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://render.com/" rel="noopener noreferrer"&gt;Render&lt;/a&gt;:&lt;/strong&gt; Application hosting and deployment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local storage and offline-friendly web capabilities:&lt;/strong&gt; Intended to keep supported journal data accessible without a continuous internet connection.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;For outdoor applications, open innovation can make a meaningful difference in accessibility, privacy, and reliability.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. 📶 Reliability Beyond Connectivity
&lt;/h3&gt;

&lt;p&gt;Remote trails and forests often have limited network coverage. Local inference and offline-capable features can help users continue supported activities even when connectivity disappears.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. 🔒 Privacy by Design
&lt;/h3&gt;

&lt;p&gt;Processing supported photos, recordings, and location data locally can reduce the need to upload sensitive information to third-party services.&lt;/p&gt;

&lt;p&gt;The long-term goal is to give users more control over their outdoor data and nature observations.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. 💸 Lower Dependence on Paid APIs
&lt;/h3&gt;

&lt;p&gt;Open-weight models can reduce reliance on metered AI services and recurring per-request charges. This creates opportunities to build accessible tools without making every identification dependent on a paid cloud API.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. 🌍 Community-Driven Development
&lt;/h3&gt;

&lt;p&gt;Open-source development allows contributors to improve classification, expand species coverage, refine offline support, and build features that benefit nature enthusiasts everywhere.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 My AI Agent Development Workflow
&lt;/h2&gt;

&lt;p&gt;AI-assisted development workflows supported the project's implementation, testing, and deployment process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DevRelay CLI integration:&lt;/strong&gt; The development session was logged and managed through DevRelay CLI tools.&lt;/p&gt;

&lt;p&gt;The project also provides an opportunity to explore how AI-assisted engineering workflows can help developers prototype and iterate on practical, open-source applications.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏆 Hacktoberfest Challenge Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🌿 &lt;strong&gt;Main Challenge:&lt;/strong&gt; &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Week 1 — Touch Grass&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🤖 &lt;strong&gt;Partner Category:&lt;/strong&gt; Open-Weight AI&lt;/li&gt;
&lt;li&gt;📱 &lt;strong&gt;Partner Category:&lt;/strong&gt; Local / Offline Inference&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;Touch Grass AI is built around a simple idea: technology should help us discover more of the world beyond our screens.&lt;/p&gt;

&lt;p&gt;Future improvements can focus on expanding species coverage, improving model performance, strengthening offline functionality, and making outdoor exploration more accessible.&lt;/p&gt;

&lt;p&gt;If you're interested in open-source AI, nature exploration, offline-first applications, or contributing to projects that encourage healthier technology habits, check out the repository.&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Explore the code:&lt;/strong&gt; &lt;a href="https://github.com/PruthviRajG25/Hacktoberfest-Week1" rel="noopener noreferrer"&gt;https://github.com/PruthviRajG25/Hacktoberfest-Week1&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀Try the application: &lt;a href="https://hacktoberfest-week1.onrender.com" rel="noopener noreferrer"&gt;https://hacktoberfest-week1.onrender.com&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;🌿 Get outside, explore your surroundings, and go touch grass!&lt;/p&gt;

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