<?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: Tanmay Dalvi</title>
    <description>The latest articles on DEV Community by Tanmay Dalvi (@tanmay3929).</description>
    <link>https://dev.to/tanmay3929</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%2F4169478%2F6a48d59f-46bf-4f29-9e02-1a0cfcd65aef.png</url>
      <title>DEV Community: Tanmay Dalvi</title>
      <link>https://dev.to/tanmay3929</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tanmay3929"/>
    <language>en</language>
    <item>
      <title>Echoes: A Private Memory Garden Powered by Local AI</title>
      <dc:creator>Tanmay Dalvi</dc:creator>
      <pubDate>Wed, 28 Oct 2026 15:35:33 +0000</pubDate>
      <link>https://dev.to/tanmay3929/echoes-a-private-memory-garden-powered-by-local-ai-3hb</link>
      <guid>https://dev.to/tanmay3929/echoes-a-private-memory-garden-powered-by-local-ai-3hb</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week4-2026-10-26"&gt;Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;What if the most important things we preserve with AI aren't generated images, productivity metrics, or chat histories—but the stories of the people we love?&lt;/p&gt;

&lt;p&gt;Family traditions, childhood memories, the sound of a grandparent telling an old story, and the little moments that shaped us can easily disappear with time. Yet sharing these deeply personal memories with cloud-based AI raises an important question: &lt;strong&gt;Should preserving our memories require giving up control over them?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That question inspired me to build &lt;strong&gt;Echoes — a private digital memory garden powered by open-weight AI.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;Echoes is a local-first memory archive designed to help people preserve family stories, oral histories, personal milestones, and meaningful moments.&lt;/p&gt;

&lt;p&gt;Users can record memories with dates, people, places, categories, and tags, then explore them through a searchable archive or chronological timeline.&lt;/p&gt;

&lt;p&gt;Echoes also uses a locally running open-weight model to help transform saved memories into thoughtful, structured keepsakes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Memory Garden:&lt;/strong&gt; Preserve and organize personal stories in one place.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chronological Timeline:&lt;/strong&gt; Revisit memories across years without inventing dates for undated recollections.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Reflections:&lt;/strong&gt; Generate remembrance cards, reflective tributes, grounded summaries, and oral-history narratives.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;People and Places:&lt;/strong&gt; Keep the context surrounding each memory connected to its story.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backup and Restore:&lt;/strong&gt; Export memories as portable JSON and restore them with duplicate-conflict handling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fictional Demo Archive:&lt;/strong&gt; Explore the experience using sample stories rather than anyone's personal memories.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The design deliberately avoids pretending to recreate deceased people or simulate their consciousness. Echoes works with the memories people choose to preserve—not fabricated messages from those who are gone.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh6fto1oipwmtvefknsc9.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%2Fh6fto1oipwmtvefknsc9.png" alt="The Memory Garden — a searchable, organized home for the stories that matter." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Try Echoes:&lt;/strong&gt; &lt;a href="https://echoes-frontend-1mss.onrender.com/" rel="noopener noreferrer"&gt;https://echoes-frontend-1mss.onrender.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source code:&lt;/strong&gt; &lt;a href="https://github.com/Tanmay-Dalvi/echoes" rel="noopener noreferrer"&gt;https://github.com/Tanmay-Dalvi/echoes&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the best first look, explore the fictional demo archive, open the timeline, and visit the AI Reflections and Backup &amp;amp; Data sections.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcob9alakzvj4cpvr6jml.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%2Fcob9alakzvj4cpvr6jml.png" alt="screenshot" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F58w5ilap65r61k08nfn9.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%2F58w5ilap65r61k08nfn9.png" alt="A chronological journey through personal histories, traditions, and milestones." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F88uql8wppeyblcopfqbu.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%2F88uql8wppeyblcopfqbu.png" alt="Portable backups and user-controlled memory restoration." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The central design decision was to keep the AI component replaceable and support local inference through &lt;strong&gt;Ollama with the open-weight &lt;code&gt;gemma3:1b&lt;/code&gt; model&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The application combines a web interface, a backend API, local database storage, and an AI provider layer. The local installation is designed to keep saved memories on the user's machine while using the locally running model for AI-assisted writing.&lt;/p&gt;

&lt;p&gt;The major components are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; React, TypeScript, and Vite.&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 storage:&lt;/strong&gt; SQLite with full-text search indexing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI inference:&lt;/strong&gt; Ollama running &lt;code&gt;gemma3:1b&lt;/code&gt; locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI tasks:&lt;/strong&gt; Remembrance cards, reflective writing, grounded summarization, and oral-history narratives.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data portability:&lt;/strong&gt; JSON export and validated restore workflows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment:&lt;/strong&gt; Render-hosted web demo, with local inference remaining a separate deployment mode.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The architecture is intentionally modular: the memory archive is useful on its own, while AI adds another way to revisit and reflect on preserved stories.&lt;/p&gt;

&lt;h3&gt;
  
  
  Architecture
&lt;/h3&gt;

&lt;p&gt;The following diagram describes the intended local installation. The Render demo is a separate deployment mode and must not be assumed to have access to Ollama running on a user's computer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe4t7klopsl2qy6c09x8x.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%2Fe4t7klopsl2qy6c09x8x.png" alt="architecture" width="800" height="2010"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;For Echoes, open innovation is not just about choosing a different model. It changes the relationship between the user, their memories, and the technology processing them.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Personal stories deserve privacy
&lt;/h3&gt;

&lt;p&gt;A family memory can contain names, relationships, locations, grief, and details that were never meant for a third-party service.&lt;/p&gt;

&lt;p&gt;With local inference, the model can process memories on the same machine where the application runs. The local architecture avoids sending those memories to a remote AI provider for inference.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. AI should remain replaceable
&lt;/h3&gt;

&lt;p&gt;Using an open-weight model through Ollama gives developers greater control over their inference environment. Models can be evaluated, replaced, and adapted as requirements evolve, without designing the entire product around one proprietary model API.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The experience can work without cloud inference
&lt;/h3&gt;

&lt;p&gt;Once the application and model are installed locally, the core memory archive and supported AI features can work without an internet connection, provided the required dependencies and model are already available.&lt;/p&gt;

&lt;p&gt;That makes local-first AI especially meaningful for a tool whose purpose is to preserve personal history rather than depend on a continuously available cloud service.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. The user should own the archive
&lt;/h3&gt;

&lt;p&gt;Portable JSON export and restore make memories easier to back up and move. The archive should remain useful even when a particular model, hosting provider, or AI service is unavailable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open innovation gives Echoes a path toward privacy, portability, and user control that a cloud-only architecture would make harder to achieve.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;The theme &lt;em&gt;Ghost in the Machine&lt;/em&gt; naturally brings to mind haunted technology, simulated personalities, and machines that appear to remember.&lt;/p&gt;

&lt;p&gt;I wanted to explore a quieter interpretation.&lt;/p&gt;

&lt;p&gt;The most meaningful echoes aren't artificial voices claiming to be someone we've lost. They are the real stories that person left behind: a recipe, a family tradition, an unforgettable afternoon, a lesson, or a small detail that would otherwise fade.&lt;/p&gt;

&lt;p&gt;AI can help us organize and reflect on those stories, but it should never replace the person behind them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Echoes is my attempt to build technology that helps memories stay human.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;I'd like to keep improving Echoes with stronger local-model support, more robust backup and recovery, accessibility improvements, and additional ways to preserve oral histories while maintaining the project's privacy-first principles.&lt;/p&gt;

&lt;p&gt;The long-term goal is simple: make it easier for people to preserve the stories they want future generations to remember.&lt;/p&gt;

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

&lt;p&gt;Built for the &lt;strong&gt;Hacktoberfest Open-Source AI Challenge — Week 4: Ghost in the Machine&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://echoes-frontend-1mss.onrender.com" rel="noopener noreferrer"&gt;https://echoes-frontend-1mss.onrender.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Tanmay-Dalvi/echoes" rel="noopener noreferrer"&gt;https://github.com/Tanmay-Dalvi/echoes&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'd love feedback on the local-first architecture, the memory-preservation experience, and how open-weight AI can be used responsibly for deeply personal applications.&lt;/p&gt;

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

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>SlothSort: I Built a Local-First AI File Organizer That Asks Before It Moves Anything</title>
      <dc:creator>Tanmay Dalvi</dc:creator>
      <pubDate>Thu, 22 Oct 2026 14:53:03 +0000</pubDate>
      <link>https://dev.to/tanmay3929/slothsort-i-built-a-local-first-ai-file-organizer-that-asks-before-it-moves-anything-5h00</link>
      <guid>https://dev.to/tanmay3929/slothsort-i-built-a-local-first-ai-file-organizer-that-asks-before-it-moves-anything-5h00</guid>
      <description>&lt;p&gt;&lt;strong&gt;Hacktoberfest Open-Source AI Challenge 2026 — Week 3: Slow and Steady&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ever opened your Downloads folder and found &lt;code&gt;final_v2_REAL.pdf&lt;/code&gt;, &lt;code&gt;screenshot_2026.png&lt;/code&gt;, &lt;code&gt;backup.zip&lt;/code&gt;, and a bunch of files you promised yourself you'd organize someday? 😅&lt;/p&gt;

&lt;p&gt;That tiny organizational task somehow becomes a whole afternoon.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;SlothSort&lt;/strong&gt; — an AI-powered file organizer designed to make that process safer, simpler, and less tedious.&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://slothsort-web.onrender.com/" rel="noopener noreferrer"&gt;https://slothsort-web.onrender.com/&lt;/a&gt;&lt;br&gt;&lt;br&gt;
💻 &lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="https://github.com/Tanmay-Dalvi/slothsort" rel="noopener noreferrer"&gt;https://github.com/Tanmay-Dalvi/slothsort&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🧩 What is SlothSort?
&lt;/h2&gt;

&lt;p&gt;SlothSort scans a selected folder, analyzes file metadata, and proposes an organization plan with suggested destination folders and filenames.&lt;/p&gt;

&lt;p&gt;But there's one important difference from a fully autonomous file agent:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The AI proposes. Deterministic code validates. You approve.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Files aren't moved just because a model suggested something. You can inspect the plan, edit individual destinations, select which operations to approve, and execute only after confirmation.&lt;/p&gt;

&lt;p&gt;And if you change your mind, SlothSort supports undo for eligible operations.&lt;/p&gt;

&lt;h2&gt;
  
  
  📸 Screenshots
&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%2Fgd3sbg25ep53i6urckah.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%2Fgd3sbg25ep53i6urckah.png" alt="SlothSort dashboard" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The main dashboard, provider selection, and folder scanning interface.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzpw9b8i6sta3iwxvo57g.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%2Fzpw9b8i6sta3iwxvo57g.png" alt="SlothSort organization plan" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Review proposed file moves and destinations before approving them.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkkn1uo1ltx1nmig38cp5.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%2Fkkn1uo1ltx1nmig38cp5.png" alt="SlothSort execution result" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;An execution result showing the completed batch and available undo action.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj2di9gg6sb88eseuojoz.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%2Fj2di9gg6sb88eseuojoz.png" alt="SlothSort history and undo" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Operation history and the ability to reverse eligible changes.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;These are placeholders. Replace each &lt;code&gt;ADD_SCREENSHOT_URL_X_HERE&lt;/code&gt; with the corresponding uploaded image URL before publishing.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  ✨ Key Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI-assisted organization:&lt;/strong&gt; Generate proposed categories, destination paths, and filenames.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local AI with Ollama:&lt;/strong&gt; Run inference locally using an available model such as &lt;code&gt;gemma3:1b&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optional hosted provider:&lt;/strong&gt; Google Gemini can be selected explicitly when cloud processing is acceptable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic validation:&lt;/strong&gt; Validate proposed operations before execution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human approval:&lt;/strong&gt; Review, edit, and select proposed operations before applying them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collision protection:&lt;/strong&gt; Detect conflicts instead of silently overwriting existing files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Undo and history:&lt;/strong&gt; Track operations and reverse eligible batches.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safety-focused design:&lt;/strong&gt; No file deletion operation is part of the intended organization workflow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Demo mode:&lt;/strong&gt; Test the workflow with a dedicated sample folder instead of risking personal files.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🔐 Why local-first AI?
&lt;/h2&gt;

&lt;p&gt;File metadata can reveal more than we realize. Filenames may contain names, project details, financial information, or other personal context.&lt;/p&gt;

&lt;p&gt;That's why provider choice matters.&lt;/p&gt;

&lt;p&gt;SlothSort supports three modes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic Mock:&lt;/strong&gt; Rule-based suggestions for testing and demonstrations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Ollama:&lt;/strong&gt; Model inference runs on your machine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hosted Gemini:&lt;/strong&gt; Sends the metadata required by the implementation to Google's API.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The local option helps keep processing on-device. The hosted option is explicit rather than a silent fallback.&lt;/p&gt;

&lt;p&gt;One important distinction: local inference does not automatically mean every part of an application is network-free. The privacy boundary depends on the selected provider and application configuration.&lt;/p&gt;

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

&lt;p&gt;I wanted to avoid giving an AI model unrestricted control over filesystem operations.&lt;/p&gt;

&lt;p&gt;The system separates suggestions from execution:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Scan an authorized directory and collect file metadata.&lt;/li&gt;
&lt;li&gt;Ask the selected provider to propose an organization plan.&lt;/li&gt;
&lt;li&gt;Validate the proposed paths and operations deterministically.&lt;/li&gt;
&lt;li&gt;Let the user review and approve the plan.&lt;/li&gt;
&lt;li&gt;Execute the approved operations.&lt;/li&gt;
&lt;li&gt;Record the results so eligible operations can be undone.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Architecture at a glance
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuo6kcbuocj6e6lvk5wri.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%2Fuo6kcbuocj6e6lvk5wri.png" alt="SlothSort architecture" width="800" height="1458"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Architecture diagram: frontend, API, provider layer, validation, execution, and undo.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 Technology Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; React, TypeScript, Vite, Tailwind CSS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Python, FastAPI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local AI:&lt;/strong&gt; Ollama with Gemma&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hosted AI:&lt;/strong&gt; Optional Google Gemini API integration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing:&lt;/strong&gt; Pytest and Vitest&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment:&lt;/strong&gt; Render for the hosted web interface&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🛠️ Challenges I Worked Through
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Keeping AI suggestions separate from file operations
&lt;/h3&gt;

&lt;p&gt;A model response should never be treated as trusted filesystem instructions. The application needs deterministic validation and an explicit approval boundary.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Making undo safer
&lt;/h3&gt;

&lt;p&gt;Undo is not simply moving everything back blindly. If a file has changed or a destination is no longer safe, restoration needs to respect those conditions rather than overwrite unrelated data.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Explaining privacy honestly
&lt;/h3&gt;

&lt;p&gt;Local inference, hosted inference, backend connectivity, and browser connectivity are different things. I wanted the UI to make provider selection and metadata handling visible instead of hiding them behind a generic “AI is working” message.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Making the project reproducible
&lt;/h3&gt;

&lt;p&gt;A project is more useful to the open-source community when contributors can understand the architecture, run tests, and try a safe demo without pointing it at their real files.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧪 Try It Yourself
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Live interface:&lt;/strong&gt; &lt;a href="https://slothsort-web.onrender.com/" rel="noopener noreferrer"&gt;https://slothsort-web.onrender.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href="https://github.com/Tanmay-Dalvi/slothsort" rel="noopener noreferrer"&gt;https://github.com/Tanmay-Dalvi/slothsort&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The hosted interface is deployed on Render. Because SlothSort's real file operations depend on a backend with access to the target filesystem, use the documented local setup and demo workflow for actual filesystem operations. Do not assume the public website can access files on your computer.&lt;/p&gt;

&lt;p&gt;For a safe first test:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Clone the repository.&lt;/li&gt;
&lt;li&gt;Follow the setup instructions in the README.&lt;/li&gt;
&lt;li&gt;Configure a supported provider.&lt;/li&gt;
&lt;li&gt;Use the dedicated demo folder.&lt;/li&gt;
&lt;li&gt;Scan, generate a plan, review it, and approve selected operations.&lt;/li&gt;
&lt;li&gt;Test undo after execution.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  🌱 What I Want to Improve Next
&lt;/h2&gt;

&lt;p&gt;There is still room to improve SlothSort:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better categorization for ambiguous files.&lt;/li&gt;
&lt;li&gt;More comprehensive collision and recovery tests.&lt;/li&gt;
&lt;li&gt;A polished first-run experience.&lt;/li&gt;
&lt;li&gt;Automated CI for pull requests.&lt;/li&gt;
&lt;li&gt;Better visual documentation and onboarding.&lt;/li&gt;
&lt;li&gt;Clearer provider-specific privacy reporting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'd love feedback on the workflow, safety model, and what would make this more useful for everyday file organization.&lt;/p&gt;

&lt;h2&gt;
  
  
  🤝 Contributing
&lt;/h2&gt;

&lt;p&gt;SlothSort is open source, and contributions around testing, usability, documentation, and safe file operations are welcome.&lt;/p&gt;

&lt;p&gt;Check the repository for setup and contribution guidelines:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Tanmay-Dalvi/slothsort" rel="noopener noreferrer"&gt;https://github.com/Tanmay-Dalvi/slothsort&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;I wanted to build something that uses AI without turning every action into an unpredictable autonomous decision.&lt;/p&gt;

&lt;p&gt;SlothSort is built around a simple principle:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let AI suggest the plan. Let deterministic code enforce the rules. Let the human make the final decision.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Slow and steady — and no files moved without your approval.&lt;/p&gt;

&lt;p&gt;If you try it, I'd appreciate your feedback!&lt;/p&gt;

&lt;h1&gt;
  
  
  Hacktoberfest #OpenSource #AI #Python #React #Ollama #Gemma #DevTools
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Batchwise: Turning Messy Food Business Expenses into Real Profit Insights 🇮🇳</title>
      <dc:creator>Tanmay Dalvi</dc:creator>
      <pubDate>Sat, 17 Oct 2026 10:12:29 +0000</pubDate>
      <link>https://dev.to/tanmay3929/batchwise-turning-messy-food-business-expenses-into-real-profit-insights-3dda</link>
      <guid>https://dev.to/tanmay3929/batchwise-turning-messy-food-business-expenses-into-real-profit-insights-3dda</guid>
      <description>&lt;p&gt;&lt;strong&gt;Every batch. Every cost. Every rupee.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What if a home baker or a small snack seller could stop guessing their profits and actually understand the numbers behind every production batch?&lt;/p&gt;

&lt;p&gt;That question inspired me to build &lt;strong&gt;Batchwise&lt;/strong&gt;, an AI-assisted costing and profit intelligence tool designed for India's home-based food businesses.&lt;/p&gt;

&lt;p&gt;Built for the &lt;strong&gt;Hacktoberfest 2026 Week 2 — Side Hustle Challenge&lt;/strong&gt;, Batchwise combines AI-powered note parsing with deterministic financial calculations to help small business owners understand their costs, pricing, and profitability.&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://batchwise-henna.vercel.app/" rel="noopener noreferrer"&gt;https://batchwise-henna.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💻 &lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/Tanmay-Dalvi/batchwise" rel="noopener noreferrer"&gt;https://github.com/Tanmay-Dalvi/batchwise&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The Problem: Revenue Isn't Profit
&lt;/h2&gt;

&lt;p&gt;Imagine running a small homemade ladoo business.&lt;/p&gt;

&lt;p&gt;You buy besan, oil, packaging materials, and other ingredients. You spend money on gas, electricity, labour, and transportation. Then you sell your products.&lt;/p&gt;

&lt;p&gt;At the end of the day, you know how much money you received. But do you know how much you actually earned?&lt;/p&gt;

&lt;p&gt;Many small food businesses still rely on notebooks, rough estimates, or manual calculations. Costs get missed, profit margins become unclear, and selling prices may not cover the actual production expenses.&lt;/p&gt;

&lt;p&gt;I wanted to build something that could make these calculations simpler, more transparent, and more reliable.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Meet Batchwise
&lt;/h2&gt;

&lt;p&gt;Batchwise is an AI-assisted costing and profit tracking application for home bakers, homemade snack sellers, tiffin services, and other small food businesses.&lt;/p&gt;

&lt;p&gt;The name has a simple meaning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Batch&lt;/strong&gt; means one real production run, whether it is a batch of ladoos, a set of bread loaves, or a day's tiffin orders.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wise&lt;/strong&gt; represents making informed, data-driven financial decisions instead of relying on guesswork.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together, Batchwise means making smarter business decisions, one production batch at a time.&lt;/p&gt;

&lt;p&gt;Its core promise is simple: &lt;strong&gt;Every batch. Every cost. Every rupee.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fitj5ntkv09etjp09eevd.jpeg" 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%2Fitj5ntkv09etjp09eevd.jpeg" alt="The Batchwise homepage, designed around the needs of India's home-based food businesses." width="576" height="1280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Cost Every Batch, Not Just Every Ingredient
&lt;/h2&gt;

&lt;p&gt;The Batch Costing Engine lets users enter ingredients, quantities, purchase pack sizes, purchase prices, packaging, labour, fuel, delivery, and other expenses.&lt;/p&gt;

&lt;p&gt;It converts purchase costs into the quantities actually used in a batch, then calculates the financial results using Python's Decimal arithmetic.&lt;/p&gt;

&lt;p&gt;Users can see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Total production cost&lt;/li&gt;
&lt;li&gt;Cost per sellable unit&lt;/li&gt;
&lt;li&gt;Break-even selling price&lt;/li&gt;
&lt;li&gt;Projected revenue and net profit&lt;/li&gt;
&lt;li&gt;Profit margin versus markup&lt;/li&gt;
&lt;li&gt;Break-even sales volume&lt;/li&gt;
&lt;li&gt;Target-margin pricing recommendations&lt;/li&gt;
&lt;li&gt;A transparent calculation audit trail&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Users can also save recipes, reuse them for future batches, and maintain a history of recorded production runs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft43jjzem9oc06av426y0.jpeg" 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%2Ft43jjzem9oc06av426y0.jpeg" alt="Enter ingredients, purchase quantities, pack sizes, and production expenses in one workspace." width="576" height="1280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  A real calculation
&lt;/h3&gt;

&lt;p&gt;Consider a sample batch with these costs:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Besan&lt;/td&gt;
&lt;td&gt;₹600&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Oil&lt;/td&gt;
&lt;td&gt;₹180&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Packaging&lt;/td&gt;
&lt;td&gt;₹80&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total batch cost&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;₹860&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Suppose the batch produces 75 sellable packets, each priced at ₹25.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Cost per packet&lt;/td&gt;
&lt;td&gt;₹11.47&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Projected revenue&lt;/td&gt;
&lt;td&gt;₹1,875&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Projected profit&lt;/td&gt;
&lt;td&gt;₹1,015&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Profit margin&lt;/td&gt;
&lt;td&gt;54.13%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Markup on cost&lt;/td&gt;
&lt;td&gt;118.02%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Break-even quantity&lt;/td&gt;
&lt;td&gt;35 packets&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These figures assume all 75 packets are sold at the planned price, with no additional costs beyond those entered.&lt;/p&gt;

&lt;p&gt;An important distinction: profit margin measures profit as a percentage of revenue, while markup measures profit as a percentage of cost. They are not interchangeable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpjkk2mbwsh1axoleaf9b.jpeg" 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%2Fpjkk2mbwsh1axoleaf9b.jpeg" alt="Batchwise makes costs, break-even points, profit margins, and markup visible instead of leaving them to guesswork." width="576" height="1280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6tc7jhw9yrwmmm6yqgzo.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%2F6tc7jhw9yrwmmm6yqgzo.png" alt="The Batchwise architecture separates the user interface, backend API, data persistence, AI provider, and deterministic calculation engine." width="800" height="920"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. From Messy Notes to Structured Data with AI
&lt;/h2&gt;

&lt;p&gt;One of the most useful features is the AI Note Parser.&lt;/p&gt;

&lt;p&gt;Small business owners don't always record expenses in a neat spreadsheet. They might write something like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Sourdough batch: 2 kg flour 140, yeast 30, butter 120, electricity 50, baked 8 loaves, selling for 90 each.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Manually converting that note into structured ingredient entries takes time.&lt;/p&gt;

&lt;p&gt;Batchwise uses AI to extract candidate fields from natural-language notes and prepare them for the costing workspace.&lt;/p&gt;

&lt;p&gt;The important part is that the AI does &lt;strong&gt;not&lt;/strong&gt; get to decide the final financial result.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;The user pastes a purchase or production note.&lt;/li&gt;
&lt;li&gt;The AI extracts candidate ingredients, quantities, prices, and yield information.&lt;/li&gt;
&lt;li&gt;Batchwise highlights missing or ambiguous information.&lt;/li&gt;
&lt;li&gt;The user reviews and corrects the extracted fields.&lt;/li&gt;
&lt;li&gt;The confirmed information is transferred into the costing workspace.&lt;/li&gt;
&lt;li&gt;Python performs the actual financial calculations.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For example, a note that says “yeast 30” does not establish how much yeast was used. Batchwise can flag the missing quantity instead of silently treating an assumption as fact.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fucdfnq0c9wlnrkmj1dym.jpeg" 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%2Fucdfnq0c9wlnrkmj1dym.jpeg" alt="Natural-language input lets users start with the notes they already have.*" width="576" height="1280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuadsxkccvcw170wvucl3.jpeg" 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%2Fuadsxkccvcw170wvucl3.jpeg" alt="Extracted values remain editable, and ambiguous quantities are flagged for human verification before calculation." width="576" height="1280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnlaz49685d4sg4n1c8ur.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%2Fnlaz49685d4sg4n1c8ur.png" alt="AI extracts candidate data, the user verifies it, and the deterministic engine calculates the financial results." width="800" height="1132"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Why Deterministic Math Matters
&lt;/h2&gt;

&lt;p&gt;AI is useful for understanding unstructured language, but financial calculations need to be predictable and verifiable.&lt;/p&gt;

&lt;p&gt;That is why Batchwise separates &lt;strong&gt;AI-based extraction&lt;/strong&gt; from &lt;strong&gt;financial computation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The AI helps interpret what the user wrote. The Python calculation engine handles the numbers.&lt;/p&gt;

&lt;p&gt;The engine uses Decimal arithmetic to avoid common binary floating-point representation issues in monetary calculations. It validates units, rejects invalid production yields, and maintains a calculation audit trail.&lt;/p&gt;

&lt;p&gt;This separation makes the results easier to verify and reduces the risk of an AI-generated numerical answer being mistaken for an accurate financial calculation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffy83d6wuxirpfzqsp03a.jpg" 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%2Ffy83d6wuxirpfzqsp03a.jpg" alt="AI interprets the note; validated inputs and deterministic arithmetic produce the financial results." width="800" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Built Local-First, with Privacy in Mind
&lt;/h2&gt;

&lt;p&gt;Batchwise was designed with local-first usage in mind because recipes, ingredient prices, and supplier costs can be sensitive business information.&lt;/p&gt;

&lt;p&gt;The local development setup supports Gemma 3 1B through Ollama. This allows AI parsing to run locally without requiring a paid AI API.&lt;/p&gt;

&lt;p&gt;The hosted demo has a separate deployment environment. Any external AI provider used in hosted mode must be configured explicitly, and users should be told when their notes are sent to that provider.&lt;/p&gt;

&lt;p&gt;The principle remains the same: AI should help structure the data, but users should retain control over what they submit and confirm.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. The Technology Stack
&lt;/h2&gt;

&lt;p&gt;Batchwise brings together a lightweight frontend, a Python backend, a deterministic calculation engine, data persistence, and AI-assisted extraction.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;React, TypeScript, and Vite:&lt;/strong&gt; Interactive frontend&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FastAPI:&lt;/strong&gt; Backend API&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python Decimal:&lt;/strong&gt; Financial calculations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SQLite and SQLAlchemy:&lt;/strong&gt; Data persistence&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 3 1B with Ollama:&lt;/strong&gt; Local AI note parsing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini API:&lt;/strong&gt; Hosted AI parsing when configured&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vitest and React Testing Library:&lt;/strong&gt; Frontend tests&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pytest:&lt;/strong&gt; Backend tests&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vercel and Render:&lt;/strong&gt; Frontend and backend hosting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;[INSERT DIAGRAM 4 HERE — Batchwise technology stack]&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Suggested caption: The technologies powering Batchwise, from its mobile-friendly interface to its AI-assisted parsing and financial engine.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Testing and Verification
&lt;/h2&gt;

&lt;p&gt;The project has a backend test suite covering calculation logic, unit handling, API endpoints, database operations, and AI parser behavior.&lt;/p&gt;

&lt;p&gt;The frontend includes tests for currency formatting, financial summaries, the AI review flow, and costing workspace behavior.&lt;/p&gt;

&lt;p&gt;During development, the reported verification results included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;67 backend tests passing&lt;/li&gt;
&lt;li&gt;16 frontend tests passing&lt;/li&gt;
&lt;li&gt;A successful frontend production build&lt;/li&gt;
&lt;li&gt;End-to-end checks of calculation, recipe management, batch history, and AI extraction&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These tests are important because a financial tool should be more than visually appealing. It should handle invalid inputs, make assumptions visible, and produce reproducible results.&lt;/p&gt;

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

&lt;p&gt;Batchwise is a starting point for making financial clarity more accessible to small food businesses.&lt;/p&gt;

&lt;p&gt;Future improvements could include better multilingual note extraction, more detailed expense tracking, downloadable reports, and reliable persistent storage for hosted users.&lt;/p&gt;

&lt;p&gt;The goal is not to overwhelm small business owners with complicated accounting software. It is to give them a practical way to understand the economics of each batch they produce.&lt;/p&gt;

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

&lt;p&gt;Building Batchwise reinforced one idea for me: useful AI products don't need to hand every decision over to a language model.&lt;/p&gt;

&lt;p&gt;Sometimes the strongest design is to let AI handle the messy human input and let deterministic software handle the math.&lt;/p&gt;

&lt;p&gt;For a small business, understanding the difference between revenue and profit can matter more than a flashy dashboard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Batchwise is my attempt to make that understanding simpler, one production batch at a time.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Try Batchwise:&lt;/strong&gt; &lt;a href="https://batchwise-henna.vercel.app/" rel="noopener noreferrer"&gt;https://batchwise-henna.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💻 &lt;strong&gt;Explore the code:&lt;/strong&gt; &lt;a href="https://github.com/Tanmay-Dalvi/batchwise" rel="noopener noreferrer"&gt;https://github.com/Tanmay-Dalvi/batchwise&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Built for the Hacktoberfest 2026 Week 2 — Side Hustle Challenge.&lt;/p&gt;

&lt;h1&gt;
  
  
  Hacktoberfest #AI #Python #BuildInPublic #SmallBusiness
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>GreenQuest 🌿 — Turning Open-Weight AI into Real-World Outdoor Adventures</title>
      <dc:creator>Tanmay Dalvi</dc:creator>
      <pubDate>Sun, 11 Oct 2026 11:31:57 +0000</pubDate>
      <link>https://dev.to/tanmay3929/greenquest-turning-open-weight-ai-into-real-world-outdoor-adventures-1cl6</link>
      <guid>https://dev.to/tanmay3929/greenquest-turning-open-weight-ai-into-real-world-outdoor-adventures-1cl6</guid>
      <description>&lt;h1&gt;
  
  
  🌿 GreenQuest: Turning Open-Weight AI into Real-World Outdoor Adventures
&lt;/h1&gt;

&lt;p&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;What if AI could help us spend less time looking at screens and more time experiencing the world around us?&lt;/p&gt;

&lt;p&gt;That's the idea behind &lt;strong&gt;GreenQuest&lt;/strong&gt;, a local-first, offline-capable outdoor companion that turns 15–60 minutes of free time into personalized nature micro-adventures.&lt;/p&gt;

&lt;p&gt;Instead of endlessly scrolling through a phone, users can choose their environment, available time, mindset, physical energy, sensory interests, and companions. GreenQuest turns those preferences into a structured outdoor quest with practical activities, progress tracking, and safety guidance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foa038cmlry9o808068k1.jpeg" 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%2Foa038cmlry9o808068k1.jpeg" alt="screenshot1" width="800" height="1576"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Whether you're visiting a forest, walking through a city park, exploring a garden, or spending time near a waterfront, GreenQuest encourages you to slow down and notice things you might otherwise overlook.&lt;/p&gt;

&lt;p&gt;A typical quest might invite you to listen to the sounds beneath a tree canopy, observe the textures of tree bark, or discover the miniature world growing on a fallen log.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7hov7d5t6bxlbwupk4qa.jpeg" 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%2F7hov7d5t6bxlbwupk4qa.jpeg" alt="screenshot2" width="800" height="1574"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each quest includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Personalized outdoor activities with step-by-step instructions.&lt;/li&gt;
&lt;li&gt;A duration suited to the user's available time.&lt;/li&gt;
&lt;li&gt;Sensory prompts for sight, sound, touch, scent, and spatial awareness.&lt;/li&gt;
&lt;li&gt;Progress tracking and completion feedback.&lt;/li&gt;
&lt;li&gt;Outdoor safety guidance and Leave-No-Trace principles.&lt;/li&gt;
&lt;/ul&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%2Fgr5vm3efzkpgcnjmujm8.jpeg" 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%2Fgr5vm3efzkpgcnjmujm8.jpeg" alt="screenshot3" width="800" height="1574"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc3e3jgm58zkkzug7z52y.jpeg" 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%2Fc3e3jgm58zkkzug7z52y.jpeg" alt="screenshot4" width="610" height="1278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GreenQuest also keeps a local history of saved quests, allowing users to revisit their experiences without creating an account.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxvhreauldwraglvbokh3.jpeg" 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%2Fxvhreauldwraglvbokh3.jpeg" alt="screenshot5" width="612" height="1280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Built for the real world, including offline situations
&lt;/h3&gt;

&lt;p&gt;GreenQuest is designed to remain useful when the internet isn't available. Its Progressive Web App (PWA) caches essential assets, quest history is stored locally, and a browser-side deterministic generator can create activities when the backend cannot be reached.&lt;/p&gt;

&lt;p&gt;The application also includes safeguards against risky activities such as consuming wild plants, trespassing, disturbing wildlife, and unsafe exploration.&lt;/p&gt;

&lt;p&gt;The objective is simple: &lt;strong&gt;use technology to help people disconnect from technology.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;🌐 &lt;strong&gt;Live application:&lt;/strong&gt; &lt;a href="https://greenquest-pwa.onrender.com" rel="noopener noreferrer"&gt;https://greenquest-pwa.onrender.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Try creating a quest, completing its steps, and revisiting it through the saved history panel.&lt;/p&gt;

&lt;p&gt;The hosted demo uses a deterministic nature-quest engine on the backend. The local version supports open-weight AI inference through Gemma 3 1B and Ollama.&lt;/p&gt;

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

&lt;p&gt;💻 &lt;strong&gt;GitHub repository:&lt;/strong&gt; &lt;a href="https://github.com/Tanmay-Dalvi/greenquest" rel="noopener noreferrer"&gt;https://github.com/Tanmay-Dalvi/greenquest&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GreenQuest is open source under the MIT License.&lt;/p&gt;

&lt;p&gt;The repository contains the React/TypeScript frontend, FastAPI backend, AI orchestration logic, safety validation, tests, and deployment configuration.&lt;/p&gt;

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

&lt;p&gt;GreenQuest uses a modular architecture so the application doesn't depend on a single proprietary AI provider.&lt;/p&gt;

&lt;h3&gt;
  
  
  Technology stack
&lt;/h3&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;Progressive Web App:&lt;/strong&gt; Service Worker caching and local browser storage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Python, FastAPI, and Pydantic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local AI:&lt;/strong&gt; Gemma 3 1B running through Ollama.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Orchestration:&lt;/strong&gt; Lightweight Python state machine coordinating generation and validation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing:&lt;/strong&gt; Pytest for the backend and Node's built-in test runner for API URL normalization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment:&lt;/strong&gt; Render for the hosted frontend and backend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Version control:&lt;/strong&gt; Git and GitHub.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  System architecture
&lt;/h3&gt;

&lt;p&gt;The frontend collects user preferences and sends a request to the backend. The backend coordinates mission generation, validates the result, and returns a structured quest. Local storage preserves progress and history, while the browser-side fallback provides an alternative when the backend is unavailable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvrpzevm34r77on4ktuvn.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%2Fvrpzevm34r77on4ktuvn.png" alt="diagram1" width="800" height="1990"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The AI quest-generation pipeline
&lt;/h3&gt;

&lt;p&gt;The local AI implementation uses &lt;strong&gt;Gemma 3 1B through Ollama&lt;/strong&gt;. A lightweight orchestration flow separates the work into three responsibilities:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Planner Agent:&lt;/strong&gt; Organizes a quest around the user's preferences and available time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nature Activity Agent:&lt;/strong&gt; Produces concrete sensory activities and instructions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safety Validation:&lt;/strong&gt; Checks the generated content against deterministic application rules before it is presented.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The application uses structured JSON output, response repair, and bounded retries to handle malformed model responses. If generation cannot be completed reliably, a deterministic fallback keeps the experience usable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq5q6bs5xi4whd9xcaxh1.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%2Fq5q6bs5xi4whd9xcaxh1.png" alt="diagram2" width="800" height="1714"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Local AI, hosted demo, and offline browser mode
&lt;/h3&gt;

&lt;p&gt;These are three distinct execution modes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Local mode:&lt;/strong&gt; Ollama runs Gemma 3 1B on the user's machine. Inference does not require a paid cloud AI API, and the model can run without an internet connection once installed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hosted demo:&lt;/strong&gt; Render hosts the frontend and backend. The public demo uses the deterministic backend rule engine by default; visitors are not downloading or running Gemma model weights in their browsers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Browser offline mode:&lt;/strong&gt; When the backend is unreachable, the PWA can use its browser-side deterministic generator and locally saved data. This is separate from running Gemma locally.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fey9ebdgvmy2xinco4q06.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%2Fey9ebdgvmy2xinco4q06.png" alt="diagram3" width="800" height="854"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Safety and reliability
&lt;/h3&gt;

&lt;p&gt;Generated content is treated as untrusted until it passes application-level validation. GreenQuest includes deterministic safeguards against:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Eating or tasting wild plants, mushrooms, berries, or unpurified water.&lt;/li&gt;
&lt;li&gt;Trespassing or entering restricted areas.&lt;/li&gt;
&lt;li&gt;Dangerous climbing or unsafe water crossings.&lt;/li&gt;
&lt;li&gt;Touching, chasing, or feeding wildlife.&lt;/li&gt;
&lt;li&gt;Activities that conflict with Leave-No-Trace principles.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The backend test suite has &lt;strong&gt;31 passing tests&lt;/strong&gt;, covering API behavior, schemas, safety rules, provider behavior, orchestration, and model-output repair. The frontend production build also passes, and API URL normalization has dedicated unit tests.&lt;/p&gt;

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

&lt;p&gt;Open innovation makes GreenQuest more accessible, inspectable, and adaptable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Local inference and user control&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Gemma 3 1B and Ollama give users a way to run the AI locally instead of sending every prompt to a proprietary cloud service. This offers greater control over data and a path toward reducing recurring inference costs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Freedom to experiment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The provider abstraction makes it possible to inspect the orchestration and change the inference provider without rebuilding the entire application around one vendor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Accessibility without mandatory paid APIs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The deterministic fallback keeps the basic experience usable without a paid API key or a cloud GPU. The hosted demo can also operate without a hosted AI provider.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Transparent safety logic&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The safety rules are part of the source code. Developers can inspect them, test them, and propose improvements rather than relying entirely on an opaque model response.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. AI with a purpose beyond the screen&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The most important part of GreenQuest isn't generating more text. It's turning a simple intention—“I have 30 minutes and want a mindful break”—into a real-world activity.&lt;/p&gt;

&lt;p&gt;Open models let me experiment with this idea on ordinary hardware, while open-source code lets others learn from it, adapt it, and build on it.&lt;/p&gt;

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

&lt;p&gt;I used AI-assisted development to build and debug the application, improve structured-output handling, test safety behavior, and resolve deployment configuration issues.&lt;/p&gt;

&lt;p&gt;I don't have a verified public DevRelay session link to include here. If I publish one, I'll add it to this section.&lt;/p&gt;

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

&lt;p&gt;GreenQuest uses Gemma 3 1B locally through Ollama and is deployed on Render. I'll select the partner prize categories only after verifying their official eligibility requirements.&lt;/p&gt;




&lt;p&gt;GreenQuest is a reminder that AI doesn't always need to make us more productive, more connected, or more engaged with a screen.&lt;/p&gt;

&lt;p&gt;Sometimes, it can help us notice the world just outside the door.&lt;/p&gt;

&lt;p&gt;🌲 &lt;strong&gt;Explore less digitally. Experience more naturally.&lt;/strong&gt;&lt;/p&gt;

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