<?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: Bethwel Kiplagat</title>
    <description>The latest articles on DEV Community by Bethwel Kiplagat (@bethwel3001).</description>
    <link>https://dev.to/bethwel3001</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%2F3727751%2F0d9dcc8f-274e-42d1-a931-31b5dd831880.jpeg</url>
      <title>DEV Community: Bethwel Kiplagat</title>
      <link>https://dev.to/bethwel3001</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bethwel3001"/>
    <language>en</language>
    <item>
      <title>SlothSort: The Ultimate Lazy Downloads Organizer 🦥</title>
      <dc:creator>Bethwel Kiplagat</dc:creator>
      <pubDate>Sun, 25 Oct 2026 17:04:37 +0000</pubDate>
      <link>https://dev.to/bethwel3001/slothsort-the-ultimate-lazy-downloads-organizer-4c0h</link>
      <guid>https://dev.to/bethwel3001/slothsort-the-ultimate-lazy-downloads-organizer-4c0h</guid>
      <description>&lt;h2&gt;
  
  
  The Lazy Payoff
&lt;/h2&gt;

&lt;p&gt;Let's be honest: nobody actually organizes their &lt;code&gt;Downloads&lt;/code&gt; folder. Between juggling tech projects, running community events, and everyday life, dragging and dropping files into neat little subfolders is the ultimate chore. So, for the &lt;strong&gt;Slow and Steady&lt;/strong&gt; challenge, I decided to channel my inner sloth and build something that does the work for me, forever.&lt;br&gt;
Meet &lt;strong&gt;SlothSort&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;It’s a local AI agent that periodically scans your chaotic, cluttered folders, reads filenames, and automatically routes them into structured directories (like &lt;code&gt;/Finances&lt;/code&gt;, &lt;code&gt;/Code&lt;/code&gt;, &lt;code&gt;/Images&lt;/code&gt;, or &lt;code&gt;/Trash&lt;/code&gt;). You literally just click a big black button, lean back, and watch your digital mess vanish. No drag-and-drop, no thinking, pure laziness rewarded.&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%2F20ome13w30512n029tfe.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%2F20ome13w30512n029tfe.png" alt=" " width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;I wanted the UI to be zero-friction. I built the frontend using &lt;strong&gt;Next.js&lt;/strong&gt; and &lt;strong&gt;Tailwind CSS&lt;/strong&gt;, heavily inspired by Mainstack's minimalist, stark black-and-white aesthetic. Soft rounded corners, bold typography, and a single call-to-action: "Do The Work For Me."&lt;/p&gt;

&lt;p&gt;Behind the sleek UI, the backend is where the magic happens:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Local File System:&lt;/strong&gt; A Node.js API reads the designated messy folder.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Agent Brain:&lt;/strong&gt; I used &lt;strong&gt;Mastra&lt;/strong&gt; to orchestrate the AI logic. The agent is fed the filename and instructed to return exactly one destination category.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Execution:&lt;/strong&gt; The agent calls a local instance of &lt;strong&gt;Gemma 2B&lt;/strong&gt; running via Ollama to make the sorting decision, then uses Node's &lt;code&gt;fs&lt;/code&gt; to physically move the files.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;This project simply could not exist securely using closed-source AI. &lt;/p&gt;

&lt;p&gt;Our download folders are filled with highly sensitive data: bank statements, tax returns, SSH keys, unreleased code, and personal photos. Sending file names like &lt;code&gt;2026_Bank_Statement_Final.pdf&lt;/code&gt; to a proprietary third-party API is a massive privacy risk. &lt;/p&gt;

&lt;p&gt;By building this with &lt;strong&gt;open-weight models running locally&lt;/strong&gt;, the data never leaves my machine. Open innovation means my automation works flawlessly without an internet connection, keeps my personal files entirely on my own hardware, and costs exactly $0 in API fees to run forever. It’s the ultimate set-it-and-forget-it solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Partner Technologies Used
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Best Use of Gemma:&lt;/strong&gt; The core decision engine of SlothSort is powered by Google's &lt;strong&gt;Gemma (2B)&lt;/strong&gt;. Running Gemma locally via Ollama meant I got lightning-fast inference on my laptop without sacrificing my privacy. The 2B model is remarkably good at contextualizing file names (e.g., knowing &lt;code&gt;Q3_Invoice.pdf&lt;/code&gt; goes to Finances) with very little overhead.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Best Use of Mastra:&lt;/strong&gt; I used Mastra as the agent framework to orchestrate the workflow between the local file system and the local Gemma model, keeping the agent logic clean and scalable. &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Best Use of Sentry Agent Tracing:&lt;/strong&gt; I integrated Sentry into the Next.js API routes to trace the agent's execution. By wrapping the Mastra/Gemma calls in custom Sentry spans (&lt;code&gt;gemma-local-inference&lt;/code&gt;), I could monitor exactly how much latency the local LLM added to the file-sorting process and track execution times directly from the Sentry dashboard. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Happy International Sloth Day! Build smart, run local, and let the agents do the heavy lifting while you take a nap. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Check out the repo here: &lt;a href="https://github.com/bethwel3001/SlothSort" rel="noopener noreferrer"&gt;SlothSort GitHub Repository&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>Voco</title>
      <dc:creator>Bethwel Kiplagat</dc:creator>
      <pubDate>Sun, 18 Oct 2026 18:44:18 +0000</pubDate>
      <link>https://dev.to/bethwel3001/voco-20f4</link>
      <guid>https://dev.to/bethwel3001/voco-20f4</guid>
      <description>&lt;p&gt;What I Built&lt;br&gt;
I built Voco, a Voice-First Event RSVP Engine designed to solve one of the biggest headaches for community organizers and field operations teams: RSVP-to-attendance drop-off.&lt;/p&gt;

&lt;p&gt;Event organizers, tech communities (like GDG or Campus Spark), and maker labs often suffer from low turnout despite high registration numbers because standard text or email reminders get ignored. Voco solves this by allowing organizers to upload their RSVP lists and automatically generate highly personalized, human-sounding voice reminder calls or audio drops for each attendee.&lt;/p&gt;

&lt;p&gt;Because it actually gets people in the door, local event organizers and niche community leads would gladly pay a small per-event fee ($10-$20) or a monthly SaaS subscription to use it.&lt;/p&gt;

&lt;p&gt;Code&lt;br&gt;
&lt;/p&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/bethwel3001" rel="noopener noreferrer"&gt;
        bethwel3001
      &lt;/a&gt; / &lt;a href="https://github.com/bethwel3001/voco" rel="noopener noreferrer"&gt;
        voco
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Voice-First Event RSVP Engine designed to solve one of the biggest headaches for community organizers and field operations teams: RSVP-to-attendance drop-off.
    &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;Voco&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;A minimalist, Voice-First Event RSVP Engine that converts standard RSVP lists into personalized, AI-generated voice reminders to increase event attendance.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Tech Stack&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Vite&lt;/li&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;pnpm&lt;/li&gt;
&lt;li&gt;Llama-3&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Folder Structure&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/voco&lt;/code&gt;: Frontend application built with React and Vite. Provides a minimalist light-mode dashboard for CSV roster uploads, campaign tracking, and audio preview playback.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/api&lt;/code&gt;: Backend service built with Node.js and Express. Handles CSV ingestion, MongoDB Atlas persistence, Llama-3 script generation, and ElevenLabs voice synthesis.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Use Cases&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Technical community events seeking to improve registrant turnout.&lt;/li&gt;
&lt;li&gt;Field operations teams coordinating high-touch logistics to reduce RSVP drop-off.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Hacktoberfest Integration&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Render&lt;/strong&gt;: Hosts the Node.js API and open-weight model integration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MongoDB Atlas&lt;/strong&gt;: Serves as the primary database for events and attendee statuses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ElevenLabs&lt;/strong&gt;: Synthesizes the text generated by the open-weight model into human-sounding audio.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sentry&lt;/strong&gt;: Traces backend API performance and monitors AI inference latency.&lt;/li&gt;
&lt;/ul&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/bethwel3001/voco" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;How I Built It&lt;br&gt;
Voco is designed to be incredibly lean and professional. The UI is a strict, light-mode functional dashboard built with React, Vite, TypeScript, and pnpm, heavily optimized for speed and utility.&lt;/p&gt;

&lt;p&gt;The backend runs on Render, orchestrating the AI workflow:&lt;/p&gt;

&lt;p&gt;Data Layer: MongoDB Atlas securely stores event details and attendee states.&lt;/p&gt;

&lt;p&gt;Open-Source AI Core: I utilized an open-weight model (like Llama-3) to parse the attendee data (Name, Role, Event) and dynamically write a personalized, 2-sentence conversational reminder script.&lt;/p&gt;

&lt;p&gt;Voice Synthesis: ElevenLabs takes the open-weight model's text and synthesizes a warm, energetic voice.&lt;/p&gt;

&lt;p&gt;Observability: Sentry is integrated into the Node.js backend to trace the pipeline, monitor latency, and catch any inference timeouts when hitting the AI APIs.&lt;/p&gt;

&lt;p&gt;Why Does Open Innovation Matter?&lt;br&gt;
For a side hustle like Voco, open innovation is the only way the unit economics and privacy guarantees actually work.&lt;/p&gt;

&lt;p&gt;Protecting Margins: By relying on open-weight models instead of closed, general-purpose APIs, the per-message generation cost remains near zero. This ensures the side hustle remains profitable even if scaled to hundreds of events.&lt;/p&gt;

&lt;p&gt;Data Privacy: Organizers are trusting Voco with their communities' phone numbers, names, and job titles. Utilizing open-source AI ensures that attendee data isn't being fed into a proprietary black box to train someone else's model. The data stays strictly within the architecture we control.&lt;/p&gt;

&lt;p&gt;My Agent Session&lt;br&gt;
My First User&lt;br&gt;
I tested Voco with a local tech community event. The organizer loved how the personalized voice clips cut through the noise of standard email reminders, and attendees felt a much stronger personal connection to the event, resulting in a higher turnout rate.&lt;/p&gt;

&lt;p&gt;Prize Categories&lt;br&gt;
I am submitting Voco for the following partner prize categories:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Best Use of Render: The Node.js backend and AI orchestration pipeline are hosted securely on Render.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Best Use of ElevenLabs: Used to generate the final, human-sounding voice narration from the AI-generated scripts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Best Use of MongoDB Atlas: Used as the core database to store RSVP lists, event details, and campaign statuses.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Best Use of Sentry Agent Tracing: Implemented to monitor backend performance, trace the AI generation pipeline, and debug latency issues.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>PORI (Phone Offline, Roam Instantly)</title>
      <dc:creator>Bethwel Kiplagat</dc:creator>
      <pubDate>Wed, 07 Oct 2026 19:42:00 +0000</pubDate>
      <link>https://dev.to/bethwel3001/pori-phone-offline-roam-instantly-43ai</link>
      <guid>https://dev.to/bethwel3001/pori-phone-offline-roam-instantly-43ai</guid>
      <description>&lt;p&gt;What I Built&lt;br&gt;
Every outdoor or hiking app has the same fundamental flaw: you have to stare at a screen to use it. &lt;/p&gt;

&lt;p&gt;For the Hacktoberfest Touch Grass challenge, I built PORI (Phone Offline, Roam Instantly). PORI is a hyper-local, audio-first urban explorer that physically forces you to put your phone in your pocket. &lt;/p&gt;

&lt;p&gt;You input a destination, put your headphones on, and click start. The app uses real-time reverse geocoding to identify exactly which street, park, or landmark you are standing near. It then feeds that context into a localized open-weight AI model to generate a custom, highly specific walking route. &lt;/p&gt;

&lt;p&gt;The twist? Once the route starts, PORI triggers an OLED Blackout Mode, rendering a pure black screen and locking the device awake. You cannot look at a map. You simply listen to the AI guide you past local landmarks until you reach your destination.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live App:&lt;/strong&gt; &lt;a href="https://poki-six-kappa.vercel.app/" rel="noopener noreferrer"&gt;https://poki-six-kappa.vercel.app/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/bethwel3001/poki" rel="noopener noreferrer"&gt;https://github.com/bethwel3001/poki&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;(Note: To test this properly, allow Location permissions on your device so the app can detect your surrounding landmarks!)&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It &amp;amp; Sponsor Integrations
&lt;/h2&gt;

&lt;p&gt;I built PORI using modern open-weight models, high-performance database indexing, and lightweight native browser APIs (&lt;code&gt;navigator.wakeLock&lt;/code&gt;). Here is how it meets multiple partner prize categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma:&lt;/strong&gt; Utilized Google's open-weight &lt;code&gt;gemma2-9b-it&lt;/code&gt; model via Groq for ultra-low latency. Gemma acts as a context-aware route planner: it takes raw local reverse-geocoded landmarks and translates them into a natural, highly accurate walking script formatted specifically for a voice actor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of MongoDB Atlas:&lt;/strong&gt; MongoDB Atlas serves as the core data and spatial layer. The application stores location nodes and executes high-performance geospatial &lt;code&gt;$geoNear&lt;/code&gt; queries to compute proximity and local navigation distances.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of ElevenLabs:&lt;/strong&gt; Integrated the &lt;code&gt;eleven_flash_v2_5&lt;/code&gt; model to give the navigation agent a voice. Because it is an outdoor walking app, audio generation streams nearly instantly so users are never left standing blindly on street corners waiting for instructions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Sentry:&lt;/strong&gt; Integrated Sentry for agent tracing and exception tracking. Monitoring execution spans allowed me to quickly diagnose and fix edge cases where empty string responses from the LLM could crash the TTS engine, letting me implement a resilient fallback layer.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;When you build navigation apps relying solely on closed-ecosystem maps, you are bound by their rigid routing APIs ("Walk 50m, turn left"). &lt;/p&gt;

&lt;p&gt;By leveraging open-weight models like Gemma, I was able to instruct the AI to act as a local tour guide rather than a strict calculator. It deduces logical routes, points out interesting local quirks, and formats text specifically for audio playback. Open models allow us to build deeply immersive, customizable outdoor experiences that proprietary map APIs simply cannot offer.&lt;/p&gt;

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