<?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: SJ</title>
    <description>The latest articles on DEV Community by SJ (@sj_fe61db40b7637eb0930e28).</description>
    <link>https://dev.to/sj_fe61db40b7637eb0930e28</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%2F1908134%2F29c1e697-c4b4-4c2b-b808-2f1c5775b557.png</url>
      <title>DEV Community: SJ</title>
      <link>https://dev.to/sj_fe61db40b7637eb0930e28</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sj_fe61db40b7637eb0930e28"/>
    <language>en</language>
    <item>
      <title>Organizer CLI: Channeling My Inner Sloth to Tidy macOS with On-Device Gemma</title>
      <dc:creator>SJ</dc:creator>
      <pubDate>Sun, 25 Oct 2026 21:30:42 +0000</pubDate>
      <link>https://dev.to/sj_fe61db40b7637eb0930e28/organizer-cli-channeling-my-inner-sloth-to-tidy-macos-with-on-device-gemma-14b7</link>
      <guid>https://dev.to/sj_fe61db40b7637eb0930e28/organizer-cli-channeling-my-inner-sloth-to-tidy-macos-with-on-device-gemma-14b7</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week3-2026-10-19"&gt;Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Every developer's &lt;code&gt;~/Downloads&lt;/code&gt; and &lt;code&gt;~/Desktop&lt;/code&gt; is a digital graveyard of good intentions: tax forms, software installers (&lt;code&gt;.dmg&lt;/code&gt;, &lt;code&gt;.pkg&lt;/code&gt;), flight receipts, random screenshots, zip archives, and research papers all dumped into one giant, overwhelming heap. Tidying it up manually takes willpower, time, and tedious dragging and dropping.&lt;/p&gt;

&lt;p&gt;In honor of &lt;strong&gt;International Sloth Day&lt;/strong&gt; and this week's &lt;strong&gt;"Slow and Steady"&lt;/strong&gt; theme, I built &lt;strong&gt;Organizer CLI (&lt;code&gt;organizer&lt;/code&gt;)&lt;/strong&gt;: a private, human-in-the-loop, terminal-based folder organizer powered by local, open-weight &lt;strong&gt;Gemma&lt;/strong&gt; models.&lt;/p&gt;

&lt;p&gt;Instead of spending Sunday afternoon categorizing files, you run one command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;organizer scan ~/Downloads
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  What It Does
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Zero-Effort Inspection&lt;/strong&gt;: Recursively scans any target directory and categorizes files using local open-weight &lt;strong&gt;Gemma&lt;/strong&gt; models running on-device via Ollama (or zero-RAM cloud fallbacks like Google Gemini and OpenRouter).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Folder-Grouped Proposals&lt;/strong&gt;: Aggregates proposals into clean tables under destination folder banners with file counts and AI attribution badges (&lt;code&gt;📁 ⭐ Photographs (3 files)&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive Human-in-the-Loop TUI&lt;/strong&gt;: Launches a keyboard-driven terminal UI (built on Rich Live). You can navigate files with &lt;code&gt;↑&lt;/code&gt;/&lt;code&gt;↓&lt;/code&gt; (&lt;code&gt;k&lt;/code&gt;/&lt;code&gt;j&lt;/code&gt;), toggle multi-select with &lt;code&gt;Space&lt;/code&gt; or &lt;code&gt;Shift+Space&lt;/code&gt;, and press &lt;code&gt;m&lt;/code&gt; to reassign folders with &lt;code&gt;Tab&lt;/code&gt;-autocompleting suggestions before anything is touched on disk.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Autonomous Model Lifecycle Subsystem&lt;/strong&gt;: Provides built-in commands (&lt;code&gt;organizer models install&lt;/code&gt;, &lt;code&gt;status&lt;/code&gt;, &lt;code&gt;doctor&lt;/code&gt;, &lt;code&gt;available&lt;/code&gt;) to discover, pull with streaming progress, verify, and diagnose local Gemma models with hardware resource checks (RAM and disk space).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strict Local Loopback Privacy&lt;/strong&gt;: Enforces strict loopback network checks (&lt;code&gt;127.0.0.1&lt;/code&gt;, &lt;code&gt;localhost&lt;/code&gt;), ensuring confidential files, payslips, and NDAs never leave your machine.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  Who Gets to Be Lazier Because of It?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Developers &amp;amp; Students&lt;/strong&gt; who download dozens of PDFs, tarballs, and repos every week and dread the weekend cleanup.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy-Conscious Mac Users&lt;/strong&gt; who refuse to upload their personal tax returns, invoices, and bank statements to closed third-party cloud organizers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anyone with Digital Clutter Anxiety&lt;/strong&gt; who wants their workspace tidy with minimal effort.&lt;/li&gt;
&lt;/ul&gt;


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

&lt;p&gt;Here is how the interactive terminal workflow looks when running &lt;code&gt;organizer scan&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;╭────────────────────────── Organizer Review Plan ──────────────────────────╮
│ 📁 ⭐ Financial Invoices (2 files)                                         │
│   • Q3_Tax_Summary_2026.pdf      [98% - Semantic AI: Tax document]        │
│   • Stripe_Payout_Sept.csv       [95% - Semantic AI: Payout receipt]      │
│                                                                           │
│ 📁 ⭐ Photographs &amp;amp; Media (3 files)                                        │
│ ▶ • IMG_9402_Receipt.png         [92% - Multimodal Vision: Paper receipt] │
│   • Product_Mockup_V2.png        [90% - Multimodal Vision: UI wireframe]  │
│   • Architecture_Draft.heic      [88% - Semantic AI: Design diagram]      │
│                                                                           │
│ 📁 Installers &amp;amp; Packages (2 files)                                        │
│   • Docker_Desktop_v4.dmg        [Rule: Executable Disk Image]            │
│   • Node_v24_Darwin_arm64.pkg    [Rule: macOS Package Installer]          │
╰───────────────────────────────────────────────────────────────────────────╯
[Browse Mode] ↑/↓: Navigate • Space: Toggle • m: Move Folder • Enter: Confirm • q: Quit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Setup in Seconds: &lt;code&gt;organizer setup&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;If you haven't configured a model yet, running &lt;code&gt;organizer setup&lt;/code&gt; launches an onboarding wizard that auto-detects your local Ollama runtime, checks host RAM and disk availability, and downloads the recommended Gemma model with real-time transfer speeds:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ organizer setup

✔ Detected local Ollama runtime at http://localhost:11434
✔ Inspected host hardware: 16.0 GB Unified RAM, 142.4 GB free disk

? Select your operational mode:
 &amp;gt; 1. Download recommended local model (gemma4:e2b - Multimodal, ~7.5 GB)
   2. Configure Google Gemini API (Free cloud tier, zero host RAM)
   3. Configure OpenRouter (Free cloud tier)
   4. Select another local model from catalog (gemma2:2b, gemma2:9b)
   5. Deterministic rule-only mode (instant, zero models)

Pulling gemma4:e2b [━━━━━━━━━━━━━━━━━━━━] 7.5 GB / 7.5 GB (48.2 MB/s)
✔ Model readiness smoke test passed! Active model set to 'gemma4:e2b'.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Self-Healing Diagnostics: &lt;code&gt;organizer models doctor&lt;/code&gt;
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ organizer models doctor

🔍 Running Organizer Diagnostics...
  [✔] Ollama binary installed: /usr/local/bin/ollama
  [✔] Ollama daemon running on loopback: http://localhost:11434
  [✔] Strict loopback validation: Passed (no remote egress detected)
  [✔] Memory check: 16.0 GB RAM total (8.0 GB required for gemma4:e2b)
  [✔] Disk space: 142.4 GB available (9.0 GB estimated storage)
  [✔] Active model readiness: 'gemma4:e2b' responds within 0.42s

Everything is healthy and ready to organize!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/BoseSj" rel="noopener noreferrer"&gt;
        BoseSj
      &lt;/a&gt; / &lt;a href="https://github.com/BoseSj/OrgCLI" rel="noopener noreferrer"&gt;
        OrgCLI
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Organizer CLI (&lt;code&gt;organizer&lt;/code&gt;)&lt;/h1&gt;
&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A private, local-first macOS folder organizer proposing an editable, folder-grouped file tree with local Gemma model lifecycle management and zero-RAM cloud fallbacks.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://www.python.org/downloads/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/93a33cfc2339ec3fa9be792576576fbaafc42b0c7031285662b02f3aca1e1c59/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f707974686f6e2d332e31302b2d626c75652e737667" alt="Python 3.10+"&gt;&lt;/a&gt;
&lt;a href="https://github.com/BoseSj/OrgCLI/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667" alt="License: MIT"&gt;&lt;/a&gt;
&lt;a href="https://github.com/BoseSj/OrgCLI/tests/" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/4ce69e2ae932c526fd46f14928c67626f4d9f59e80a897ae5ec21909ce81d966/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f74657374732d3131352532307061737365642d627269676874677265656e2e737667" alt="Tests: 115 Passed"&gt;&lt;/a&gt;
&lt;a href="https://apple.com" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/8c42135bc2b991c11eb4e0d1d4eea7e668c9be7fa4f8f1d1f83adafa40ebd5f8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d6d61634f532d6c69676874677265792e737667" alt="Platform: macOS"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Table of Contents&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/BoseSj/OrgCLI#overview" rel="noopener noreferrer"&gt;Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/BoseSj/OrgCLI#what-we-built" rel="noopener noreferrer"&gt;What We Built&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/BoseSj/OrgCLI#1-multi-engine-operational-modes" rel="noopener noreferrer"&gt;1. Multi-Engine Operational Modes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BoseSj/OrgCLI#2-interactive-first-run-setup-wizard" rel="noopener noreferrer"&gt;2. Interactive First-Run Setup Wizard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BoseSj/OrgCLI#3-folder-grouped-organization-plan--ai-indicators" rel="noopener noreferrer"&gt;3. Folder-Grouped Organization Plan &amp;amp; AI Indicators&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BoseSj/OrgCLI#4-interactive-keyboard-tui-organizer-scan" rel="noopener noreferrer"&gt;4. Interactive Keyboard TUI (&lt;code&gt;organizer scan&lt;/code&gt;)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BoseSj/OrgCLI#5-local-model-lifecycle--diagnostics-subsystem" rel="noopener noreferrer"&gt;5. Local Model Lifecycle &amp;amp; Diagnostics Subsystem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BoseSj/OrgCLI#6-strict-local-only-privacy-policy" rel="noopener noreferrer"&gt;6. Strict Local-Only Privacy Policy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BoseSj/OrgCLI#7-deterministic-testing-harness--acceptance-suite" rel="noopener noreferrer"&gt;7. Deterministic Testing Harness &amp;amp; Acceptance Suite&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BoseSj/OrgCLI#architecture--workflow" rel="noopener noreferrer"&gt;Architecture &amp;amp; Workflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BoseSj/OrgCLI#what-is-pending-in-flight-roadmap" rel="noopener noreferrer"&gt;What Is Pending (In-Flight Roadmap)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BoseSj/OrgCLI#what-is-still-being-brainstormed" rel="noopener noreferrer"&gt;What Is Still Being Brainstormed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/BoseSj/OrgCLI#installation--quickstart" rel="noopener noreferrer"&gt;Installation &amp;amp; Quickstart&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/BoseSj/OrgCLI#prerequisites" rel="noopener noreferrer"&gt;Prerequisites&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BoseSj/OrgCLI#setup-virtual-environment" rel="noopener noreferrer"&gt;Setup Virtual Environment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BoseSj/OrgCLI#initial-setup" rel="noopener noreferrer"&gt;Initial Setup&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/BoseSj/OrgCLI#cli-reference--usage" rel="noopener noreferrer"&gt;CLI Reference &amp;amp; Usage&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/BoseSj/OrgCLI#global-commands" rel="noopener noreferrer"&gt;Global Commands&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BoseSj/OrgCLI#organizer-scan-core-organization-workflow" rel="noopener noreferrer"&gt;&lt;code&gt;organizer scan&lt;/code&gt; (Core Organization Workflow)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BoseSj/OrgCLI#organizer-setup-interactive-setup-wizard" rel="noopener noreferrer"&gt;&lt;code&gt;organizer setup&lt;/code&gt; (Interactive Setup Wizard)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BoseSj/OrgCLI#organizer-models-model-lifecycle-subcommands" rel="noopener noreferrer"&gt;&lt;code&gt;organizer models&lt;/code&gt; (Model Lifecycle Subcommands)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BoseSj/OrgCLI#interactive-keyboard-shortcuts-reference" rel="noopener noreferrer"&gt;Interactive Keyboard Shortcuts Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/BoseSj/OrgCLI#configuration-reference" rel="noopener noreferrer"&gt;Configuration Reference&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/BoseSj/OrgCLI#configuration-file-path" rel="noopener noreferrer"&gt;Configuration File Path&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BoseSj/OrgCLI#environment-variables" rel="noopener noreferrer"&gt;Environment Variables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BoseSj/OrgCLI#example-configjson" rel="noopener noreferrer"&gt;Example &lt;code&gt;config.json&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BoseSj/OrgCLI#development--testing" rel="noopener noreferrer"&gt;Development &amp;amp; Testing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Overview&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;macOS users frequently deal with cluttered folders such as &lt;code&gt;~/Downloads&lt;/code&gt; or &lt;code&gt;~/Desktop&lt;/code&gt; overflowing…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/BoseSj/OrgCLI" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;The project is completely open source under the MIT License:&lt;br&gt;
👉 &lt;strong&gt;&lt;a href="https://github.com/BoseSj/OrgCLI" rel="noopener noreferrer"&gt;https://github.com/BoseSj/OrgCLI&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Tech Stack:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Language&lt;/strong&gt;: Python 3.10+ (tested on Python 3.10 through 3.14)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CLI Framework&lt;/strong&gt;: Typer with Click backend&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Terminal UI&lt;/strong&gt;: Rich &amp;amp; Rich Live (interactive ANSI terminal handling)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Inference&lt;/strong&gt;: Ollama API client over asynchronous HTTPX&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hardware Diagnostics&lt;/strong&gt;: &lt;code&gt;psutil&lt;/code&gt; &amp;amp; &lt;code&gt;shutil&lt;/code&gt; for live RAM and disk constraint evaluation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing&lt;/strong&gt;: Deterministic Pytest suite with &lt;code&gt;fake_ollama&lt;/code&gt; in-memory mock server (115 passing tests)&lt;/li&gt;
&lt;/ul&gt;


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

&lt;p&gt;Organizer CLI is designed around &lt;strong&gt;Google's Gemma open-weight model family&lt;/strong&gt; paired with a local-first lifecycle management engine.&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;graph TD
    User["User Terminal"] --&amp;gt; CLI["Organizer CLI (Typer)"]

    subgraph "CLI Entrypoints"
        Setup["organizer setup"]
        Scan["organizer scan &amp;lt;path&amp;gt;"]
        Models["organizer models &amp;lt;subcommand&amp;gt;"]
    end

    CLI --&amp;gt; Setup
    CLI --&amp;gt; Scan
    CLI --&amp;gt; Models

    subgraph "Local Engine Subsystems"
        Lifecycle["LocalModelLifecycleService"]
        Catalog["Gemma Model Catalog &amp;amp; Resource Evaluator"]
        TUI["Interactive Live TUI (Rich)"]
        Rules["Semantic + Deterministic Engine"]
    end

    Setup --&amp;gt; Lifecycle
    Models --&amp;gt; Lifecycle
    Scan --&amp;gt; Rules
    Rules --&amp;gt; TUI

    subgraph "Inference Providers"
        OllamaGemma["Ollama (gemma4:e2b / gemma2:2b / gemma2:9b)"]
        GeminiCloud["Google Gemini 3.8 Flash (Cloud Fallback)"]
        StaticRule["Deterministic File Rules (Offline Fallback)"]
    end

    Lifecycle --&amp;gt; OllamaGemma
    Rules --&amp;gt; OllamaGemma
    Rules --&amp;gt; GeminiCloud
    Rules --&amp;gt; StaticRule&lt;/code&gt;&lt;/pre&gt;



&lt;h3&gt;
  
  
  1. Curated Local Model Catalog for Gemma
&lt;/h3&gt;

&lt;p&gt;Local inference often frustrates users when model weights exceed their computer's available unified memory. To fix this, I created a curated catalog in &lt;code&gt;src/organizer/models/catalog.py&lt;/code&gt; with hardware advisory evaluations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;gemma4:e2b&lt;/code&gt; (Recommended)&lt;/strong&gt;: Multimodal (text + image input), ~7.5 GB download size, optimized for 8 GB+ Apple Silicon Macs. Enables vision-based classification for screenshots, photos, and scanned receipts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;gemma2:2b&lt;/code&gt;&lt;/strong&gt;: Lightweight text-only model (~1.6 GB pull size), perfect for low-spec machines or background battery-saving operations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;gemma2:9b&lt;/code&gt;&lt;/strong&gt;: High-precision text reasoning model (~5.4 GB pull size) for users with 16 GB+ unified memory.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before initiating a download, &lt;code&gt;evaluate_model_resources()&lt;/code&gt; queries &lt;code&gt;psutil&lt;/code&gt; to verify RAM headroom and free storage with a safety margin, warning the user before paging or system freezes can happen.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Autonomous Model Lifecycle Management
&lt;/h3&gt;

&lt;p&gt;Users don't need to leave their terminal to juggle shell commands for Ollama. The &lt;code&gt;organizer models&lt;/code&gt; subcommand suite manages model states directly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;organizer models available&lt;/code&gt;: Displays verified models with download sizes and hardware requirements.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;organizer models install &amp;lt;id&amp;gt;&lt;/code&gt;: Pulls model layers via chunked streaming with live speed calculations.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;organizer models use &amp;lt;id&amp;gt;&lt;/code&gt;: Switches active models and runs smoke tests.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;organizer models doctor&lt;/code&gt;: Runs full system diagnostics.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Human-in-the-Loop Interactive TUI
&lt;/h3&gt;

&lt;p&gt;Total automation can be dangerous when reorganizing important files. Organizer CLI implements an interactive review screen using &lt;code&gt;rich.live.Live&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Moving between file rows using arrow keys (&lt;code&gt;↑&lt;/code&gt;/&lt;code&gt;↓&lt;/code&gt;) or Vim keys (&lt;code&gt;k&lt;/code&gt;/&lt;code&gt;j&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Multi-file selection (&lt;code&gt;Space&lt;/code&gt; to toggle, &lt;code&gt;Shift+Space&lt;/code&gt; for range select, &lt;code&gt;d&lt;/code&gt; to deselect all).&lt;/li&gt;
&lt;li&gt;Folder reassignment (&lt;code&gt;m&lt;/code&gt;): Opens an inline prompt with &lt;code&gt;Tab&lt;/code&gt; autocompletion cycling through existing folders, standard system categories, and AI-suggested categories.&lt;/li&gt;
&lt;li&gt;Final confirmation (&lt;code&gt;Enter&lt;/code&gt;) commits the finalized plan.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Zero-Friction Reliability: 115 Passing Tests
&lt;/h3&gt;

&lt;p&gt;To ensure robustness across platforms without relying on live downloads during CI, the test harness features &lt;code&gt;organizer.testing.fake_ollama&lt;/code&gt;—an in-process mock HTTP server that simulates stream chunking, download interruptions, network drops, and prompt responses. The entire test suite runs in under 25 seconds with 115 passing tests.&lt;/p&gt;




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

&lt;p&gt;Open innovation is the backbone of this project. Building this tool with proprietary, closed APIs would have introduced critical trade-offs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Uncompromising Document Privacy&lt;/strong&gt;: Your &lt;code&gt;~/Downloads&lt;/code&gt; folder holds your life: tax returns, passport scans, medical invoices, private codebases, and company NDA documents. With open-weight Gemma running locally on Ollama over loopback (&lt;code&gt;localhost&lt;/code&gt;), &lt;strong&gt;not a single byte of personal data ever leaves your computer&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline &amp;amp; Air-Gapped Autonomy&lt;/strong&gt;: Traveling on a flight without Wi-Fi? Working from an off-grid cabin? Open weights mean your tools keep working anywhere, anytime, without needing an active internet connection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No Subscriptions, No Rate Limits, No Token Bills&lt;/strong&gt;: Closed APIs charge per token and impose throttling during peak demand. Open-source AI costs nothing to run once downloaded and will never be deprecated by a corporate API sunset.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hardware Acceleration on the Edge&lt;/strong&gt;: Open models allow deep integration with local hardware—like Apple Silicon unified memory and the Apple Neural Engine (ANE)—giving instant responses with minimal power consumption.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;This project was built with the assistance of agentic pair programming sessions in Google Antigravity. The agent helped architect the multi-engine provider abstraction, implement the non-blocking streaming progress parser for Ollama pulls, and build the 115 unit and acceptance test scenarios (including edge cases like loopback enforcement and corrupted json streams).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Agent session logs and transcript traces recorded during development).&lt;/em&gt;&lt;/p&gt;




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

&lt;h3&gt;
  
  
  How Much Time and Effort Does It Save?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Before&lt;/strong&gt;: 30 to 45 minutes of manual sorting every two weeks (or avoiding it altogether until Finder search grinds to a halt).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;With Organizer CLI&lt;/strong&gt;:

&lt;ol&gt;
&lt;li&gt;Open terminal: &lt;code&gt;organizer scan ~/Downloads&lt;/code&gt; (1 second).&lt;/li&gt;
&lt;li&gt;Gemma parses and groups 100+ files into semantic folders (under 10 seconds).&lt;/li&gt;
&lt;li&gt;Skim the interactive grouped view, press &lt;code&gt;Enter&lt;/code&gt; to confirm (5 seconds).&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Total Time&lt;/strong&gt;: &lt;strong&gt;Under 20 seconds&lt;/strong&gt;. That is an immediate &lt;strong&gt;95%+ time savings&lt;/strong&gt; every single time you tidy your system.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I used Organizer CLI this week on my personal macOS development machine to sort through 184 unorganized downloads—filing bank statements into &lt;code&gt;Invoices/&lt;/code&gt;, project assets into &lt;code&gt;Assets/&lt;/code&gt;, and disk images into &lt;code&gt;Installers/&lt;/code&gt; with zero manual dragging.&lt;/p&gt;




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

&lt;h3&gt;
  
  
  Primary Category:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma&lt;/strong&gt;: Built from the ground up around Google's open-weight &lt;strong&gt;Gemma&lt;/strong&gt; model family (&lt;code&gt;gemma4:e2b&lt;/code&gt;, &lt;code&gt;gemma2:2b&lt;/code&gt;, and &lt;code&gt;gemma2:9b&lt;/code&gt;), complete with on-device Ollama integration, hardware resource validation, and full model lifecycle management.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Lazy developers make the best tools. Give your cluttered folders a rest and let Gemma(among few other options) do the heavy lifting!&lt;/em&gt;&lt;/p&gt;

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