<?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: Aditya Mote</title>
    <description>The latest articles on DEV Community by Aditya Mote (@adityamote478).</description>
    <link>https://dev.to/adityamote478</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F99mvlsfu5tfj9m7ku25d.png</url>
      <title>DEV Community: Aditya Mote</title>
      <link>https://dev.to/adityamote478</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/adityamote478"/>
    <language>en</language>
    <item>
      <title>The laziest way to organize your files: a tiny local model and an undo button</title>
      <dc:creator>Aditya Mote</dc:creator>
      <pubDate>Sat, 24 Oct 2026 08:26:46 +0000</pubDate>
      <link>https://dev.to/adityamote478/the-laziest-way-to-organize-your-files-a-tiny-local-model-and-an-undo-button-135l</link>
      <guid>https://dev.to/adityamote478/the-laziest-way-to-organize-your-files-a-tiny-local-model-and-an-undo-button-135l</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;Everyone has a folder they keep meaning to clean up. &lt;strong&gt;sloth-tidy&lt;/strong&gt; is the lazy fix: a single Python file that sorts, renames and archives a messy folder using a tiny local model, &lt;code&gt;gemma3:1b&lt;/code&gt;, through Ollama.&lt;/p&gt;

&lt;p&gt;You point it at a folder and it prints a plan. Nothing moves until you add &lt;code&gt;--apply&lt;/code&gt;, and every run can be undone.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sorts&lt;/strong&gt; files into &lt;code&gt;Sorted/&amp;lt;Category&amp;gt;/&lt;/code&gt; by type: Images, Documents, Installers, Archives, Code and so on.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Labels&lt;/strong&gt; documents and &lt;code&gt;.eml&lt;/code&gt; emails by reading a snippet locally: Invoices, Receipts, Certificates, Resumes, Study, Work, Legal, Finance, Travel, Personal, Newsletters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Renames only junk names&lt;/strong&gt;, like &lt;code&gt;scan0001.pdf&lt;/code&gt; or &lt;code&gt;Screenshot (12).png&lt;/code&gt;. Descriptive names are left alone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Archives&lt;/strong&gt; files that haven't been touched in a long time into &lt;code&gt;Sorted/Archive/&amp;lt;year&amp;gt;/&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The people who get lazier are the ones whose files are too private for a cloud tool: invoices, certificates, personal email.&lt;/p&gt;

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

&lt;p&gt;This is a real run on a scratch folder, using &lt;code&gt;gemma3:1b&lt;/code&gt; on my own Windows machine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;PS&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;python&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;tidy.py&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;scratch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--apply&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="n"&gt;/4&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;reading&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;notes.txt&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="n"&gt;/4&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;reading&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;scan0001.txt&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="n"&gt;notes.txt&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Sorted\Documents\Personal\notes.txt&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nx"&gt;scan0001.txt&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Sorted\Documents\Invoices\2026-10-21&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Electricity&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;bill&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;October&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;2024.txt&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Screenshot&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;png&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Sorted\Images\Screenshot&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;2026-10-21&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;1304.png&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;setup.exe&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Sorted\Installers\setup.exe&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="n"&gt;Moved&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;files.&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="n"&gt;PS&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;python&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tidy.py&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;scratch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--undo&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Restored&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;at&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2026&lt;/span&gt;&lt;span class="nt"&gt;-10-24T13&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;09&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;00&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;code&gt;scan0001.txt&lt;/code&gt; contained only a line about an electricity bill. The model read it, picked a label and wrote a title, and the date prefix comes from the file's modified time. After the undo, all four files were back under their original names.&lt;/p&gt;
&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Rx-Metallica" rel="noopener noreferrer"&gt;
        Rx-Metallica
      &lt;/a&gt; / &lt;a href="https://github.com/Rx-Metallica/sloth-tidy" rel="noopener noreferrer"&gt;
        sloth-tidy
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A lazy dev's file and inbox tidier. Sorts, renames and archives messy folders with a local gemma3:1b model via Ollama. No cloud, no API keys.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;sloth-tidy&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;A lazy dev's file and inbox tidier. It sorts, renames and archives a messy folder using a
&lt;strong&gt;local&lt;/strong&gt; model (&lt;code&gt;gemma3:1b&lt;/code&gt; through &lt;a href="https://ollama.com" rel="nofollow noopener noreferrer"&gt;Ollama&lt;/a&gt;). Your files never leave your machine.&lt;/p&gt;
&lt;p&gt;Single Python file, standard library only.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What it does&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sorts&lt;/strong&gt; files into &lt;code&gt;Sorted/&amp;lt;Category&amp;gt;/&lt;/code&gt; by type: Images, Documents, Installers, Archives, Code, ...&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Labels&lt;/strong&gt; documents and &lt;code&gt;.eml&lt;/code&gt; emails by reading a snippet locally: Invoices, Receipts, Certificates
Resumes, Study, Work, Legal, Finance, Travel, Personal, Newsletters. A keyword fallback covers the
cases where a 1B model answers "Misc".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Renames&lt;/strong&gt; only messy names (&lt;code&gt;scan0001.pdf&lt;/code&gt;, &lt;code&gt;Screenshot (12).png&lt;/code&gt;), e.g. to
&lt;code&gt;2026-10-21 Electricity bill October 2024.pdf&lt;/code&gt;. Descriptive names are left alone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Archives&lt;/strong&gt; files older than N days into &lt;code&gt;Sorted/Archive/&amp;lt;year&amp;gt;/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stays safe:&lt;/strong&gt; dry run by default, never deletes or overwrites, skips files modified in the last
10 minutes (likely still downloading), and every run can be undone.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Setup&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;
&lt;pre class="notranslate"&gt;&lt;code&gt;ollama pull gemma3:1b
pip install&lt;/code&gt;&lt;/pre&gt;…&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Rx-Metallica/sloth-tidy" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;It's one file with no dependencies beyond the standard library. &lt;code&gt;pypdf&lt;/code&gt; is optional, for reading PDFs.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Stack:&lt;/strong&gt; Python standard library, Ollama's local HTTP API, &lt;code&gt;gemma3:1b&lt;/code&gt;. There's no SDK and no API key. The script posts JSON to &lt;code&gt;localhost:11434&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The pipeline:&lt;/strong&gt; scan the top level of the folder, skip anything hidden, still downloading, or modified in the last 10 minutes, categorise by extension, pull a short text snippet from documents (&lt;code&gt;.txt&lt;/code&gt;, &lt;code&gt;.md&lt;/code&gt;, &lt;code&gt;.docx&lt;/code&gt; via &lt;code&gt;zipfile&lt;/code&gt;, &lt;code&gt;.eml&lt;/code&gt; via &lt;code&gt;email&lt;/code&gt;, PDFs via optional &lt;code&gt;pypdf&lt;/code&gt;), ask the model for a label and a title, build a plan, print it, and only then move files and write an undo log.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A 1B model needs guardrails.&lt;/strong&gt; Here is what I did about that:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Constrain the output.&lt;/strong&gt; Ollama's JSON mode, one few-shot example, a fixed list of allowed labels, temperature 0.1 and a snippet capped at about 1,200 characters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Never trust it.&lt;/strong&gt; If the model returns a label outside the list, it's ignored. If it says "Misc", a small keyword fallback gets a second chance:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;KEYWORDS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Invoices&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;invoice&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bill&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;amount due&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;total due&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Certificates&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;certificate&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;completion&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;awarded&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Newsletters&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;unsubscribe&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;newsletter&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;view in browser&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="c1"&gt;# ...
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In my first real run, the model left an obvious electricity bill unlabeled. With the fallback it landed in &lt;code&gt;Invoices&lt;/code&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Make mistakes cheap.&lt;/strong&gt; Dry run by default, no overwriting or deleting, collision-safe names, Windows-safe filenames, and a JSON log that &lt;code&gt;--undo&lt;/code&gt; replays in reverse.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;A bug I found in my own tool:&lt;/strong&gt; on a folder of certificate PDFs, &lt;code&gt;pypdf&lt;/code&gt; wasn't installed, and the tool silently fell back to labeling PDFs by filename. The plan looked plausible, but the model had never read the files. The tool now prints a warning when PDFs can't be read.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limitations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Subfolders aren't scanned.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;gemma3:1b&lt;/code&gt; is text-only, so images are sorted by type and never read.&lt;/li&gt;
&lt;li&gt;Scanned PDFs with no text layer can't be labeled.&lt;/li&gt;
&lt;li&gt;A 1B model will sometimes be wrong, which is why the dry run exists.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Look at what this tool reads: invoices, certificates, emails. That's the last data I'd upload to a hosted API just to get a folder sorted.&lt;/p&gt;

&lt;p&gt;An open-weight model changes the trade-off:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Privacy:&lt;/strong&gt; file contents never leave the machine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost and limits:&lt;/strong&gt; it's free per file, with no rate limits, so it can scan thousands of files without a bill.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline:&lt;/strong&gt; it works with no connection once the model is pulled.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swappable:&lt;/strong&gt; changing models is one environment variable (&lt;code&gt;SLOTH_MODEL=gemma3:4b&lt;/code&gt;). I haven't benchmarked the larger model yet.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The honest trade-off is that a bigger closed model would probably label better. But for this job a small local model plus validation, a keyword fallback and an undo log is good enough, and it keeps my files on my own disk.&lt;/p&gt;

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

&lt;p&gt;You set it up once, and you can then run it weekly with Windows Task Scheduler:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight batchfile"&gt;&lt;code&gt;&lt;span class="nb"&gt;schtasks&lt;/span&gt; &lt;span class="na"&gt;/Create /SC &lt;/span&gt;&lt;span class="kd"&gt;WEEKLY&lt;/span&gt; &lt;span class="na"&gt;/D &lt;/span&gt;&lt;span class="kd"&gt;SUN&lt;/span&gt; &lt;span class="na"&gt;/ST &lt;/span&gt;&lt;span class="m"&gt;20&lt;/span&gt;:00 &lt;span class="na"&gt;/TN &lt;/span&gt;&lt;span class="s2"&gt;"SlothTidy"&lt;/span&gt; &lt;span class="na"&gt;/TR &lt;/span&gt;&lt;span class="s2"&gt;"python C:\path\to\tidy.py C:\Users\you\Downloads --apply"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;&lt;strong&gt;Best Use of Gemma&lt;/strong&gt;: &lt;code&gt;gemma3:1b&lt;/code&gt; runs locally through Ollama and does the labeling and titling for every document and email.&lt;/p&gt;

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