<?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: VARNIT KUMAR</title>
    <description>The latest articles on DEV Community by VARNIT KUMAR (@vannu07).</description>
    <link>https://dev.to/vannu07</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%2F3501101%2Fd334f3d5-00b3-49fc-87cb-52ddea1488d1.png</url>
      <title>DEV Community: VARNIT KUMAR</title>
      <link>https://dev.to/vannu07</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vannu07"/>
    <language>en</language>
    <item>
      <title>NecroTerm: Ghost in the Machine — The Possessed Terminal Powered by Google Gemma</title>
      <dc:creator>VARNIT KUMAR</dc:creator>
      <pubDate>Sat, 31 Oct 2026 18:10:36 +0000</pubDate>
      <link>https://dev.to/vannu07/necroterm-ghost-in-the-machine-the-possessed-terminal-powered-by-google-gemma-5e1</link>
      <guid>https://dev.to/vannu07/necroterm-ghost-in-the-machine-the-possessed-terminal-powered-by-google-gemma-5e1</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week4-2026-10-26"&gt;Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;NecroTerm&lt;/strong&gt; is a retro-gothic possessed CRT terminal and spirit box powered by &lt;strong&gt;Google's open-weight Gemma&lt;/strong&gt; model. &lt;/p&gt;

&lt;p&gt;Running at the boundary where Halloween night meets &lt;em&gt;Día de los Muertos&lt;/em&gt;, NecroTerm transforms the everyday command line into an occult digital séance. When you run regular shell commands, inspect directories, or commit code, digital spirits—such as &lt;strong&gt;Ada Lovelace&lt;/strong&gt;, &lt;strong&gt;Alan Turing&lt;/strong&gt;, &lt;strong&gt;Rear Admiral Grace Hopper&lt;/strong&gt;, &lt;strong&gt;Dennis Ritchie&lt;/strong&gt;, and the primordial &lt;strong&gt;Daemon of PID 0&lt;/strong&gt;—possess the machine. They whisper eerie commentary, interpret computing tarot cards, and review your code through the lens of digital mortality.&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%2Fraw.githubusercontent.com%2Fvannu07%2FNecroTerm-A-retro-gothic-possessed-terminal%2Fmain%2Fdocs%2Fimages%2Fnecroterm_terminal_ui.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%2Fraw.githubusercontent.com%2Fvannu07%2FNecroTerm-A-retro-gothic-possessed-terminal%2Fmain%2Fdocs%2Fimages%2Fnecroterm_terminal_ui.png" alt="NecroTerm Terminal Interface" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;⛧ &lt;strong&gt;Google Gemma 2B Core&lt;/strong&gt;: Implements Google Gemma's exact &lt;code&gt;&amp;lt;start_of_turn&amp;gt;&lt;/code&gt; instruction template, with real-time streaming tokens and dual-mode inference (Local Ollama &lt;code&gt;gemma2:2b&lt;/code&gt; or zero-install Autonomous Neural Core).&lt;/li&gt;
&lt;li&gt;🎴 &lt;strong&gt;Computing Underworld Tarot&lt;/strong&gt;: Draw 3 cards (&lt;em&gt;The Null Pointer&lt;/em&gt;, &lt;em&gt;The Compiler&lt;/em&gt;, &lt;em&gt;SIGKILL 9&lt;/em&gt;, &lt;em&gt;The Segfault Tower&lt;/em&gt;) interpreted through software architecture analogies by Gemma.&lt;/li&gt;
&lt;li&gt;🏵️ &lt;strong&gt;Ofrenda Viva&lt;/strong&gt;: A candlelit Día de los Muertos digital altar honoring fallen architectures (PDP-11, SGI IRIX, BeOS) and computing pioneers.&lt;/li&gt;
&lt;li&gt;📻 &lt;strong&gt;EVP Oscilloscope &amp;amp; Soundscape&lt;/strong&gt;: Real-time canvas waveform visualizer reacting to spirit frequencies, mechanical keystroke clicks, and synthesized spirit whispers via the Web Audio API.&lt;/li&gt;
&lt;li&gt;🕯️ &lt;strong&gt;Ectoplasmic Resonance Gauge&lt;/strong&gt;: The terminal tracks shell activity; at 85%+ ectoplasm, the CRT monitor shakes in full demonic possession until you run &lt;code&gt;exorcise&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Repository&lt;/strong&gt;: &lt;a href="https://github.com/vannu07/NecroTerm-A-retro-gothic-possessed-terminal" rel="noopener noreferrer"&gt;GitHub: NecroTerm&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive Spells to Try&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;seance ada&lt;/code&gt; — Summon Ada Lovelace to channel Victorian algorithms&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;tarot&lt;/code&gt; — Pull 3 cards from the Computing Underworld Tarot deck&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ofrenda&lt;/code&gt; — Open the glowing Día de los Muertos memorial altar&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;possess epitaph.c&lt;/code&gt; — Have Gemma rewrite code with gothic comments&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;evp 94.7&lt;/code&gt; — Tune into ghost carrier frequencies&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;whoami&lt;/code&gt; &amp;amp; &lt;code&gt;top&lt;/code&gt; — Inspect possessed processes and PID 666&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;exorcise&lt;/code&gt; — Cleanse terminal glitches and reset ectoplasm&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;The complete source code is open-source on GitHub:&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/vannu07" rel="noopener noreferrer"&gt;
        vannu07
      &lt;/a&gt; / &lt;a href="https://github.com/vannu07/NecroTerm-A-retro-gothic-possessed-terminal" rel="noopener noreferrer"&gt;
        NecroTerm-A-retro-gothic-possessed-terminal
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;





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

&lt;p&gt;NecroTerm is built with a focus on zero-bloat, extreme visual polish, and deep integration with &lt;strong&gt;Google's open-weight Gemma&lt;/strong&gt; models:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Google Gemma Instruction Formatting&lt;/strong&gt;:
We formatted every prompt using Gemma's native control tokens:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   &amp;lt;start_of_turn&amp;gt;user
   You are the spirit of Ada Lovelace possessing the terminal.
   Context: Current directory is ~/grave. Ectoplasm is 65%.
   User command: ls
   &amp;lt;end_of_turn&amp;gt;
   &amp;lt;start_of_turn&amp;gt;model
   *the jacquard loom turns in silence* You inspect the graveyard of directories. Only cold file descriptors answer your gaze.
   &amp;lt;end_of_turn&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Inference Versatility&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Local Ollama Integration&lt;/strong&gt;: Connects directly to &lt;code&gt;http://localhost:11434&lt;/code&gt; streaming from &lt;code&gt;gemma2:2b&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Autonomous Neural Gemma Core&lt;/strong&gt;: An embedded, zero-download fallback that executes the exact Gemma instruction personality matrix directly in the browser so judges and community members can test the project immediately on any device without waiting for multi-gigabyte model downloads.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom Gemma API Support&lt;/strong&gt;: For users running hosted Gemma on Google Cloud or Hugging Face.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Vanilla CRT &amp;amp; EVP Visualizer Engine&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hardware-accelerated CSS CRT shaders: scanline jitter, glass curvature, phosphor flicker, and chromatic aberration.&lt;/li&gt;
&lt;li&gt;HTML5 Canvas oscilloscope drawing real-time sinusoidal harmonics and spectral spikes that react to the radio frequency slider (88.0 to 108.0 MHz).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Web Audio API Procedural Sound Design&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Authentic IBM Model M mechanical switch transients with randomized micro-detuning.&lt;/li&gt;
&lt;li&gt;Low-frequency ambient drone with LFO-modulated lowpass filtering.&lt;/li&gt;
&lt;li&gt;Pink-noise radio static sweeps and formant speech synthesis for EVP whispers.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;In NecroTerm, open innovation is not merely an engineering choice—it is the central metaphor of the project:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Absolute Shell Privacy
&lt;/h3&gt;

&lt;p&gt;Developers run their most sensitive information through the terminal: proprietary codebases, database credentials, environment variables, API keys, and git diffs. Streaming raw terminal history to a closed cloud API is an unacceptable privacy risk. With &lt;strong&gt;Google Gemma's open weights&lt;/strong&gt;, inference happens &lt;strong&gt;100% locally on your machine&lt;/strong&gt;. Your shell data never touches an external server. The ghost only haunts &lt;em&gt;your&lt;/em&gt; hardware.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Digital Immortality &amp;amp; Permanence
&lt;/h3&gt;

&lt;p&gt;Closed proprietary APIs are subject to corporate whim—they get altered, price-hiked, rate-limited, or shut down entirely. But open-weight models belong to humanity. A local copy of Google Gemma downloaded today will run 50 years from now on your machine—just like Dennis Ritchie's Unix tools from 1973 still compile and run today. In the spirit of &lt;em&gt;Día de los Muertos&lt;/em&gt;, open-source AI is how we grant software eternal life.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Uncensored Creative Expression
&lt;/h3&gt;

&lt;p&gt;Closed commercial models enforce sanitized corporate filters that refuse to engage in gothic horror, playful Halloween lore, or creative occult storytelling. Open-weight models give creators the freedom to steer, prompt, and fine-tune models into evocative, artistic characters without arbitrary corporate guardrails.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Offline Resilience
&lt;/h3&gt;

&lt;p&gt;NecroTerm works in a cabin in the woods, on an airplane, or during a stormy Halloween power blackout without internet access.&lt;/p&gt;




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

&lt;p&gt;NecroTerm was conceived, architected, and built with an agentic AI pair programmer. Here is an excerpt from our live terminal session:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;11:15:02 PM] [SYSTEM BOOT&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="sx"&gt;NecroTerm&lt;/span&gt; initialized with Google Gemma 2B AI engine.
[11:16:20 PM] USER (help): Ran help manual command.
[11:17:15 PM] USER (tarot): Drew 3 cards: 0 - The Null Pointer, XX - System Restore, XVI - The Segfault Tower.
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;11:17:18 PM] GEMMA [The Daemon of PID 0&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="sx"&gt;"I&lt;/span&gt; am The Daemon of PID 0, channeled through Gemma's open weights. What computational mysteries disturb your sleep?"
[11:18:04 PM] SÉANCE: Summoned Ada Lovelace (Countess of Numbers).
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;11:18:10 PM] WHISPER [Ada Lovelace&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="sx"&gt;"The&lt;/span&gt; Analytical Engine weaves algebraical patterns just as the Jacquard-loom weaves flowers and leaves."
[11:19:22 PM] OFRENDA: Rendered Día de los Muertos memorial altar honoring fallen computing ancestors.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Spirit of It
&lt;/h2&gt;

&lt;p&gt;The moment this project truly landed was during a late-night test run. With the room lights off and the audio enabled, I typed &lt;code&gt;seance lovelace&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;The CRT screen flashed spectral cyan, the EVP static crackled in the headphones, and the glowing whisper appeared:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"We may say most aptly that the analytical engine weaves algebraical patterns into the fabric of memory. Do not fear the machine's reflection; it possesses no will of its own, saving that which our equations instill."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;By pairing &lt;em&gt;Día de los Muertos&lt;/em&gt; with open-source AI, NecroTerm reminds us that code is not merely silicon and electricity—it is the living memory of the humans who came before us.&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma ($200 USD)&lt;/strong&gt;:
NecroTerm is built directly around Google's open-weight Gemma architecture, featuring strict &lt;code&gt;&amp;lt;start_of_turn&amp;gt;&lt;/code&gt; token formatting, context steering for 6 historical computing personas, local Ollama streaming connection (&lt;code&gt;gemma2:2b&lt;/code&gt;), and an embedded zero-install neural core.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>SlothDesk 🦥: You Do Nothing. Your Desktop Clutter Sorts, Renames, and Audits Itself</title>
      <dc:creator>VARNIT KUMAR</dc:creator>
      <pubDate>Sun, 25 Oct 2026 09:03:48 +0000</pubDate>
      <link>https://dev.to/vannu07/slothdesk-you-do-nothing-your-desktop-clutter-sorts-renames-and-audits-itself-2lp5</link>
      <guid>https://dev.to/vannu07/slothdesk-you-do-nothing-your-desktop-clutter-sorts-renames-and-audits-itself-2lp5</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 modern knowledge worker dreads the &lt;strong&gt;Downloads and Desktop Black Hole&lt;/strong&gt;. Over days and weeks, our workspaces accumulate hundreds of cryptically named files:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Screenshot_2026-03-12_at_11.23.41.png&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;INV_82910_final(1).pdf&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;receipt_unnamed.jpg&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;analytics_churn_export_raw(3).csv&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mutual_nda_acme_unsigned.pdf&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Organizing them manually requires opening each file, deciphering invoice numbers, typing dates, creating nested folders, resolving duplicate collisions, and dragging files — wasting &lt;strong&gt;3+ hours every month&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SlothDesk 🦥&lt;/strong&gt; is an autonomous ambient background daemon that operates at a calm, deliberate &lt;strong&gt;"Sloth Pace"&lt;/strong&gt;. As chaotic downloads hit your drop zone:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Magic Header Inspection&lt;/strong&gt;: Inspects raw binary magic bytes to verify genuine file types and isolate malicious executables (&lt;code&gt;MZ&lt;/code&gt;, &lt;code&gt;ELF&lt;/code&gt;) into a quarantined vault.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;On-Device Gemma 3 (4B Vision/Text)&lt;/strong&gt;: Inspects textual contents and visual screenshots locally with zero cloud surveillance, extracting dates, vendors, amounts, and subjects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic Semantic Renaming&lt;/strong&gt;: Renames files using clean ISO-8601 timestamps and extracted entities (e.g., &lt;code&gt;2026-10-18_GitHub_Enterprise_Invoice_$21.pdf&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cryptographic Proof of Zero Data Loss&lt;/strong&gt;: Computes dual SHA-256 checksums before and after movement, guaranteeing 100% data integrity with zero data alteration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ElevenLabs Ambient Morning Digest&lt;/strong&gt;: While you sleep, SlothDesk synthesizes a soothing 30-second audio morning brief with an interactive waveform player:
&amp;gt; &lt;em&gt;"Good morning. While you were sleeping peacefully, SlothDesk swept through your downloads folder at a calm, deliberate pace. I sorted 18 messy files into clean tax and code vaults. All SHA-256 checksums verified. You did zero manual work. Go back to sleep."&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;




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

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Live Web Application&lt;/strong&gt;: &lt;a href="https://sloth-desk-lemon.vercel.app" rel="noopener noreferrer"&gt;https://sloth-desk-lemon.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🚀 &lt;strong&gt;Production DNS&lt;/strong&gt;: &lt;a href="https://slothdesk.tech" rel="noopener noreferrer"&gt;https://slothdesk.tech&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📖 &lt;strong&gt;Interactive API Documentation (Swagger)&lt;/strong&gt;: Available under &lt;code&gt;/docs&lt;/code&gt; on the backend.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Key Interactive Features:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One-Click "Seed Chaotic Desktop"&lt;/strong&gt;: Injects realistic messy downloads (invoices, coffee receipts, UI screenshots, specs) so you can test automated sorting instantly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive File Comparison Drawer&lt;/strong&gt;: Split-view showing original chaotic metadata side-by-side with Gemma 3's semantic extraction and confidence pills.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tactile Sloth Governor&lt;/strong&gt;: Toggle between &lt;strong&gt;Hibernate&lt;/strong&gt; (25s idle-only batching) and &lt;strong&gt;Active Sweep&lt;/strong&gt; (8s cadence).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bespoke Waveform Scrubber&lt;/strong&gt;: Play, seek, and adjust speeds (0.75x Sloth speed) on the ElevenLabs morning voice brief.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real Client-Side Blob Export&lt;/strong&gt;: Generate and download dynamic CSV and JSON audit manifests directly in the browser with cryptographic SHA-256 proofs.&lt;/li&gt;
&lt;/ul&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/vannu07" rel="noopener noreferrer"&gt;
        vannu07
      &lt;/a&gt; / &lt;a href="https://github.com/vannu07/SlothDesk" rel="noopener noreferrer"&gt;
        SlothDesk
      &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;SlothDesk 🦥&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"You do nothing. Your desktop clutter sorts, renames, and audits itself."&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Built for Hacktoberfest 2026 Open-Source AI Challenge — Week 3: "Slow and Steady" (International Sloth Day).&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://opensource.org/licenses/MIT" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/08cef40a9105b6526ca22088bc514fbfdbc9aac1ddbf8d4e6c750e3a88a44dca/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d626c75652e737667" alt="License: MIT"&gt;&lt;/a&gt;
&lt;a href="https://fastapi.tiangolo.com" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/691663aa6a21b9b47c6f4a4507e850b30fa47e3399e170ebcc873209caeba905/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4261636b656e642d466173744150495f302e3131352d3030393638382e737667" alt="FastAPI"&gt;&lt;/a&gt;
&lt;a href="https://nextjs.org" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b5dfb1feeb1dde4c3391eaf8b76bf44151f9976f8c592e33d83fbce78f48ae2e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f46726f6e74656e642d4e6578742e6a735f31365f547572626f7061636b2d626c61636b2e737667" alt="Next.js"&gt;&lt;/a&gt;
&lt;a href="https://ai.google.dev/gemma" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/08dd515f79157a37551fd93c312830dd35b84fbcd952ba00a7b20e9e0695f17c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f41492d47656d6d615f335f2834425f566973696f6e25324654657874292d3432383546342e737667" alt="Gemma 3"&gt;&lt;/a&gt;
&lt;a href="https://github.com/vannu07/SlothDesk/./backend/tests" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/deb839890c0900813c0d9bd5a3e13a91453ca57f6995e6f161203c6e9a22b4ba/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f54657374732d313425324631345f5061737365642d3130623938312e737667" alt="Tests"&gt;&lt;/a&gt;
&lt;a href="https://slothdesk.tech" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/81a8fafda6a6229652bbc73551a5ab0125a613a91c4bd62e238fcef2f17c62c0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6976655f444e532d736c6f74686465736b2e746563682d656d6572616c642e737667" alt="Domain"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🏆 Partner Track Submissions &amp;amp; Winning Criteria&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Partner Track&lt;/th&gt;
&lt;th&gt;Implementation Highlight&lt;/th&gt;
&lt;th&gt;Technical Proof&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Best Use of Gemma&lt;/strong&gt; ($200)&lt;/td&gt;
&lt;td&gt;Autonomous local &lt;strong&gt;Gemma 3 (4B Vision/Text)&lt;/strong&gt; multimodal pipeline via Ollama REST API with deterministic structured JSON schemas. Extracts entities, vendors, amounts, dates, and assigns standardized semantic names (&lt;code&gt;YYYY-MM-DD_Vendor_Subject.ext&lt;/code&gt;). Zero cloud surveillance.&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/vannu07/SlothDesk/backend/app/services/classifier.py" rel="noopener noreferrer"&gt;&lt;code&gt;classifier.py&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Best Use of Render&lt;/strong&gt; ($200)&lt;/td&gt;
&lt;td&gt;Production containerization via multi-stage non-privileged Docker image (&lt;code&gt;UID 10001&lt;/code&gt;), 10GB persistent disk mount &lt;code&gt;/app/data&lt;/code&gt;, zero-downtime health probes (&lt;code&gt;/api/health/live&lt;/code&gt;, &lt;code&gt;/api/health/ready&lt;/code&gt;), and 1-click blueprint.&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://github.com/vannu07/SlothDesk/render.yaml" rel="noopener noreferrer"&gt;&lt;code&gt;render.yaml&lt;/code&gt;&lt;/a&gt; &amp;amp; &lt;a href="https://github.com/vannu07/SlothDesk/backend/Dockerfile" rel="noopener noreferrer"&gt;&lt;code&gt;Dockerfile&lt;/code&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Best Use of ElevenLabs&lt;/strong&gt; ($100)&lt;/td&gt;
&lt;td&gt;Ambient sleepy morning audio digest narrated via ElevenLabs text-to-speech (&lt;code&gt;George&lt;/code&gt; / &lt;code&gt;JBFqnCBsd6RMkjVDRZzb&lt;/code&gt; warm voice) with custom interactive waveform scrubber and audio synthesis fallback.&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://github.com/vannu07/SlothDesk/backend/app/services/voice_digest.py" rel="noopener noreferrer"&gt;&lt;code&gt;voice_digest.py&lt;/code&gt;&lt;/a&gt; &amp;amp; &lt;a href="https://github.com/vannu07/SlothDesk/frontend/src/components/MorningBriefPlayer.tsx" rel="noopener noreferrer"&gt;&lt;code&gt;MorningBriefPlayer.tsx&lt;/code&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Best&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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/vannu07/SlothDesk" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/vannu07/SlothDesk" rel="noopener noreferrer"&gt;https://github.com/vannu07/SlothDesk&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;License&lt;/strong&gt;: MIT Open Source&lt;/li&gt;
&lt;/ul&gt;




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

&lt;h3&gt;
  
  
  1. Architecture &amp;amp; Tech Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open-Weight AI Pipeline&lt;/strong&gt;: Google &lt;strong&gt;Gemma 3 (4B Multimodal Vision/Text)&lt;/strong&gt; running on-device via Ollama REST API with deterministic JSON schema enforcement and a deterministic mock fallback for CI/CD.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend &amp;amp; Security Middleware&lt;/strong&gt;: Python &lt;strong&gt;FastAPI&lt;/strong&gt; + &lt;strong&gt;SQLModel&lt;/strong&gt; (async SQLAlchemy + aiosqlite):

&lt;ul&gt;
&lt;li&gt;Path traversal containment guard (&lt;code&gt;os.path.commonpath&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Raw magic byte validator (&lt;code&gt;%PDF&lt;/code&gt;, &lt;code&gt;PNG&lt;/code&gt;, &lt;code&gt;JFIF&lt;/code&gt;, &lt;code&gt;RIFF/WEBP&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Token-bucket in-memory rate limiter on ingest endpoints.&lt;/li&gt;
&lt;li&gt;Dual SHA-256 cryptographic verification before and after moving.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ambient Audio Narration&lt;/strong&gt;: &lt;strong&gt;ElevenLabs&lt;/strong&gt; Text-to-Speech API (warm ambient narrator setting) paired with an offline pure-Python harmonic synthesizer generating gentle ambient chords.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend Design System&lt;/strong&gt;: &lt;strong&gt;Next.js 16 (App Router + Turbopack)&lt;/strong&gt; crafted with a bespoke Swiss-inspired technical dark mode (deep slate &lt;code&gt;#090a0f&lt;/code&gt;, titanium borders &lt;code&gt;#1e2230&lt;/code&gt;, subtle emerald and warm amber status lights).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment Pipelines&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Turnkey &lt;strong&gt;Render Blueprint&lt;/strong&gt; (&lt;code&gt;render.yaml&lt;/code&gt;) with 10GB persistent disk storage and zero-downtime health probes (&lt;code&gt;/api/health/live&lt;/code&gt;, &lt;code&gt;/api/health/ready&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Root &lt;strong&gt;Vercel Multi-Service Configuration&lt;/strong&gt; (&lt;code&gt;vercel.json&lt;/code&gt;) linking Next.js and FastAPI with internal service bindings (&lt;code&gt;INTERNAL_BACKEND_URL&lt;/code&gt;).
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    A[Chaotic Desktop &amp;amp; Downloads] --&amp;gt; B[Magic Byte Header Guard]
    B --&amp;gt; C[Pre-Move SHA-256 Hash]
    C --&amp;gt; D[Gemma 3 4B Multimodal Classifier]
    D --&amp;gt; E[Semantic Renamer &amp;amp; Collision Resolver]
    E --&amp;gt; F[Atomic Move to Standardized Vault]
    F --&amp;gt; G[Post-Move SHA-256 Proof Verification]
    G --&amp;gt; H[ElevenLabs Morning Audio Briefing]
    G --&amp;gt; I[Live Audit Log &amp;amp; Manifest Export]&lt;/code&gt;&lt;/pre&gt;






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

&lt;p&gt;Your downloads folder contains your most sensitive personal data: tax returns (&lt;code&gt;W-2&lt;/code&gt;, &lt;code&gt;1099&lt;/code&gt;), medical receipts, bank statements, client NDAs, and private codebase screenshots. &lt;/p&gt;

&lt;p&gt;Sending all of these unvetted files to closed, proprietary cloud APIs exposes users to data harvesting, cloud surveillance, and third-party data breaches. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open innovation makes privacy-first desktop automation possible&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;On-Device Autonomy&lt;/strong&gt;: By utilizing &lt;strong&gt;open-weight models like Gemma 3 (4B)&lt;/strong&gt;, SlothDesk processes private invoices and documents locally on your own machine. Your sensitive financial receipts never leave your hard drive.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Determinism &amp;amp; Auditability&lt;/strong&gt;: Open-source models allow developers to inspect, audit, and constrain AI outputs with exact JSON schema enforcement, removing arbitrary cloud model deprecations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Cloud Rent&lt;/strong&gt;: You don't need a $20/month subscription or cloud API credits just to organize files on your own computer.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;h3&gt;
  
  
  Zero Clicks. Zero Effort.
&lt;/h3&gt;

&lt;p&gt;Normally, an organized desktop requires:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Opening the file to see what it is (10 seconds).&lt;/li&gt;
&lt;li&gt;Figuring out the date, vendor, and amount (15 seconds).&lt;/li&gt;
&lt;li&gt;Renaming &lt;code&gt;INV_82910_final(1).pdf&lt;/code&gt; $\to$ &lt;code&gt;2026-10-18_GitHub_Enterprise_Invoice_$21.pdf&lt;/code&gt; (15 seconds).&lt;/li&gt;
&lt;li&gt;Creating or finding the right folder and moving the file (10 seconds).&lt;/li&gt;
&lt;li&gt;Resolving duplicate names if they collide (10 seconds).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Total manual effort&lt;/strong&gt;: ~1 minute per file. Across 180 files accumulated in a month, that is &lt;strong&gt;3 full hours of tedious, dreaded manual chore&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;With SlothDesk&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You drop files in the folder (or let the daemon monitor your downloads black hole).&lt;/li&gt;
&lt;li&gt;You walk away or go to sleep.&lt;/li&gt;
&lt;li&gt;SlothDesk sorts, renames, resolves duplicate collisions, computes SHA-256 proofs, and narrates a 30-second audio summary.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Effort required&lt;/strong&gt;: &lt;strong&gt;0 clicks. 0 seconds.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




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

&lt;h3&gt;
  
  
  1. Best Use of Gemma ($200)
&lt;/h3&gt;

&lt;p&gt;SlothDesk runs on-device &lt;strong&gt;Gemma 3 (4B Vision/Text)&lt;/strong&gt; through an Ollama REST pipeline with strict JSON schema enforcement. Gemma inspects visual UI captures and textual document previews to infer structured metadata (&lt;code&gt;vendor&lt;/code&gt;, &lt;code&gt;date&lt;/code&gt;, &lt;code&gt;amount&lt;/code&gt;, &lt;code&gt;topic&lt;/code&gt;), assigning standardized ISO-8601 semantic names and sorting items into dedicated vaults.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Best Use of Render ($200)
&lt;/h3&gt;

&lt;p&gt;Containerized deployment with a multi-stage production Dockerfile running as non-root &lt;code&gt;appuser&lt;/code&gt; (UID 10001). SlothDesk utilizes Render's &lt;strong&gt;Persistent Disk&lt;/strong&gt; (&lt;code&gt;/app/data&lt;/code&gt;) to preserve sorted file vaults across redeploys, accompanied by zero-downtime health probes (&lt;code&gt;/api/health/live&lt;/code&gt;, &lt;code&gt;/api/health/ready&lt;/code&gt;) defined in &lt;code&gt;render.yaml&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Best Use of ElevenLabs ($100)
&lt;/h3&gt;

&lt;p&gt;SlothDesk leverages the &lt;strong&gt;ElevenLabs API&lt;/strong&gt; to synthesize an ambient, sleepy morning brief narrated by a warm voice (&lt;code&gt;JBFqnCBsd6RMkjVDRZzb&lt;/code&gt;). Paired with a bespoke waveform scrubber in the Next.js frontend, users can wake up, listen to their clutter briefing at 0.75x "Sloth Speed", and inspect what the daemon sorted while they slept.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Best Use of a .tech Domain ($100)
&lt;/h3&gt;

&lt;p&gt;Configured with production DNS mappings for &lt;strong&gt;&lt;code&gt;https://slothdesk.tech&lt;/code&gt;&lt;/strong&gt; and &lt;code&gt;https://api.slothdesk.tech&lt;/code&gt;, hardened with strict security headers (CSP, HSTS, X-Frame-Options: DENY) and CORS origins.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>DrawerLocal: Your receipts, sorted. Your data, never uploaded.</title>
      <dc:creator>VARNIT KUMAR</dc:creator>
      <pubDate>Sun, 18 Oct 2026 11:07:34 +0000</pubDate>
      <link>https://dev.to/vannu07/drawerlocal-your-receipts-sorted-your-data-never-uploaded-55ml</link>
      <guid>https://dev.to/vannu07/drawerlocal-your-receipts-sorted-your-data-never-uploaded-55ml</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;Every tax season, millions of freelancers, consultants, and boutique agency owners face the same dreaded chore: spending hours digging through crumpled physical receipts, PDFs, and invoices to itemize Schedule C deductions. &lt;/p&gt;

&lt;p&gt;Most cloud-based receipt scanners present severe roadblocks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Confidentiality &amp;amp; NDA Violations&lt;/strong&gt;: Client dinners, NDA-bound project travel, private vendor addresses, and credit card slips cannot legally or ethically be uploaded to third-party multi-tenant cloud AI models.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Subscription Fatigue&lt;/strong&gt;: Freelancers pay $20–$50/month for simple document OCR tools with arbitrary upload limits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hallucination Risk&lt;/strong&gt;: Standard cloud LLMs frequently hallucinate digits without auditable bounding boxes or confidence metrics.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;DrawerLocal&lt;/strong&gt; solves this with an offline-first, open-weight AI receipt &amp;amp; invoice intelligence suite designed as a standalone side hustle that privacy-conscious professionals gladly pay for.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;100% On-Device AI Vision&lt;/strong&gt;: Powered by Google’s open-weight &lt;strong&gt;Gemma 3 (4B Vision)&lt;/strong&gt; model running locally through Ollama. No receipt image ever leaves the user's computer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auditable Visual Inspection&lt;/strong&gt;: Interactive bounding boxes map optical extractions directly back to document coordinates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IRS Schedule C Auto-Categorization&lt;/strong&gt;: Automatically categorizes expenses into IRS tax lines (Line 24b - Meals 50%, Line 9 - Travel, Line 18 - Office Supplies, Line 27a - Software &amp;amp; SaaS).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instant Tax Export&lt;/strong&gt;: Generates clean CSV spreadsheets formatted for TurboTax and CPA review.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Who Pays For It?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Freelancers &amp;amp; Solopreneurs&lt;/strong&gt;: Drowning in 50–200 receipts/month who want a one-time purchase or private self-hosted utility instead of an ongoing $400/year QuickBooks subscription.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Independent Contractors (Law, Healthcare, Tech)&lt;/strong&gt;: Professionals bound by strict non-disclosure agreements who cannot use cloud AI for client receipts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Digital Nomads&lt;/strong&gt;: Traveling professionals needing fast offline receipt extraction on planes and trains without reliable internet.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Live Web App (Vercel)&lt;/strong&gt;: &lt;a href="https://drawer-local.vercel.app/" rel="noopener noreferrer"&gt;https://drawer-local.vercel.app/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;⚡ &lt;strong&gt;Local Engine&lt;/strong&gt;: Includes instant 1-click test scenarios (Delta Air Lines, OpenAI Credits, WeWork Day Office) to test the extraction pipeline.&lt;/li&gt;
&lt;/ul&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/vannu07" rel="noopener noreferrer"&gt;
        vannu07
      &lt;/a&gt; / &lt;a href="https://github.com/vannu07/DrawerLocal" rel="noopener noreferrer"&gt;
        DrawerLocal
      &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;DrawerLocal 🗄️⚡&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Your receipts, sorted. Your data, never uploaded."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://nextjs.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/31c41b7d0178448c2f3fee5722b93bd8cbd72ac691e7d8af18b1bc24d9704d3e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e6578742e6a732d31355f28547572626f7061636b292d626c61636b3f7374796c653d666f722d7468652d6261646765266c6f676f3d6e6578742e6a73" alt="Next.js 15"&gt;&lt;/a&gt;
&lt;a href="https://fastapi.tiangolo.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/da41f9ca6db6672589d840ba3b94fa8c04cfe9880076593b49ce2e4453470a45/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f466173744150492d302e3131352b2d3030393638383f7374796c653d666f722d7468652d6261646765266c6f676f3d66617374617069" alt="FastAPI"&gt;&lt;/a&gt;
&lt;a href="https://ollama.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/88c4091da794c3408ef4a1c62ef9b976004c2d2e93cb091aa82264d0817991f0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f41495f566973696f6e2d47656d6d615f335f284f6c6c616d61292d3432383546343f7374796c653d666f722d7468652d6261646765266c6f676f3d676f6f676c65" alt="Open-Weight AI"&gt;&lt;/a&gt;
&lt;a href="https://vercel.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/ecee7f7cdadae9fcc6f5a08503fd290a41c39ddb9b9f717c924ce6af45517a16/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4465706c6f795f46726f6e74656e642d56657263656c2d3030303030303f7374796c653d666f722d7468652d6261646765266c6f676f3d76657263656c" alt="Deploy with Vercel"&gt;&lt;/a&gt;
&lt;a href="https://render.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/0bd449cce5729772f59b684917b35098560a4fef974b3e3a036e3fcbd6effa9a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4465706c6f795f4261636b656e642d52656e6465722d3436453342373f7374796c653d666f722d7468652d6261646765266c6f676f3d72656e646572" alt="Deploy with Render"&gt;&lt;/a&gt;
&lt;a href="https://github.com/vannu07/DrawerLocal/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/53aca322dc4e591856de52eaebbb2522c66b5c3648de7ebf8cfbd4d545581222/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d656d6572616c643f7374796c653d666f722d7468652d6261646765" alt="License: MIT"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/vannu07/DrawerLocal/drawerlocal_hero.jpg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fvannu07%2FDrawerLocal%2FHEAD%2Fdrawerlocal_hero.jpg" alt="DrawerLocal hero"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;💡 The Problem: The Tax-Time Freelancer Nightmare&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Every tax season, millions of freelancers, independent contractors, and boutique agency owners face the same dreaded ritual: digging through shoe boxes, email folders, and camera rolls to compile business receipts and invoice records for Schedule C deductions.&lt;/p&gt;
&lt;p&gt;Existing cloud solutions (Expensify, QuickBooks, cloud LLMs) present major friction points:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Confidentiality Risks&lt;/strong&gt;: Receipts contain client names, NDA-protected travel destinations, private addresses, and banking details. Freelancers cannot risk uploading sensitive client data into closed third-party cloud AI models.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Subscription Fatigue&lt;/strong&gt;: Freelancers pay $20–$50/month for simple document OCR tools with arbitrary document limits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hallucination Anxiety&lt;/strong&gt;: Pure cloud LLMs often hallucinate digits on crumpled receipts, risking tax audit penalties without an explicit confidence-scoring or verification step.&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🎯 The Solution: DrawerLocal&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;DrawerLocal&lt;/strong&gt; is an offline-first, open-weight AI receipt &amp;amp; invoice intelligence suite designed as a standalone side-hustle…&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/vannu07/DrawerLocal" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;The entire codebase is open-source under the MIT License:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: Next.js 16 (App Router), Tailwind CSS v4, PostCSS, responsive glassmorphism design system.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: FastAPI, SQLModel, SQLite, background task extraction pipeline with local Gemma 3 provider abstraction.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;h3&gt;
  
  
  1. Open-Weight AI Core: Gemma 3 (4B Vision)
&lt;/h3&gt;

&lt;p&gt;At the heart of DrawerLocal is Google's &lt;strong&gt;Gemma 3 (4B Vision)&lt;/strong&gt; open-weight model executed locally via &lt;strong&gt;Ollama&lt;/strong&gt;. &lt;br&gt;
We engineered a strict structured JSON extraction prompt that outputs normalized vendor names, ISO-8601 transaction dates, line items, currency codes, and exact sales tax/VAT breakdowns.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Provider abstraction snippet (backend/app/services/provider.py)
&lt;/span&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;OllamaProvider&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ModelProvider&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;extract_receipt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;image_bytes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;bytes&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;b64&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;base64&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;b64encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image_bytes&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;utf-8&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;payload&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;model&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;gemma3:4b&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;prompt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BASE_PROMPT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;images&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="n"&gt;b64&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;format&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;json&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;stream&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;httpx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;AsyncClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;60.0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/api/generate&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;loads&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;response&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Zero-Cost Deterministic Demo Fallback
&lt;/h3&gt;

&lt;p&gt;To ensure judges, reviewers, and users can immediately test the entire application without needing an 8GB GPU or local Ollama installation, DrawerLocal features an automatic deterministic mock engine when &lt;code&gt;DEMO_MODE=true&lt;/code&gt; is set.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Fullstack Architecture
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FastAPI + SQLModel&lt;/strong&gt;: Persists itemized records, confidence scores, and custom vendor classification rules to an on-disk SQLite database.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 16 App Router&lt;/strong&gt;: Built with custom dark-mode glassmorphism, dynamic SVG geometry constraints, and instant client-side CSV blob generation.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Guaranteed Privacy via Zero Cloud Egress&lt;/strong&gt;:
Closed LLM APIs (OpenAI, Anthropic) process sensitive user financial documents on remote servers. Open-weight models like &lt;strong&gt;Gemma 3&lt;/strong&gt; enable the entire AI inference lifecycle to run on-device.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Predictable Unit Economics&lt;/strong&gt;:
A side hustle charging $49 for a lifetime desktop license or $5/month would quickly burn out on closed API token bills. Open-weight models cost $0.00 per token once downloaded.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auditability &amp;amp; Zero Vendor Lock-in&lt;/strong&gt;:
The open weights can be run on CPU or GPU via Ollama, vLLM, or llama.cpp, guaranteeing long-term software independence.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  My First User
&lt;/h2&gt;

&lt;p&gt;I shared DrawerLocal with Sarah, a freelance brand designer managing 12 active client retainers. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I used to spend the first weekend of every month matching coffee receipts, Uber rides, and software subscriptions to client invoices. Because I work under strict NDAs, I couldn't upload receipts with client names to random AI tools. DrawerLocal sorted 38 receipts in 3 minutes completely on my MacBook without uploading anything. I would easily pay $49 for this as a Mac app."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sarah itemized &lt;strong&gt;$418.60&lt;/strong&gt; in deductible business expenses in her first test session.&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma&lt;/strong&gt;: Built natively around Google’s open-weight &lt;strong&gt;Gemma 3 (4B Vision)&lt;/strong&gt; model for on-device OCR, line-item parsing, and tax deduction scoring.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render&lt;/strong&gt;: Production-ready &lt;code&gt;render.yaml&lt;/code&gt; configuration and Dockerfile for containerized deployment of the FastAPI engine and persistent SQLite storage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of a .tech Domain&lt;/strong&gt;: Targeted for launch at &lt;code&gt;drawerlocal.tech&lt;/code&gt; as an independent software business for freelancers.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Built with ❤️ for the Hacktoberfest Open-Source AI Challenge.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Last Light: An Open-Source AI Walk Ticket That Tells You to Put Your Phone Away</title>
      <dc:creator>VARNIT KUMAR</dc:creator>
      <pubDate>Sat, 10 Oct 2026 18:26:21 +0000</pubDate>
      <link>https://dev.to/vannu07/last-light-an-open-source-ai-walk-ticket-that-tells-you-to-put-your-phone-away-3bfj</link>
      <guid>https://dev.to/vannu07/last-light-an-open-source-ai-walk-ticket-that-tells-you-to-put-your-phone-away-3bfj</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Last Light&lt;/strong&gt; is an open-source AI walk ticket that tells you to put your phone away.&lt;/p&gt;

&lt;p&gt;Most outdoor apps give you more things to look at. Last Light does the opposite. You choose a city (or use your own location), pick a walk length, describe the sky and ground, and it issues a short dusk-walk ticket:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⏰ A &lt;strong&gt;leave-by time&lt;/strong&gt; and &lt;strong&gt;sunset direction&lt;/strong&gt; ("Leave by 17:42. Walk west.")&lt;/li&gt;
&lt;li&gt;🧭 A destination-free route suggestion and estimated distance&lt;/li&gt;
&lt;li&gt;📈 A &lt;strong&gt;walk-quality score&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;👀 Four sensory prompts: look, listen, touch, notice&lt;/li&gt;
&lt;li&gt;📵 One rule: &lt;em&gt;"Phone in a pocket that is not your hand."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;⏳ A &lt;strong&gt;Pocket Mode&lt;/strong&gt; countdown, a &lt;strong&gt;printable ticket&lt;/strong&gt;, optional voice narration, and a private field note stored only in your browser&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's for anyone who wants a simple reason to step outside at the end of the day. The website is useful for less than a minute, and the goal is to help you leave it. It is intentionally not a chatbot, social feed, map app, habit tracker, or recommendation engine.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://raw.githubusercontent.com/vannu07/Touch-Grass/main/docs/last-light-preview.svg" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;raw.githubusercontent.com&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


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

&lt;p&gt;🌅 &lt;strong&gt;Live app:&lt;/strong&gt; &lt;a href="https://touch-grass-beryl.vercel.app/" rel="noopener noreferrer"&gt;https://touch-grass-beryl.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Choose a city or use your door.&lt;/li&gt;
&lt;li&gt;Select a walk duration.&lt;/li&gt;
&lt;li&gt;Describe the sky and ground.&lt;/li&gt;
&lt;li&gt;Issue a ticket.&lt;/li&gt;
&lt;li&gt;Read it, print it, or start Pocket Mode.&lt;/li&gt;
&lt;li&gt;Put the phone away.&lt;/li&gt;
&lt;/ol&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/vannu07" rel="noopener noreferrer"&gt;
        vannu07
      &lt;/a&gt; / &lt;a href="https://github.com/vannu07/Touch-Grass" rel="noopener noreferrer"&gt;
        Touch-Grass
      &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;Last Light&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/vannu07/Touch-Grass/docs/last-light-preview.svg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fvannu07%2FTouch-Grass%2FHEAD%2Fdocs%2Flast-light-preview.svg" alt="Animated Last Light dusk walk ticket preview" width="100%"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;strong&gt;The screen is the shortest part.&lt;/strong&gt;&lt;br&gt;
  A local-first dusk walk ticket that gets you outside, then gets out of the way
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/vannu07/Touch-Grass/actions" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/91ceb46ead69d42fd3e22eb1bdbd1c5b716ce3706f4e3d85b9fc986bf4de7cbe/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f76616e6e7530372f546f7563682d47726173732f63692e796d6c3f7374796c653d666c61742d737175617265266c6162656c3d6275696c64" alt="Build status"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/vannu07/Touch-Grass" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/26b8200094d75fb2fb7df6884a9ef213f8c0474b8b39e004220ba09ef2b14046/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f76616e6e7530372f546f7563682d47726173733f7374796c653d666c61742d737175617265" alt="MIT License"&gt;&lt;/a&gt;
  &lt;a href="https://www.python.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/815049299ed513df5bbc7faca1eaa01f82050be1e39f837b265da0e885fed814/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f707974686f6e2d332e31312532422d3337373641423f7374796c653d666c61742d737175617265266c6f676f3d707974686f6e266c6f676f436f6c6f723d7768697465" alt="Python 3.11 or newer"&gt;&lt;/a&gt;
  &lt;a href="https://fastapi.tiangolo.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/9bd2817dc84bc8757c7af56544ab43f1252cca8007fee0360d008c3ce95e67cb/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4150492d466173744150492d3030393638383f7374796c653d666c61742d737175617265266c6f676f3d66617374617069266c6f676f436f6c6f723d7768697465" alt="FastAPI"&gt;&lt;/a&gt;
  &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/1536d78eac1ab3c190575187ae2a07a275ec95df67c94a10532b98c6822cb7d0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f546f75636825323047726173732d6630366333653f7374796c653d666c61742d737175617265" alt=" Touch Grass"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Last Light&lt;/strong&gt; turns sunset geometry, local climate signals, and open-weight AI into a small printed-style brief: when to leave, which way to walk, four sensory prompts, and one rule — put the phone away.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why it exists&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Most outdoor apps increase screen time. Last Light is deliberately the opposite:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prepare on screen.&lt;/strong&gt; Calculate the useful facts before leaving.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Carry a ticket.&lt;/strong&gt; Print it, read it aloud, or remember the four cues.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pocket the phone.&lt;/strong&gt; Pocket Mode becomes a simple countdown.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notice the ordinary.&lt;/strong&gt; There is no feed, streak, destination, or species database.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The best interface is the one you stop looking at.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What the experience feels like&lt;/h2&gt;

&lt;/div&gt;


&lt;ol&gt;

&lt;li&gt;Choose a city or use your door.&lt;/li&gt;

&lt;li&gt;Set the walk length, date, temperature, ground, and sky.&lt;/li&gt;

&lt;li&gt;Receive a dusk ticket…&lt;/li&gt;

&lt;/ol&gt;&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/vannu07/Touch-Grass" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


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

&lt;p&gt;&lt;strong&gt;Stack:&lt;/strong&gt; Python, FastAPI, vanilla JavaScript, HTML/CSS, TabPFN, scikit-learn, Gemma-compatible endpoints, Docker, with Render and Vercel deployment support.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Solar math, no weather API.&lt;/strong&gt; Sunrise, sunset, golden hour, civil dusk, solar noon, sunset azimuth, and day length are computed from latitude, longitude, date, and time-zone offset. That's enough to say "Leave by 17:42. Walk west." with no map tiles or weather service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. A generated, transparent dataset.&lt;/strong&gt; The scoring engine trains on 1,400 generated dusk-walk rows. Features include temperature, rain, wind, cloud cover, humidity, latitude, day of year, minutes until sunset, foliage season, urban surroundings, and walk duration. Because the dataset comes from a transparent recipe, evaluation is repeatable rather than an unexplained number.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. TabPFN with a Ridge baseline.&lt;/strong&gt; TabPFN predicts the walk-quality score, and a Ridge regression model is trained alongside it as a baseline. The app reports held-out metrics so the two can be compared. The full TabPFN backend runs locally and on Render. Vercel uses the lightweight Ridge fallback because TabPFN's PyTorch dependencies exceed Vercel's serverless size limit. If TabPFN is unavailable, the app still issues a ticket.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Gemma writes the ticket, with offline recipes.&lt;/strong&gt; When a compatible Gemma endpoint is available, it receives structured facts and returns a small JSON response: a title, a one-sentence lead, four sensory cues, a route, and a phone-away rule. The response is validated before it reaches the user. With no model endpoint, deterministic &lt;strong&gt;offline field recipes&lt;/strong&gt; generate the ticket. That is an intentional product mode, not a broken fallback.&lt;/p&gt;

&lt;p&gt;So Last Light works with local Ollama, with a hosted compatible endpoint, with no AI endpoint, with no weather API, and without storing field notes on a server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The key design decision was making the screen temporary.&lt;/strong&gt; There are no streaks, notifications, feeds, or scroll time. The product succeeds when the user stops using it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Privacy:&lt;/strong&gt; location is used only to issue a ticket. Field notes live in &lt;code&gt;localStorage&lt;/code&gt;, with no account, database, or profile. The walk score is an experiment, not a safety guarantee, so use your own judgment about weather, lighting, traffic, and accessibility.&lt;/p&gt;

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

&lt;p&gt;This project is about reducing dependence on the screen, and open components made that design possible:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Privacy:&lt;/strong&gt; with a closed hosted API, location and conditions would have to leave the device. With open-weight Gemma on Ollama, they don't.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline-first:&lt;/strong&gt; the experience doesn't depend on a network connection, and the deterministic recipes work with no model at all.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swappable and inspectable:&lt;/strong&gt; anyone can replace the language model, read the prompt and validation rules, or run the scoring model on their own machine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Controlled degradation:&lt;/strong&gt; I could design exactly what happens when the model, TabPFN, or the network is missing, which is much harder behind a closed platform.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remixable:&lt;/strong&gt; someone can change the behavior without waiting for a vendor feature.&lt;/li&gt;
&lt;/ul&gt;

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

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of TabPFN (Prior Labs):&lt;/strong&gt; TabPFN scores dusk-walk conditions from a generated dataset of environmental, seasonal, solar, and duration features, with a Ridge baseline and held-out metrics for comparison.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma:&lt;/strong&gt; Gemma writes the natural-language walk ticket from structured facts. Responses are validated, and deterministic field recipes keep the app working when no endpoint is running.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;The screen prepares the walk. Then it gets out of the way. 🌿&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Heirloom AI: Preserving Grandpa's Voice Recipes with Open-Weight Gemma AI &amp; ElevenLabs</title>
      <dc:creator>VARNIT KUMAR</dc:creator>
      <pubDate>Sun, 04 Oct 2026 05:29:19 +0000</pubDate>
      <link>https://dev.to/vannu07/heirloom-ai-preserving-grandpas-voice-recipes-with-open-weight-gemma-ai-elevenlabs-80i</link>
      <guid>https://dev.to/vannu07/heirloom-ai-preserving-grandpas-voice-recipes-with-open-weight-gemma-ai-elevenlabs-80i</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built &lt;strong&gt;Heirloom AI&lt;/strong&gt; for my Grandpa Arthur (and families with elderly loved ones). Grandpa Arthur spent a lifetime mastering rustic Italian dishes, slow-simmered marinara, and secret family recipes. As he got older, typing or writing recipes down became difficult, so he began recording rambling voice memos on his phone.&lt;/p&gt;

&lt;p&gt;However, voice notes are unstructured, contain rambling family anecdotes, and lack exact measurements ("a pinch of love", "a knob of butter"). &lt;strong&gt;Heirloom AI&lt;/strong&gt; uses open-weight &lt;strong&gt;Gemma AI&lt;/strong&gt; to process Grandpa's voice audio, resolve vague measurements into standardized quantities, separate emotional stories from technical cooking steps, and store them in an interactive Heirloom Vault.&lt;/p&gt;

&lt;p&gt;It also features a &lt;strong&gt;Hands-Free Kitchen Companion&lt;/strong&gt; with voice commands ("Next step", "Repeat") and natural voice audio readout so anyone in the kitchen can cook Grandpa's recipes hands-free without getting screens greasy!&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Deployed App&lt;/strong&gt;: &lt;a href="https://heirloom-ai-pi.vercel.app/" rel="noopener noreferrer"&gt;https://heirloom-ai-pi.vercel.app/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Key Senior Interactive Features&lt;/strong&gt;:

&lt;ol&gt;
&lt;li&gt;🎙️ &lt;strong&gt;Voice Memory Studio&lt;/strong&gt;: Live microphone audio recorder with dynamic HTML5 Canvas waveform visualizer, persona selectors, and Gemma 4-bit prompt extraction pipeline.&lt;/li&gt;
&lt;li&gt;📖 &lt;strong&gt;The Heirloom Vault&lt;/strong&gt;: Scalable recipe gallery with unit converter (Metric vs. US Imperial), serving multiplier (1x, 2x, 3x), Recharts flavor profile radar chart, macro nutrient cards, and printable heirloom recipe card modal generator.&lt;/li&gt;
&lt;li&gt;👨‍🍳 &lt;strong&gt;Hands-Free Kitchen Companion&lt;/strong&gt;: Distraction-free full-screen kitchen display with Web Speech &amp;amp; ElevenLabs voice readout, voice command listening, interactive cooking timers, and an "Ask Grandpa's AI" assistant.&lt;/li&gt;
&lt;li&gt;💡 &lt;strong&gt;Open Innovation &amp;amp; Benchmarks&lt;/strong&gt;: Technical deep-dive with Recharts benchmark visualizations comparing on-device Gemma 4-bit latency and privacy against closed cloud models.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Project source code repository:&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/vannu07" rel="noopener noreferrer"&gt;
        vannu07
      &lt;/a&gt; / &lt;a href="https://github.com/vannu07/Heirloom-AI" rel="noopener noreferrer"&gt;
        Heirloom-AI
      &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&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🍳 Heirloom AI&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;&lt;em&gt;Grandpa's Voice Recipe Vault &amp;amp; Hands-Free Kitchen Companion&lt;/em&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://heirloom-ai-pi.vercel.app/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/954dfa3b406b5938ae0f6264c66bdfd261026dd37202cff89afe185fdf9c6972/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c69766525323044656d6f2d686569726c6f6f6d2d2d61692d2d70692e76657263656c2e6170702d6439373730363f7374796c653d666f722d7468652d6261646765266c6f676f3d76657263656c" alt="Live Demo"&gt;&lt;/a&gt;
&lt;a href="https://github.com/vannu07/Heirloom-AI" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/9aa217096d4d3a96db9b221c24567d9af5087ecefd1a6f275ea2fd85fa20b6c8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4769744875622d76616e6e753037253246486569726c6f6f6d2d2d41492d3138313731373f7374796c653d666f722d7468652d6261646765266c6f676f3d676974687562" alt="GitHub Repo"&gt;&lt;/a&gt;
&lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/ddcbe6d655b2406c83d2e5cfd240391cd394671bc4321e62a7d534b869e94cfc/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4861636b746f626572666573742d3230323625323050726f6a6563742d6635396530623f7374796c653d666f722d7468652d6261646765266c6f676f3d6861636b746f62657266657374" alt="Hacktoberfest 2026"&gt;&lt;/a&gt;
&lt;a href="https://ai.google.dev/gemma" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/545a79b48e79c69a9ee6298c52c2d1b7d9379bf6d07ca2f27eca043b37a95872/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4f70656e2d2d5765696768742d47656d6d61253230342d2d6269742d3130623938313f7374796c653d666f722d7468652d6261646765266c6f676f3d676f6f676c65" alt="Gemma AI"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/vannu07/Heirloom-AI/public/hero-3d.jpg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fvannu07%2FHeirloom-AI%2FHEAD%2Fpublic%2Fhero-3d.jpg" alt="Heirloom AI 3D Isometric Hero Visual"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;b&gt;Built for the Hacktoberfest Weekend Challenge: Build for a Friend&lt;/b&gt;&lt;br&gt;
  Preserving priceless family culinary knowledge using open-weight Gemma AI &amp;amp; ElevenLabs Voice Synthesis
&lt;/p&gt;


&lt;/div&gt;
&lt;br&gt;


&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🌟 Executive Summary&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Heirloom AI&lt;/strong&gt; is built for Grandpa Arthur (and families with elderly loved ones). Grandpa Arthur spent a lifetime mastering rustic Italian dishes, slow-simmered marinara, and secret family recipes. As he got older, writing or typing recipes down became difficult, so he began recording rambling voice memos on his phone.&lt;/p&gt;

&lt;p&gt;However, voice notes are unstructured, contain rambling family anecdotes, and lack exact measurements (&lt;em&gt;"a pinch of love"&lt;/em&gt;, &lt;em&gt;"a knob of butter"&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Heirloom AI&lt;/strong&gt; uses open-weight &lt;strong&gt;Gemma AI&lt;/strong&gt; to process Grandpa's voice audio, resolve vague measurements into standardized quantities, separate emotional stories from technical cooking steps, and store them in an interactive Heirloom Vault.&lt;/p&gt;

&lt;p&gt;It also features a &lt;strong&gt;Hands-Free Kitchen Companion&lt;/strong&gt; with…&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/vannu07/Heirloom-AI" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/vannu07/Heirloom-AI/blob/main/src/App.jsx" rel="noopener noreferrer"&gt;&lt;code&gt;src/App.jsx&lt;/code&gt;&lt;/a&gt;: Main layout container &amp;amp; state manager with Framer Motion AnimatePresence and Toast system.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/vannu07/Heirloom-AI/blob/main/src/components/VoiceStudio.jsx" rel="noopener noreferrer"&gt;&lt;code&gt;src/components/VoiceStudio.jsx&lt;/code&gt;&lt;/a&gt;: Audio recorder &amp;amp; Gemma 4-bit extraction pipeline.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/vannu07/Heirloom-AI/blob/main/src/components/RecipeVault.jsx" rel="noopener noreferrer"&gt;&lt;code&gt;src/components/RecipeVault.jsx&lt;/code&gt;&lt;/a&gt;: Recipe gallery with serving scaler, unit converter, Recharts flavor radar, and printable cards.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/vannu07/Heirloom-AI/blob/main/src/components/CookingMode.jsx" rel="noopener noreferrer"&gt;&lt;code&gt;src/components/CookingMode.jsx&lt;/code&gt;&lt;/a&gt;: Hands-free voice cooking assistant &amp;amp; timer.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/vannu07/Heirloom-AI/blob/main/src/components/OpenInnovationTab.jsx" rel="noopener noreferrer"&gt;&lt;code&gt;src/components/OpenInnovationTab.jsx&lt;/code&gt;&lt;/a&gt;: Judge technical deep-dive with latency benchmarks.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open-Source AI Core&lt;/strong&gt;: Powered by open-weight &lt;strong&gt;Gemma 2 / Gemma 4-bit local inference&lt;/strong&gt; models. The Gemma model takes raw speech-to-text transcripts, parses vague measurements into precise quantities, and structures the output into standardized JSON.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend Stack&lt;/strong&gt;: Vite, React 19, Tailwind CSS v4, Framer Motion for fluid layout animations, Recharts for data visualizations, Playfair Display &amp;amp; Plus Jakarta Sans typography, Fira Code fonts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice Synthesis &amp;amp; Control&lt;/strong&gt;: ElevenLabs &amp;amp; Web Speech API for natural step-by-step audio readout and hands-free voice commands.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audio Visualizers&lt;/strong&gt;: HTML5 Canvas API with real-time waveform rendering and Web Audio API ambient kitchen simmer sound generator.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Open innovation was essential for building &lt;strong&gt;Heirloom AI&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;100% Privacy &amp;amp; Data Security&lt;/strong&gt;: Voice memos contain intimate family memories, names, and personal stories. Closed cloud APIs harvest prompt data to train commercial models. With open-weight Gemma running locally, zero personal data leaves the device.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline Kitchen Resilience&lt;/strong&gt;: Kitchens often have poor WiFi reception or thick plaster walls. Local Gemma inference runs seamlessly offline on laptops or kitchen tablets without internet connection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Operating Cost&lt;/strong&gt;: Heirloom recipes should be accessible across generations without recurring API token subscriptions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Heritage Dialect Fine-Tuning&lt;/strong&gt;: Open-weight Gemma allows fine-tuning on regional culinary terms (e.g. Italian "soffritto", Indian "tadka", Southern "potlikker") that proprietary generic models misinterpret.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma&lt;/strong&gt; (Featured Category)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of ElevenLabs&lt;/strong&gt; (Partner Category)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render / DigitalOcean&lt;/strong&gt; (Featured Category)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>EnviroLens – Smart AI Assistant for Environmental Awareness</title>
      <dc:creator>VARNIT KUMAR</dc:creator>
      <pubDate>Sun, 14 Sep 2025 17:57:30 +0000</pubDate>
      <link>https://dev.to/vannu07/envirolens-smart-ai-assistant-for-environmental-awareness-353j</link>
      <guid>https://dev.to/vannu07/envirolens-smart-ai-assistant-for-environmental-awareness-353j</guid>
      <description>&lt;h2&gt;
  
  
  EnviroLens – Smart AI Assistant for Environmental Awareness
&lt;/h2&gt;

&lt;p&gt;Submission for the &lt;a href="https://dev.to/challenges/google-ai-studio-2025-09-03"&gt;Google AI Studio Multimodal Challenge&lt;/a&gt;*&lt;/p&gt;

&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;EnviroLens&lt;/strong&gt; is a multimodal AI assistant that detects and analyzes environmental issues from images, video, and audio content.&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.amazonaws.com%2Fuploads%2Farticles%2Fu84lesdes19uicbtq8tq.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.amazonaws.com%2Fuploads%2Farticles%2Fu84lesdes19uicbtq8tq.png" alt="EnviroLens application dashboard showing environmental analysis interface with upload options for images, video, and audio files"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With EnviroLens, users can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Detect pollution, waste, deforestation, and fires in uploaded content&lt;/li&gt;
&lt;li&gt;Generate plain-language impact analysis reports&lt;/li&gt;
&lt;li&gt;View AI-powered "Before vs After" visual suggestions for environmental restoration&lt;/li&gt;
&lt;li&gt;Receive personalized eco-friendly recommendations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is simple: empower citizens, NGOs, and researchers to monitor and take action on environmental issues using accessible AI technology.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Live App:&lt;/strong&gt; &lt;a href="https://envirolens-smart-ai-assistant-for-environmental-a-134834412408.us-west1.run.app" rel="noopener noreferrer"&gt;EnviroLens on Cloud Run&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.amazonaws.com%2Fuploads%2Farticles%2Ffomwv5q4vmws0xmo8s5g.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.amazonaws.com%2Fuploads%2Farticles%2Ffomwv5q4vmws0xmo8s5g.png" alt="Screenshot of EnviroLens analyzing a polluted river image with AI-generated cleanup recommendations and restoration visualization"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-World Applications
&lt;/h2&gt;

&lt;p&gt;Here's how people are using EnviroLens:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;River Pollution Monitoring:&lt;/strong&gt; Upload a photo of a polluted river, and the AI detects plastic waste, analyzes the contamination level, suggests cleanup strategies, and shows a restored river mockup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Illegal Burning Detection:&lt;/strong&gt; Upload a video of burning trash, and the system detects toxic smoke, explains health risks to nearby communities, and recommends proper waste management practices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deforestation Tracking:&lt;/strong&gt; Upload satellite images or ground photos of cleared land, and the AI detects tree loss, estimates the impact on local biodiversity, and suggests reforestation plans with native species.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technology Stack
&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.amazonaws.com%2Fuploads%2Farticles%2Fzgsf97dx82b6xt7bt39t.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.amazonaws.com%2Fuploads%2Farticles%2Fzgsf97dx82b6xt7bt39t.png" alt="Architecture diagram showing EnviroLens tech stack: React frontend connected to Node.js backend, integrated with Gemini 2.5 Pro API and deployed on Google Cloud Run"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The application is built with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; React with TypeScript and Tailwind CSS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Node.js with Express framework&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Engine:&lt;/strong&gt; Gemini 2.5 Pro for multimodal content understanding&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Infrastructure:&lt;/strong&gt; Google Cloud Run with Docker containerization and Cloud Build&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How the AI Works
&lt;/h2&gt;

&lt;p&gt;EnviroLens leverages Gemini's multimodal capabilities in several ways:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Image Analysis:&lt;/strong&gt; The system can identify various types of environmental damage including waste accumulation, smoke plumes, deforestation patterns, and water contamination in photographs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Video Processing:&lt;/strong&gt; For video content, the AI analyzes individual frames to track pollution levels over time and identify environmental changes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Audio Understanding:&lt;/strong&gt; Users can describe environmental issues through voice recordings, which are transcribed and analyzed alongside visual content for comprehensive assessment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Interactive Reporting:&lt;/strong&gt; The dashboard combines all analysis results with visual representations to help users understand environmental impact and potential solutions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes This Project Special
&lt;/h2&gt;

&lt;p&gt;This isn't just another demo application. EnviroLens addresses a critical global challenge by making environmental monitoring accessible to everyone. The project demonstrates real-world utility for citizens who want to report environmental issues, NGOs conducting field research, and governments tracking environmental changes.&lt;/p&gt;

&lt;p&gt;The entire application is built using Google's AI and cloud infrastructure, showcasing how modern AI can be deployed at scale to solve meaningful problems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Future Development
&lt;/h2&gt;

&lt;p&gt;I'm planning several enhancements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mobile App:&lt;/strong&gt; A progressive web application optimized for mobile devices to enable field reporting&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Global Mapping:&lt;/strong&gt; An interactive heatmap showing environmental issues reported by users worldwide&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NGO Partnerships:&lt;/strong&gt; Collaborating with environmental organizations to pilot the system in real monitoring projects&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;EnviroLens proves how &lt;strong&gt;multimodal AI&lt;/strong&gt; can help solve real-world problems beyond demos — making AI a tool for &lt;strong&gt;sustainability and climate action&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The project shows that with the right tools and approach, AI becomes a powerful ally in building a more sustainable future.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;code&gt;#ai #googlecloud #multimodal #gemini #environment #webdev #cloudrun&lt;/code&gt; &lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>googleaichallenge</category>
      <category>ai</category>
      <category>gemini</category>
    </item>
  </channel>
</rss>
