<?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: Gayathri Ande</title>
    <description>The latest articles on DEV Community by Gayathri Ande (@gayathri_ande_d4a1096a4ee).</description>
    <link>https://dev.to/gayathri_ande_d4a1096a4ee</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%2F3873909%2Fa16cb25a-a1b4-4c92-894a-7654e8d1c4be.png</url>
      <title>DEV Community: Gayathri Ande</title>
      <link>https://dev.to/gayathri_ande_d4a1096a4ee</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gayathri_ande_d4a1096a4ee"/>
    <language>en</language>
    <item>
      <title>I Built an AI That Organizes My Files Because I Was Too Lazy To Do It 🛋️</title>
      <dc:creator>Gayathri Ande</dc:creator>
      <pubDate>Wed, 21 Oct 2026 19:07:02 +0000</pubDate>
      <link>https://dev.to/gayathri_ande_d4a1096a4ee/i-built-an-ai-that-organizes-my-files-because-i-was-too-lazy-to-do-it-3d2b</link>
      <guid>https://dev.to/gayathri_ande_d4a1096a4ee/i-built-an-ai-that-organizes-my-files-because-i-was-too-lazy-to-do-it-3d2b</guid>
      <description>&lt;p&gt;&lt;em&gt;This is my submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week3-2026-10-19"&gt;Hacktoberfest 2026 Week 3 challenge&lt;/a&gt; ("Slow and Steady").&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Downloads folder was a graveyard
&lt;/h2&gt;

&lt;p&gt;My Downloads folder wasn't a folder anymore. It was a graveyard.&lt;/p&gt;

&lt;p&gt;Every file followed the same cycle: download it, mean to rename it, mean to move it, postpone it forever. &lt;code&gt;scan0001.txt&lt;/code&gt;. &lt;code&gt;resume_final_v3&lt;/code&gt;. &lt;code&gt;untitled&lt;/code&gt;. I never decided to ignore them. Sorting them was just too boring to start.&lt;/p&gt;

&lt;h2&gt;
  
  
  The idea
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;LazyDesk&lt;/strong&gt; is a local-first file organizer. You drop files in. A model running on your own machine reads them, decides what they are, suggests a clean filename, and moves them into folders once you approve.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Drop it. Forget it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;![Messy folder before LazyDesk](&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0hdey2zo3sf3k44x0oc8.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%2F0hdey2zo3sf3k44x0oc8.png" alt=" " width="308" height="250"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;)&lt;/p&gt;

&lt;h2&gt;
  
  
  What LazyDesk does
&lt;/h2&gt;

&lt;p&gt;For each file, LazyDesk:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Extracts text (plain text, PDF, DOCX; images are judged by name and type only).&lt;/li&gt;
&lt;li&gt;Asks the model for structured JSON: &lt;code&gt;category&lt;/code&gt;, &lt;code&gt;suggested_filename&lt;/code&gt;, &lt;code&gt;summary&lt;/code&gt;, &lt;code&gt;confidence&lt;/code&gt;, &lt;code&gt;reason&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Shows the proposal before anything happens, for example &lt;code&gt;scan0001.txt&lt;/code&gt; becomes &lt;code&gt;Documents/Invoice_1042.txt&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Moves files only after you approve.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;React + TypeScript UI
        ↓
FastAPI backend
        ↓
File extractor (text / PDF / DOCX)
        ↓
Ollama → [Gemma model name]
        ↓
JSON validation + confidence check
        ↓
Your approval
        ↓
Organizer → workspace/organized/&amp;lt;Category&amp;gt;/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Why open-weight, local AI?
&lt;/h2&gt;

&lt;p&gt;Folders like this hold resumes, certificates and private notes. I didn't want to upload them to a third-party AI service just to rename them.&lt;/p&gt;

&lt;p&gt;I used &lt;strong&gt;[Gemma model name]&lt;/strong&gt; through &lt;strong&gt;Ollama&lt;/strong&gt; on &lt;strong&gt;[my machine: CPU/GPU, RAM]&lt;/strong&gt;. The tradeoffs are real: local inference needs capable hardware and can be slower than a hosted API. It isn't absolute privacy either, because the files still live on my disk. What I get is control, the ability to swap models, and no per-request API cost.&lt;/p&gt;
&lt;h2&gt;
  
  
  Building it in one day
&lt;/h2&gt;

&lt;p&gt;I only had one day, so I locked the scope: no authentication, no database, no RAG, no OCR. A few decisions mattered most.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fixed categories.&lt;/strong&gt; Documents, Certificates, Resumes, Projects, Notes, Images, Other. A fixed list makes the model's output easy to validate. [What did you actually see? Did it help?]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The model never touches paths.&lt;/strong&gt; It returns a category and a filename. My code validates the category, sanitizes the name, and picks the destination inside one workspace folder.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safe by default.&lt;/strong&gt; Duplicate names get &lt;code&gt;_2&lt;/code&gt;, nothing is overwritten, and low-confidence or invalid results land in "Needs Review", unapproved.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  The lazy payoff
&lt;/h2&gt;

&lt;p&gt;I gave LazyDesk &lt;strong&gt;[N]&lt;/strong&gt; files. It prepared &lt;strong&gt;[X]&lt;/strong&gt; automatically and flagged &lt;strong&gt;[Y]&lt;/strong&gt; for review. Analysis took &lt;strong&gt;[T] seconds&lt;/strong&gt; on [machine]. Sorting the same files by hand took me &lt;strong&gt;[M]&lt;/strong&gt;. Of the [N] classifications, &lt;strong&gt;[K]&lt;/strong&gt; were correct.&lt;/p&gt;

&lt;p&gt;![Organized folders after LazyDesk](&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbi70zbp700nnz5vzyk79.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%2Fbi70zbp700nnz5vzyk79.png" alt=" " width="336" height="307"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;)&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

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

&lt;ul&gt;
&lt;li&gt;Quality depends on the model; small models misclassify.&lt;/li&gt;
&lt;li&gt;No OCR, so screenshots are judged only by filename and type.&lt;/li&gt;
&lt;li&gt;Tested on [N] files. This is a demo, not a benchmark.&lt;/li&gt;
&lt;li&gt;Local inference needs enough hardware to run the model.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Future work
&lt;/h2&gt;

&lt;p&gt;OCR for screenshots, duplicate detection, a watched inbox folder, and undo.&lt;/p&gt;
&lt;h2&gt;
  
  
  Source 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/gayeeA" rel="noopener noreferrer"&gt;
        gayeeA
      &lt;/a&gt; / &lt;a href="https://github.com/gayeeA/lazydesk" rel="noopener noreferrer"&gt;
        lazydesk
      &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;LazyDesk 🛋️ Drop it. Forget it.&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;A local-first AI file organizer. Drop messy files in; an open-weight model running on your machine classifies them, proposes clean filenames, and, after you approve, moves them into category folders.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Problem&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Downloads and Desktop fill up with resumes, certificates, notes and scans. Renaming and sorting them is boring, so people postpone it.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Solution&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;LazyDesk extracts text from each file, asks a local model (Gemma via Ollama by default) for structured JSON, shows the proposed actions, and organizes only what you approve.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why open-weight / local AI?&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;Files can be private. The model runs on your machine through Ollama, so LazyDesk makes no cloud AI calls. Tradeoffs: it needs capable hardware and can be slower than a hosted API. This removes a third-party AI service from the loop; it does not make the whole workflow "absolutely private".&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How it works&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;React UI → FastAPI →…&lt;/p&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/gayeeA/lazydesk" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&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;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>😂 I Built a Resume Generator Based on Mood (Worst Career Tool Ever)</title>
      <dc:creator>Gayathri Ande</dc:creator>
      <pubDate>Sat, 11 Apr 2026 18:26:02 +0000</pubDate>
      <link>https://dev.to/gayathri_ande_d4a1096a4ee/i-built-a-resume-generator-based-on-mood-worst-career-tool-ever-1if5</link>
      <guid>https://dev.to/gayathri_ande_d4a1096a4ee/i-built-a-resume-generator-based-on-mood-worst-career-tool-ever-1if5</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the DEV April Fools Challenge&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  😂 I Built a Resume Generator Based on Mood (Worst Career Tool Ever)
&lt;/h1&gt;

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

&lt;p&gt;Ever wondered what your resume would look like if your emotions took over?&lt;/p&gt;

&lt;p&gt;I built a &lt;strong&gt;Mood-Based Resume Generator&lt;/strong&gt; that creates completely useless (but hilarious) resumes based on your mood.&lt;/p&gt;

&lt;p&gt;Instead of helping you get a job, this tool will probably make recruiters block you 😄&lt;/p&gt;




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

&lt;p&gt;👉 Live App: &lt;a href="https://gayeea.github.io/Mood_based_resume/" rel="noopener noreferrer"&gt;https://gayeea.github.io/Mood_based_resume/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  👉 GitHub Repo: &lt;a href="https://github.com/gayeeA/Mood_based_resume/" rel="noopener noreferrer"&gt;https://github.com/gayeeA/Mood_based_resume/&lt;/a&gt;
&lt;/h2&gt;

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

&lt;p&gt;The project is built using simple frontend technologies. Here's the core idea:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User enters name &amp;amp; role&lt;/li&gt;
&lt;li&gt;Selects a mood&lt;/li&gt;
&lt;li&gt;JavaScript generates a chaotic resume&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example logic:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;mood&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;angry&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;I dominated every project and crushed deadlines. Hire me or regret it.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






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

&lt;ul&gt;
&lt;li&gt;HTML for structure&lt;/li&gt;
&lt;li&gt;CSS for styling&lt;/li&gt;
&lt;li&gt;JavaScript for generating mood-based content&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No backend. No database. No purpose. Just vibes.&lt;/p&gt;




&lt;h2&gt;
  
  
  😂 Example Outputs
&lt;/h2&gt;

&lt;p&gt;😡 &lt;strong&gt;Angry Mode&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I dominated every project and crushed deadlines. Hire me or regret it."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;😭 &lt;strong&gt;Sad Mode&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I tried my best… sometimes things worked… sometimes not…"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;😎 &lt;strong&gt;Overconfident Mode&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I am the greatest developer alive. My code is flawless."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🤖 &lt;strong&gt;Robot Mode&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Human executed assigned tasks. Efficiency: HIGH."&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🤡 Why It's Useless
&lt;/h2&gt;

&lt;p&gt;Because no recruiter would ever accept a resume like this.&lt;/p&gt;

&lt;p&gt;But it &lt;em&gt;does&lt;/em&gt; answer an important question:&lt;br&gt;
👉 What if your feelings wrote your resume?&lt;/p&gt;




&lt;h2&gt;
  
  
  🏆 Prize Category
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Community Favorite&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because this project is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Funny&lt;/li&gt;
&lt;li&gt;Relatable&lt;/li&gt;
&lt;li&gt;Slightly painful&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;This was built purely for fun and chaos.&lt;/p&gt;

&lt;p&gt;Sometimes, the best way to learn is to stop being serious and just build something ridiculous.&lt;/p&gt;

&lt;p&gt;Mission: accomplished 😄&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>418challenge</category>
      <category>showdev</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
