<?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: MANAV mishra</title>
    <description>The latest articles on DEV Community by MANAV mishra (@manav_mishra_108).</description>
    <link>https://dev.to/manav_mishra_108</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%2F3310132%2F530f8ef0-92ef-46aa-80be-6a8906fbf19c.png</url>
      <title>DEV Community: MANAV mishra</title>
      <link>https://dev.to/manav_mishra_108</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/manav_mishra_108"/>
    <language>en</language>
    <item>
      <title>SlothSort AI: Let Gemma Clean Your Messy Files So You Don't Have To</title>
      <dc:creator>MANAV mishra</dc:creator>
      <pubDate>Sun, 25 Oct 2026 15:41:28 +0000</pubDate>
      <link>https://dev.to/manav_mishra_108/slothsort-ai-let-gemma-clean-your-messy-files-so-you-dont-have-to-16oh</link>
      <guid>https://dev.to/manav_mishra_108/slothsort-ai-let-gemma-clean-your-messy-files-so-you-dont-have-to-16oh</guid>
      <description>&lt;h1&gt;
  
  
  SlothSort AI: Let Gemma Clean Your Messy Files So You Don't Have To
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;SlothSort AI is a local-first AI file organizer that turns the repetitive job of cleaning up a messy folder into a simple review-and-apply workflow.&lt;/p&gt;

&lt;p&gt;Instead of manually sorting files one by one, SlothSort lets local Gemma generate an organization plan that the user can review before anything changes.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;Select a folder.&lt;/li&gt;
&lt;li&gt;Scan the visible files.&lt;/li&gt;
&lt;li&gt;Let local Gemma generate an organization plan.&lt;/li&gt;
&lt;li&gt;Review the proposed changes.&lt;/li&gt;
&lt;li&gt;Apply the organization only after confirmation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;SlothSort does not read file contents. It uses metadata such as filenames, extensions, file sizes, and modification times to create the organization plan.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://drive.google.com/file/d/13X1HWn7zbp1en4gDqcEbAZfpJyRiqz6b/view?usp=sharing" rel="noopener noreferrer"&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%2Fkfmrtcnboyxoqtahp7b7.png" alt="SlothSort AI Demo" width="800" height="581"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://drive.google.com/file/d/13X1HWn7zbp1en4gDqcEbAZfpJyRiqz6b/view?usp=sharing" rel="noopener noreferrer"&gt;Watch the full SlothSort AI demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The demo shows the complete workflow from creating a fake folder and scanning its files to generating, reviewing, and applying the AI organization plan.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/MANAV-MISHRA-BYTES/slothsort-ai" rel="noopener noreferrer"&gt;View the SlothSort AI source code on GitHub&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;SlothSort AI is built with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;FastAPI&lt;/li&gt;
&lt;li&gt;Pydantic&lt;/li&gt;
&lt;li&gt;Vanilla HTML, CSS, and JavaScript&lt;/li&gt;
&lt;li&gt;Ollama&lt;/li&gt;
&lt;li&gt;Gemma 4 E4B&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The architecture is intentionally lightweight:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User
  ↓
SlothSort UI
  ↓
FastAPI
  ↓
Ollama
  ↓
Gemma 4 E4B
  ↓
Structured JSON plan
  ↓
Pydantic validation
  ↓
Review
  ↓
User confirmation
  ↓
Filesystem changes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The backend scans the selected folder and collects metadata from visible files. That metadata is sent to Gemma through Ollama running locally.&lt;/p&gt;

&lt;p&gt;Gemma returns a structured organization plan, which is validated with Pydantic before being presented to the user.&lt;/p&gt;

&lt;p&gt;Nothing is changed during scanning or planning. Files are only moved after the user reviews the proposed changes and explicitly confirms the operation.&lt;/p&gt;

&lt;p&gt;The backend also rechecks the scan before applying changes, keeps destinations inside the selected root folder, avoids intentional overwrites, and never deletes files.&lt;/p&gt;

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

&lt;p&gt;SlothSort uses Gemma locally through Ollama instead of depending on a proprietary hosted AI API.&lt;/p&gt;

&lt;p&gt;This means the application can perform its AI planning locally without requiring a cloud AI account or API key. File contents are never read, and only file metadata required for organization is provided to the local model.&lt;/p&gt;

&lt;p&gt;Open-weight models make this kind of local-first application possible while giving developers and users more control over the AI component and where their data is processed.&lt;/p&gt;

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

&lt;p&gt;Organizing a messy folder is exactly the kind of repetitive task that is easy to keep postponing.&lt;/p&gt;

&lt;p&gt;SlothSort turns:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Look at file → Decide → Rename → Move → Repeat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;into:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Select folder → Scan → Review AI plan → Confirm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The goal is simple: let local AI handle the repetitive first pass while keeping the user in control of the final changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Safety
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;File contents are never opened or sent to the model.&lt;/li&gt;
&lt;li&gt;Only file metadata is used for AI planning.&lt;/li&gt;
&lt;li&gt;Scanning does not modify files.&lt;/li&gt;
&lt;li&gt;AI-generated plans are validated before they can be applied.&lt;/li&gt;
&lt;li&gt;Applying changes requires explicit user confirmation.&lt;/li&gt;
&lt;li&gt;The backend rechecks files before applying a plan.&lt;/li&gt;
&lt;li&gt;Destination paths must remain inside the selected root folder.&lt;/li&gt;
&lt;li&gt;Existing destination names receive a numbered suffix.&lt;/li&gt;
&lt;li&gt;Files are never intentionally deleted.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Overall&lt;/li&gt;
&lt;li&gt;Best Use of Gemma&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;AI coding tools were used during implementation, debugging, and refinement of the project.&lt;/p&gt;

&lt;p&gt;The project concept, product direction, feature decisions, testing, final review, and submission were human-led.&lt;/p&gt;

&lt;h2&gt;
  
  
  Team
&lt;/h2&gt;

&lt;p&gt;Solo submission.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>QuoteCraft AI is a local-first AI quote generator for freelancers and small service businesses.</title>
      <dc:creator>MANAV mishra</dc:creator>
      <pubDate>Sun, 18 Oct 2026 16:45:29 +0000</pubDate>
      <link>https://dev.to/manav_mishra_108/quotecraft-ai-is-a-local-first-ai-quote-generator-for-freelancers-and-small-service-businesses-mlj</link>
      <guid>https://dev.to/manav_mishra_108/quotecraft-ai-is-a-local-first-ai-quote-generator-for-freelancers-and-small-service-businesses-mlj</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;&lt;strong&gt;QuoteCraft AI&lt;/strong&gt; is a local-first AI quote generator for freelancers and small service businesses.&lt;/p&gt;

&lt;p&gt;Freelancers often receive client requests as messy paragraphs, chat messages, or loosely defined requirements. Turning those requests into a professional quote takes repetitive work: defining the scope, listing deliverables, estimating a timeline, writing pricing notes, specifying exclusions, and preparing a response for the client.&lt;/p&gt;

&lt;p&gt;QuoteCraft turns that process into a single workflow.&lt;/p&gt;

&lt;p&gt;A freelancer enters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Their name&lt;/li&gt;
&lt;li&gt;The service they provide&lt;/li&gt;
&lt;li&gt;The client's request&lt;/li&gt;
&lt;li&gt;The available budget&lt;/li&gt;
&lt;li&gt;The expected deadline&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;QuoteCraft then uses &lt;strong&gt;Gemma 4 E4B running locally through Ollama&lt;/strong&gt; to generate a structured quote containing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Project title and summary&lt;/li&gt;
&lt;li&gt;Scope&lt;/li&gt;
&lt;li&gt;Deliverables&lt;/li&gt;
&lt;li&gt;Timeline&lt;/li&gt;
&lt;li&gt;Pricing note&lt;/li&gt;
&lt;li&gt;Exclusions&lt;/li&gt;
&lt;li&gt;Payment terms&lt;/li&gt;
&lt;li&gt;Client-ready message&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The target user is a freelancer or small service business that wants to spend less time preparing repetitive quotes.&lt;/p&gt;

&lt;p&gt;A freelancer could plausibly pay for this because it removes a small but recurring administrative task from their workflow.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;&lt;a href="https://drive.google.com/file/d/1-FEvWSB5JBfv1WoeFN3z78ffahvghsgJ/view?usp=sharing" rel="noopener noreferrer"&gt;Watch the QuoteCraft AI demo&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The demo shows the complete workflow: entering a realistic restaurant website request, generating a quote with local Gemma inference, and reviewing the resulting scope, deliverables, timeline, pricing, exclusions, payment terms, and client-ready message.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/MANAV-MISHRA-BYTES/quotecraft-ai" rel="noopener noreferrer"&gt;View the QuoteCraft AI source code on GitHub&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The project is released under the MIT License.&lt;/p&gt;

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

&lt;p&gt;QuoteCraft is deliberately lightweight.&lt;/p&gt;

&lt;p&gt;The frontend is a simple web interface, while a Python FastAPI backend handles the request and communicates with Ollama.&lt;/p&gt;

&lt;p&gt;The core flow is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User
  ↓
QuoteCraft frontend
  ↓
FastAPI
  ↓
Ollama
  ↓
Gemma 4 E4B
  ↓
Structured JSON
  ↓
Pydantic validation
  ↓
QuoteCraft UI
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The main technologies are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;FastAPI&lt;/li&gt;
&lt;li&gt;Pydantic&lt;/li&gt;
&lt;li&gt;Vanilla HTML/CSS/JavaScript&lt;/li&gt;
&lt;li&gt;Ollama&lt;/li&gt;
&lt;li&gt;Google Gemma 4 E4B&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Gemma is not an optional add-on. It is the component that turns the client's unstructured requirements into the structured quote that powers the application.&lt;/p&gt;

&lt;p&gt;The application also normalizes model output before Pydantic validation so that common variations in structured LLM responses do not unnecessarily break the quote-generation workflow.&lt;/p&gt;

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

&lt;p&gt;The biggest reason I built QuoteCraft around a local open-weight model is &lt;strong&gt;privacy and cost&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Freelancers can receive sensitive information in client requests: project requirements, business plans, pricing information, internal processes, or other details they may not want to send to an external AI provider.&lt;/p&gt;

&lt;p&gt;With QuoteCraft, the core generation can happen directly on the freelancer's machine.&lt;/p&gt;

&lt;p&gt;Gemma 4 E4B runs locally through Ollama, meaning the application does not require a proprietary hosted AI API for its core generation workflow.&lt;/p&gt;

&lt;p&gt;That provides three important advantages.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Privacy:&lt;/strong&gt; client requirements can remain on the freelancer's computer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cost:&lt;/strong&gt; there is no per-request hosted model API charge for the local generation path.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Control:&lt;/strong&gt; the model and inference stack can be inspected, modified, replaced, or extended by the developer.&lt;/p&gt;

&lt;p&gt;This is where open innovation worked better for this particular product. The goal isn't simply to make another interface around an AI API. It is to make a small business tool that can run with the model itself under the user's control.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Best Use of Gemma
&lt;/h3&gt;

&lt;p&gt;QuoteCraft AI uses Google's open-weight &lt;strong&gt;Gemma 4 E4B&lt;/strong&gt; as the core generative model, running locally through Ollama.&lt;/p&gt;

&lt;p&gt;Gemma transforms unstructured client requirements into structured quote information including scope, deliverables, timeline, pricing notes, exclusions, payment terms, and a client-ready message.&lt;/p&gt;

&lt;p&gt;Because Gemma runs locally, QuoteCraft can generate the core quote without sending the client's project description to a third-party hosted AI API.&lt;/p&gt;

&lt;p&gt;Gemma is therefore not simply an added feature — it is the core AI component responsible for the product's main workflow.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>TrailQuest AI: An AI That Gives You a Reason to Put Your Phone Away 🌿</title>
      <dc:creator>MANAV mishra</dc:creator>
      <pubDate>Sun, 11 Oct 2026 14:24:37 +0000</pubDate>
      <link>https://dev.to/manav_mishra_108/trailquest-ai-an-ai-that-gives-you-a-reason-to-put-your-phone-away-2n3h</link>
      <guid>https://dev.to/manav_mishra_108/trailquest-ai-an-ai-that-gives-you-a-reason-to-put-your-phone-away-2n3h</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%2Flu9nxer6chba5tz0qpnc.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%2Flu9nxer6chba5tz0qpnc.png" alt=" " width="712" height="674"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&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;TrailQuest AI&lt;/strong&gt;, an open-source AI outdoor companion that turns ordinary outdoor time into personalized real-world quests.&lt;/p&gt;

&lt;p&gt;The idea is simple: instead of using AI to keep people on a screen, use AI to help them &lt;strong&gt;get away from the screen&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A user can provide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How much time they have&lt;/li&gt;
&lt;li&gt;An outdoor activity such as walking, photography, exploration or nature observation&lt;/li&gt;
&lt;li&gt;Difficulty&lt;/li&gt;
&lt;li&gt;Approximate location/context&lt;/li&gt;
&lt;li&gt;Personal interests&lt;/li&gt;
&lt;li&gt;Accessibility or physical constraints&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;TrailQuest then generates a structured outdoor quest around those requirements.&lt;/p&gt;

&lt;p&gt;For example, a user could say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I have 45 minutes, want something relaxing near a park, like old trees, street photography and listening to birds, and prefer step-free routes.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The application turns that into a personalized quest with objectives, preparation, completion criteria and safety notes.&lt;/p&gt;
&lt;h3&gt;
  
  
  The main Touch Grass feature: Away Mode
&lt;/h3&gt;

&lt;p&gt;Once the quest starts, TrailQuest deliberately gets out of the way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Away Mode&lt;/strong&gt; shows only one objective at a time instead of keeping the entire quest on screen.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Plan → Go outside → Put your phone away → Complete the quest → Come back → Reflect&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The user reads an objective, puts the phone away, completes it in the real world, and returns when they need the next step.&lt;/p&gt;

&lt;p&gt;TrailQuest is designed for people who want a small, personalized reason to go outside without turning the outdoor activity itself into another screen-based experience.&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://drive.google.com/file/d/1SMzzGpYh0pWMvhGEecu01Osx-SSioc0a/view?usp=sharing" rel="noopener noreferrer"&gt;Watch the TrailQuest AI Demo&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The demo shows the complete flow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Creating a personalized quest&lt;/li&gt;
&lt;li&gt;Generating the quest with Gemma&lt;/li&gt;
&lt;li&gt;Reviewing the generated quest&lt;/li&gt;
&lt;li&gt;Starting Away Mode&lt;/li&gt;
&lt;li&gt;Progressing through the individual objectives&lt;/li&gt;
&lt;li&gt;Completing the quest&lt;/li&gt;
&lt;li&gt;Returning to the reflection screen&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/MANAV-MISHRA-BYTES/trailquest-ai" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The repository contains the complete source code, tests, README, setup instructions and project documentation.&lt;/p&gt;
&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;TrailQuest uses &lt;strong&gt;Gemma 4 E4B&lt;/strong&gt;, an open-weight model, running locally through &lt;strong&gt;Ollama&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The application is structured around a React frontend and a Python/FastAPI backend:&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
      ↓
   FastAPI
      ↓
 QuestService
      ↓
   AIProvider
    ↙     ↘
Ollama   OpenAI-compatible
    ↓
  Gemma 4 E4B
      ↓
Structured Quest JSON
      ↓
Pydantic Validation
      ↓
Safety / Constraint Checks
      ↓
React
      ↓
Away Mode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The frontend is built with &lt;strong&gt;React and Vite&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The backend uses &lt;strong&gt;Python, FastAPI and Pydantic&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The AI layer uses &lt;strong&gt;Gemma 4 E4B through Ollama&lt;/strong&gt;, allowing the model to run locally.&lt;/p&gt;

&lt;p&gt;The generated model response is not displayed directly. It is parsed into structured quest data and validated before reaching the user.&lt;/p&gt;

&lt;p&gt;The application also performs additional checks for things such as duration, difficulty, activity, location/context, accessibility requirements and safety-related content.&lt;/p&gt;

&lt;p&gt;I also separated the AI provider behind an &lt;code&gt;AIProvider&lt;/code&gt; interface. This allows the project to use Ollama locally while also supporting an OpenAI-compatible provider such as LM Studio.&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing
&lt;/h3&gt;

&lt;p&gt;Before submitting, I verified both the automated tests and the real browser flow.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;75 backend tests passing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;5 frontend tests passing&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Production frontend build passing&lt;/li&gt;
&lt;li&gt;FastAPI startup verified&lt;/li&gt;
&lt;li&gt;Real browser → FastAPI → Ollama → Gemma → validation → React flow tested&lt;/li&gt;
&lt;li&gt;Away Mode tested through the complete quest&lt;/li&gt;
&lt;li&gt;Objective progression tested&lt;/li&gt;
&lt;li&gt;Reload persistence tested&lt;/li&gt;
&lt;li&gt;Abandon/end-early flow tested&lt;/li&gt;
&lt;li&gt;Quest completion and reflection tested&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also manually generated a real quest using Gemma from the browser and took it through the complete Away Mode experience.&lt;/p&gt;

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

&lt;p&gt;Open innovation is important to TrailQuest because the core AI experience does not need to depend on a proprietary hosted API.&lt;/p&gt;

&lt;p&gt;With Gemma running locally through Ollama, users can run the AI on their own hardware and experiment with the model and inference stack themselves.&lt;/p&gt;

&lt;p&gt;This makes it possible to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run AI locally&lt;/li&gt;
&lt;li&gt;Experiment with different open-weight models&lt;/li&gt;
&lt;li&gt;Change the inference runtime&lt;/li&gt;
&lt;li&gt;Modify the prompts and generation pipeline&lt;/li&gt;
&lt;li&gt;Inspect and modify the application&lt;/li&gt;
&lt;li&gt;Avoid making a proprietary AI provider a mandatory dependency&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also gives the application a useful separation of responsibilities.&lt;/p&gt;

&lt;p&gt;The model generates the language and ideas for the quest, while the application remains responsible for structure, validation, constraints, persistence and safety checks.&lt;/p&gt;

&lt;p&gt;For an application involving personal preferences, accessibility requirements and outdoor context, having the option to keep the AI generation local is particularly useful.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Best Use of Gemma&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;TrailQuest uses &lt;strong&gt;Gemma 4 E4B&lt;/strong&gt; as the core generative model for creating personalized outdoor quests, with local inference through Ollama.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>I Built a Local AI Study Organizer for My Friend's Messy PDF Library</title>
      <dc:creator>MANAV mishra</dc:creator>
      <pubDate>Sun, 04 Oct 2026 16:25:20 +0000</pubDate>
      <link>https://dev.to/manav_mishra_108/i-built-a-local-ai-study-organizer-for-my-friends-messy-pdf-library-3p6m</link>
      <guid>https://dev.to/manav_mishra_108/i-built-a-local-ai-study-organizer-for-my-friends-messy-pdf-library-3p6m</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%2Fvfu3tq830ybjpzdoo3j9.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%2Fvfu3tq830ybjpzdoo3j9.png" alt=" " width="800" height="414"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;A friend of mine has a large collection of study PDFs spread across different folders. The problem wasn't a lack of study material. The problem was finding the right material quickly and knowing what each document actually contained.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;StudyShelf AI&lt;/strong&gt;, a local-first study organizer that uses an open-weight AI model to turn a messy collection of study PDFs into an organized, searchable study shelf.&lt;/p&gt;

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

&lt;p&gt;Instead of manually opening dozens of PDFs to figure out what they contain, upload them to StudyShelf AI and let local AI organize them.&lt;/p&gt;

&lt;p&gt;For each document, the application generates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Subject/category&lt;/li&gt;
&lt;li&gt;Relevant tags&lt;/li&gt;
&lt;li&gt;Priority&lt;/li&gt;
&lt;li&gt;Short summary&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result is a much easier way to understand and search through a large study library.&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Video demo:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://drive.google.com/file/d/1q64ynhZF2pMHWX_bANhDKShb16rIvD0h/view?usp=sharing" rel="noopener noreferrer"&gt;Watch the StudyShelf AI demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The demo shows the complete workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Running the Qwen model locally through LM Studio&lt;/li&gt;
&lt;li&gt;Opening the StudyShelf AI application&lt;/li&gt;
&lt;li&gt;Uploading a study PDF&lt;/li&gt;
&lt;li&gt;Extracting the PDF text locally&lt;/li&gt;
&lt;li&gt;Sending the extracted text to the local AI model&lt;/li&gt;
&lt;li&gt;Generating the category, tags, priority and summary&lt;/li&gt;
&lt;li&gt;Adding the document to the searchable study shelf&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitHub repository:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;MANAV-MISHRA-BYTES/StudyShelf-AI&lt;/strong&gt;&lt;br&gt;
(&lt;a href="https://github.com/MANAV-MISHRA-BYTES/StudyShelf-AI" rel="noopener noreferrer"&gt;https://github.com/MANAV-MISHRA-BYTES/StudyShelf-AI&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;The complete source code, requirements, setup instructions and project documentation are available in the repository.&lt;/p&gt;
&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;StudyShelf AI is built with Python and Streamlit.&lt;/p&gt;

&lt;p&gt;The core pipeline is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Study PDF
   ↓
PyMuPDF
   ↓
Local text extraction
   ↓
LM Studio
   ↓
Qwen3.8 9B
   ↓
Category + Tags + Priority + Summary
   ↓
Searchable Study Shelf
   ↓
CSV Export
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ul&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;Streamlit&lt;/li&gt;
&lt;li&gt;PyMuPDF&lt;/li&gt;
&lt;li&gt;Pandas&lt;/li&gt;
&lt;li&gt;Requests&lt;/li&gt;
&lt;li&gt;LM Studio&lt;/li&gt;
&lt;li&gt;Qwen3.8 9B Q5_K_M&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;PyMuPDF&lt;/strong&gt; handles local text extraction from PDF files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Streamlit&lt;/strong&gt; provides the user interface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Requests&lt;/strong&gt; communicates with the local LM Studio API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pandas&lt;/strong&gt; is used to organize and export the generated document index.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LM Studio&lt;/strong&gt; runs the open-weight model locally and provides the local API used by the application.&lt;/p&gt;

&lt;p&gt;For this project, I used &lt;strong&gt;Qwen3.8 9B Q5_K_M&lt;/strong&gt; through LM Studio.&lt;/p&gt;

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

&lt;p&gt;Open-weight AI was important to this project because the application deals with study documents that may contain private notes, assignments, personal annotations and other information that a student may not want to upload to a third-party AI service.&lt;/p&gt;

&lt;p&gt;With StudyShelf AI, the core document organization workflow can remain on the user's computer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Study PDF
   ↓
Local text extraction
   ↓
Local LM Studio server
   ↓
Open-weight Qwen model
   ↓
Document organization
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There is no requirement for a cloud AI API for the core organization task.&lt;/p&gt;

&lt;p&gt;This gives the user more control over their study material and avoids sending the documents to an external AI service just to categorize and summarize them.&lt;/p&gt;

&lt;p&gt;It also means the model can be changed or upgraded without rebuilding the entire application around a proprietary API.&lt;/p&gt;

&lt;p&gt;For this project, open AI was not just a requirement of the challenge. Local inference directly supported the privacy goal of the application.&lt;/p&gt;

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

&lt;p&gt;One of the biggest lessons from this project was that a useful AI application does not necessarily need to be huge.&lt;/p&gt;

&lt;p&gt;I initially considered building a much larger study assistant with RAG, a database, authentication, question answering and several other features.&lt;/p&gt;

&lt;p&gt;But that would have added complexity without solving the immediate problem better.&lt;/p&gt;

&lt;p&gt;Instead, I focused on one useful workflow:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Take a messy collection of study PDFs and make it understandable.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That kept the application small enough to build during the challenge while keeping the AI component central to the solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Current Limitations
&lt;/h2&gt;

&lt;p&gt;StudyShelf AI is currently an MVP, so there are several things it does not do yet:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scanned or image-only PDFs are not currently OCR'd.&lt;/li&gt;
&lt;li&gt;It does not yet provide full RAG-based question answering.&lt;/li&gt;
&lt;li&gt;The organized library is not currently persisted in a database.&lt;/li&gt;
&lt;li&gt;The application expects a local LM Studio-compatible server.&lt;/li&gt;
&lt;li&gt;Search currently operates on generated document metadata rather than performing semantic search across the full document contents.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These limitations also provide a clear path for future versions.&lt;/p&gt;

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

&lt;p&gt;Some improvements I would like to add in future versions are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OCR support for scanned documents&lt;/li&gt;
&lt;li&gt;Persistent document libraries&lt;/li&gt;
&lt;li&gt;Semantic search&lt;/li&gt;
&lt;li&gt;RAG-based question answering&lt;/li&gt;
&lt;li&gt;Flashcard generation&lt;/li&gt;
&lt;li&gt;Quiz generation&lt;/li&gt;
&lt;li&gt;Automatic revision scheduling&lt;/li&gt;
&lt;li&gt;Duplicate document detection&lt;/li&gt;
&lt;li&gt;Better document previews&lt;/li&gt;
&lt;li&gt;Support for additional local open-weight models&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Hacktoberfest
&lt;/h2&gt;

&lt;p&gt;StudyShelf AI was built for the &lt;strong&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The project addresses a real study-organization problem for a friend while using an open-weight AI model and local inference at the core of the solution.&lt;/p&gt;

&lt;p&gt;The challenge encouraged building something useful for a real person rather than simply building a large project for the sake of complexity.&lt;/p&gt;

&lt;p&gt;I therefore focused on one small but practical problem: making a large collection of study material easier to understand and navigate.&lt;/p&gt;

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

&lt;p&gt;No partner category is being claimed for this submission.&lt;/p&gt;

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

&lt;p&gt;No agent session is being submitted.&lt;/p&gt;




&lt;p&gt;Thanks for checking out StudyShelf AI.&lt;/p&gt;

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