<?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: Noha M.</title>
    <description>The latest articles on DEV Community by Noha M. (@nohaaaa).</description>
    <link>https://dev.to/nohaaaa</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%2F217422%2F9d34af5e-c046-46e3-aef4-e501bcf92f6e.png</url>
      <title>DEV Community: Noha M.</title>
      <link>https://dev.to/nohaaaa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nohaaaa"/>
    <language>en</language>
    <item>
      <title>TeachMyPC: I wanted file automation without giving AI control of my Mac</title>
      <dc:creator>Noha M.</dc:creator>
      <pubDate>Sun, 18 Oct 2026 19:44:44 +0000</pubDate>
      <link>https://dev.to/nohaaaa/teachmypc-i-wanted-file-automation-without-giving-ai-control-of-my-mac-3l95</link>
      <guid>https://dev.to/nohaaaa/teachmypc-i-wanted-file-automation-without-giving-ai-control-of-my-mac-3l95</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I have a habit of letting files pile up in my Downloads folder. PDFs, screenshots, random documents... and eventually I have to sit down and organize everything.&lt;/p&gt;

&lt;p&gt;As a developer, I could write a script for that. But I don't really want to write and maintain a script every time I need something simple.&lt;/p&gt;

&lt;p&gt;And not everyone knows how to write scripts in the first place.&lt;/p&gt;

&lt;p&gt;So for this week's challenge, I built &lt;strong&gt;TeachMyPC&lt;/strong&gt;, a macOS desktop app that lets you describe a file automation task in plain English (or Arabic!) and turn it into a reusable rule.&lt;/p&gt;

&lt;p&gt;For example, I can write:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Move every new PDF file from my selected input folder to my selected output folder.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;TeachMyPC uses a local AI model to interpret the instruction and prepare a rule. I can then review it, choose the folders, test it, and enable it when I'm ready.&lt;/p&gt;

&lt;p&gt;After that, the app watches the selected folder and handles matching files automatically.&lt;/p&gt;

&lt;p&gt;The important part for me was making sure that AI doesn't get to do whatever it wants on my computer.&lt;/p&gt;

&lt;p&gt;It helps create the rule. It doesn't execute arbitrary commands.&lt;/p&gt;

&lt;h3&gt;
  
  
  What can it do?
&lt;/h3&gt;

&lt;p&gt;The current version supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating automation rules using natural language.&lt;/li&gt;
&lt;li&gt;Moving, copying, and renaming files.&lt;/li&gt;
&lt;li&gt;Filtering new files by extension.&lt;/li&gt;
&lt;li&gt;Reviewing and editing the AI-generated rule before saving.&lt;/li&gt;
&lt;li&gt;Testing a rule with Dry Run before actually using it.&lt;/li&gt;
&lt;li&gt;Enabling and disabling rules whenever needed.&lt;/li&gt;
&lt;li&gt;Viewing automation activity and results.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also made new rules &lt;strong&gt;disabled by default&lt;/strong&gt;. Nothing starts running just because the AI understood an instruction.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who would pay for it?
&lt;/h3&gt;

&lt;p&gt;I'm thinking of people who work with a lot of repetitive files: freelancers, designers, photographers, and small businesses.&lt;/p&gt;

&lt;p&gt;Someone who regularly downloads client PDFs, exports files, or organizes screenshots probably doesn't need a complicated automation platform. They just want those small tasks handled.&lt;/p&gt;

&lt;p&gt;My idea would be a simple paid desktop utility, possibly with a one-time license rather than another monthly subscription.&lt;/p&gt;

&lt;p&gt;I haven't validated the pricing with real customers yet. That's something I'd like to explore after the challenge.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Video walkthrough:&lt;/strong&gt; &lt;a href="https://youtu.be/escAJXVs27U" rel="noopener noreferrer"&gt;Watch TeachMyPC on YouTube&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/escAJXVs27U" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;The walkthrough was recorded from the actual macOS app, with narration generated using ElevenLabs.&lt;/p&gt;

&lt;p&gt;Here's the workflow I used for the demo:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I enter an instruction to move new PDF files.&lt;/li&gt;
&lt;li&gt;Gemma interprets it into a rule that I can review.&lt;/li&gt;
&lt;li&gt;I select the source and destination folders.&lt;/li&gt;
&lt;li&gt;I save the rule, then run a Dry Run with a sample file to check what would happen.&lt;/li&gt;
&lt;li&gt;I enable the rule and add a PDF to the watched folder.&lt;/li&gt;
&lt;li&gt;The file moves to the destination, and the result appears in Activity.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Dry Run part is worth showing because it lets me check the planned action without changing any files.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reviewing the AI-generated rule
&lt;/h3&gt;

&lt;p&gt;After Gemma interprets the instruction, TeachMyPC shows the generated rule in an editable form.&lt;/p&gt;

&lt;p&gt;In this example, it identified a new-file trigger, a &lt;code&gt;.pdf&lt;/code&gt; extension filter, and a Move action. I can review everything, change the rule name, or adjust the actions before continuing.&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%2Fp7a4t74rezrok6blm1em.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%2Fp7a4t74rezrok6blm1em.png" alt="TeachMyPC rule creation showing an AI-generated PDF move rule with an editable trigger, extension filter, and action" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing before enabling
&lt;/h3&gt;

&lt;p&gt;Once the rule is saved, it appears in the Automation Workbench, where I can check its status, authorized folders, and actions.&lt;/p&gt;

&lt;p&gt;The screenshot below shows the rule still disabled, with a Dry Run preview for a sample PDF. I can see the planned destination without actually moving the file.&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%2Fbjrbgov3egjpdktg7fio.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%2Fbjrbgov3egjpdktg7fio.png" alt="TeachMyPC Automation Workbench displaying a disabled PDF move rule, authorized folders, and a Dry Run preview" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Checking what happened
&lt;/h3&gt;

&lt;p&gt;After enabling the rule and adding files to the watched folder, TeachMyPC records the results in Activity.&lt;/p&gt;

&lt;p&gt;Each entry shows what happened to a file, whether the operation succeeded, and details like its original and destination paths. This makes it easier to check what the automation actually did.&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%2F2cxwd0gw612ligw7ujha.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%2F2cxwd0gw612ligw7ujha.png" alt="TeachMyPC Activity page showing completed file automation operations and detailed source and destination paths" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/NohaFahmi/teach-my-pc" rel="noopener noreferrer"&gt;TeachMyPC source code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;TeachMyPC is currently built and tested as a macOS desktop application. The repository includes the source code, setup instructions, and tests.&lt;/p&gt;

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

&lt;p&gt;I'm mainly a frontend developer, so I started with Angular for the interface and used Tauri to turn it into a desktop app.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Angular + TypeScript:&lt;/strong&gt; the interface, rule creation, management, and activity views.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tauri 2 + Rust:&lt;/strong&gt; native filesystem access, file watching, validation, and rule execution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama + Gemma 3 4B:&lt;/strong&gt; local interpretation of natural-language instructions.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;Instruction → Local AI → Editable Rule → Validation → Dry Run → Enable → File Automation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One design decision I spent time on was separating the AI from the execution logic.&lt;/p&gt;

&lt;p&gt;Gemma only translates an instruction into structured rule data. The Rust side checks what the rule is allowed to do and performs supported operations.&lt;/p&gt;

&lt;p&gt;I didn't want a model generating shell commands and running them directly.&lt;/p&gt;

&lt;p&gt;There are also some safeguards:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A rule can only work with folders the user has explicitly selected and authorized.&lt;/li&gt;
&lt;li&gt;Dry Run previews the action without modifying the file.&lt;/li&gt;
&lt;li&gt;Existing destination files aren't silently overwritten.&lt;/li&gt;
&lt;li&gt;Unsupported destructive actions, like deleting files, aren't supported.&lt;/li&gt;
&lt;li&gt;Failed operations are reported instead of being treated as successful.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I spent part of the final day testing the actual macOS app, not just the Angular interface. That included creating a PDF move rule, testing authorized and unauthorized file paths, checking the Dry Run behavior, and enabling and disabling rules.&lt;/p&gt;

&lt;h3&gt;
  
  
  What was tricky?
&lt;/h3&gt;

&lt;p&gt;Getting an AI model to return an answer wasn't the hardest part.&lt;/p&gt;

&lt;p&gt;Making sure that answer was safe to use was.&lt;/p&gt;

&lt;p&gt;For example, an instruction like "organize all my documents automatically" doesn't really tell the app what to do. What counts as a document? Where should the files go?&lt;/p&gt;

&lt;p&gt;In testing, I found that Gemma could sometimes generate a rule for an ambiguous instruction instead of asking for more details.&lt;/p&gt;

&lt;p&gt;That's a limitation I still want to improve. For now, the rule remains editable and disabled until the user reviews and explicitly enables it.&lt;/p&gt;

&lt;p&gt;I also learned that testing a desktop app is quite different from testing a normal web application. A passing Angular test doesn't necessarily mean file watching and filesystem operations will behave correctly in the packaged app.&lt;/p&gt;

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

&lt;p&gt;For this project, running AI locally made sense from the beginning.&lt;/p&gt;

&lt;p&gt;TeachMyPC deals with local folders and personal files. I didn't want people to need a cloud AI account just to organize those files.&lt;/p&gt;

&lt;p&gt;With Gemma running through Ollama, the instruction can be interpreted on the user's machine without sending it to a hosted model API.&lt;/p&gt;

&lt;p&gt;It also means there's no per-request API cost for interpreting rules, although running the model locally does require resources.&lt;/p&gt;

&lt;p&gt;And because the model is open-weight, I can experiment with its prompts and behavior without depending on a closed provider.&lt;/p&gt;

&lt;p&gt;I like that the AI part is replaceable, too. The filesystem engine doesn't have to change just because I want to try another model later.&lt;/p&gt;

&lt;p&gt;To me, that's the useful part of open AI here: I can use it for understanding natural language while keeping the actual automation under my control.&lt;/p&gt;

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

&lt;p&gt;There's still work to do before I'd consider TeachMyPC a product ready to sell.&lt;/p&gt;

&lt;p&gt;I want to improve how it handles vague instructions, make the first-time setup easier, and test it with people who aren't developers.&lt;/p&gt;

&lt;p&gt;I'd also like to explore more useful file conditions and rule templates without turning it into an overly complicated automation tool.&lt;/p&gt;

&lt;p&gt;For now, I'm happy that I managed to get from a plain-English instruction to an actual file being moved on my Mac.&lt;/p&gt;

&lt;p&gt;And yes, my Downloads folder could still use some cleaning.&lt;/p&gt;

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

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

&lt;p&gt;I used Gemma 3 4B through Ollama to interpret natural-language instructions and turn them into structured file automation rules.&lt;/p&gt;

&lt;p&gt;Gemma doesn't execute commands or modify files directly. The generated rule goes through validation and requires user approval before it can run.&lt;/p&gt;

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

&lt;p&gt;I used ElevenLabs with the Lara voice to create the narration for my demo walkthrough.&lt;/p&gt;

&lt;p&gt;I wanted the demo to feel like someone explaining a project they built, rather than a promotional video. ElevenLabs helped me put together a narrated walkthrough of the actual macOS application, from creating a rule to watching it work.&lt;/p&gt;

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