<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Aditya Bafna</title>
    <description>The latest articles on DEV Community by Aditya Bafna (@adikamubafna77).</description>
    <link>https://dev.to/adikamubafna77</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F99mvlsfu5tfj9m7ku25d.png</url>
      <title>DEV Community: Aditya Bafna</title>
      <link>https://dev.to/adikamubafna77</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/adikamubafna77"/>
    <language>en</language>
    <item>
      <title>FridgeSloth 🦥: The 100% Local Fridge-to-Feast Copilot &amp; Grocery Butler Powered by Gemma 3</title>
      <dc:creator>Aditya Bafna</dc:creator>
      <pubDate>Sun, 25 Oct 2026 13:08:02 +0000</pubDate>
      <link>https://dev.to/adikamubafna77/fridgesloth-the-100-local-fridge-to-feast-copilot-grocery-butler-powered-by-gemma-3-7jd</link>
      <guid>https://dev.to/adikamubafna77/fridgesloth-the-100-local-fridge-to-feast-copilot-grocery-butler-powered-by-gemma-3-7jd</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;The average person spends &lt;strong&gt;14 minutes every day&lt;/strong&gt; standing motionless in front of an open refrigerator with the door ajar, staring blankly into the cold void while energy escapes into the room. We aren't looking for food—we are suffering from decision paralysis, exhausted after a long day of coding or work, and dreading the cognitive effort of figuring out what to combine and how many dishes we'll have to wash.&lt;/p&gt;

&lt;p&gt;Tomorrow, October 20, is &lt;strong&gt;International Sloth Day&lt;/strong&gt;. Sloths understand something fundamental: moving at your own pace and conserving metabolic energy is an evolutionary superpower.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;FridgeSloth&lt;/strong&gt; 🦥—a 100% on-device, local-first fridge-to-feast copilot and grocery butler powered by Google DeepMind's open-weight &lt;strong&gt;Gemma 3 (4B Multimodal Vision)&lt;/strong&gt; and &lt;strong&gt;Gemma 2 (2B)&lt;/strong&gt; running via Ollama.&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Rewards Your Laziness:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Zero-Effort Vision Scanner:&lt;/strong&gt; Snap or drop a messy photo of your fridge, freezer, or pantry shelf. Gemma 3 Vision scans the photo entirely on your laptop, identifying ingredients, leftover containers, wilted greens, and mystery condiments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Sloth Energy Dial:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;🛋️ &lt;strong&gt;Level 1: Couch Sloth&lt;/strong&gt; — Strictly 1 bowl or 1 mug, microwave or electric kettle only, zero knives, zero chopping, under 4 minutes total.&lt;/li&gt;
&lt;li&gt;🍳 &lt;strong&gt;Level 2: One-Pan Sizzle&lt;/strong&gt; — 1 skillet, 1 spatula, minimal chopping, under 8 minutes, maximum crispy comfort.&lt;/li&gt;
&lt;li&gt;🍲 &lt;strong&gt;Level 3: Gentle Simmer&lt;/strong&gt; — Dump ingredients into a pot on low heat, walk away to lie down on the rug, ready in 15 minutes.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Minimum-Motion Recipes:&lt;/strong&gt; Instructions engineered specifically to minimize human physical exertion (e.g. &lt;em&gt;"eat straight from the skillet to save a plate"&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Missing Restock Grocery List:&lt;/strong&gt; Automatically detects missing essentials to make future lazy cooking effortless, pre-sorted by supermarket aisle so you don't wander through the grocery store.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sloan the Sloth's Wisdom:&lt;/strong&gt; Hilarious, reassuring daily affirmations celebrating rest and low-energy existence.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Air-Gapped Privacy:&lt;/strong&gt; Zero cloud uploads. Photos of the inside of your home never leave your device.&lt;/li&gt;
&lt;/ol&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%2Fhlr8i0tk0iazbotcko4d.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%2Fhlr8i0tk0iazbotcko4d.png" alt="FridgeSloth Dashboard" width="799" height="529"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnzwdoc0tsssn91sqcvke.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%2Fnzwdoc0tsssn91sqcvke.png" alt="FridgeSloth Result &amp;amp; Grocery List" width="799" height="529"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Real-World Test
&lt;/h3&gt;

&lt;p&gt;I fed FridgeSloth a photo of my chaotic late-night fridge: a cold takeaway rice container, two eggs, a block of cheddar cheese, half a bottle of Sriracha, and butter.&lt;/p&gt;

&lt;p&gt;Setting the Sloth Dial to &lt;strong&gt;Level 1: Couch Sloth&lt;/strong&gt;, Gemma 3 generated:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;✨ Rice &amp;amp; Egg Sriracha Melt&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;"Because sometimes the best adventures are found in a warm mug."&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Laziness Score:&lt;/strong&gt; 99% Effortless&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prep Time:&lt;/strong&gt; 1 min · &lt;strong&gt;Cook Time:&lt;/strong&gt; 3 mins&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dishes to Wash:&lt;/strong&gt; Exactly 1 Mug, 1 Fork
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Crack 2 eggs directly into the mug.
2. Add 1/2 cup of leftover cold rice to the mug.
3. Sprinkle shredded cheddar cheese on top.
4. Drizzle 1-2 teaspoons of sriracha (adjust to your sloth spice level).
5. Add 1 tablespoon of butter.
6. Microwave on high for 2-3 minutes until eggs are cooked through. Eat straight from mug.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Auto-Generated Restock Grocery List:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;[Dairy / Refrigerated]&lt;/code&gt; Butter&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;[Pantry]&lt;/code&gt; Sriracha&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;[Pantry]&lt;/code&gt; Crispy chili crunch&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Sloan's Sloth Wisdom:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Sloan the Sloth says: Don't overthink it. Deliciousness is a happy accident when you're prioritizing relaxation."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;


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

&lt;p&gt;FridgeSloth is completely open source (MIT licensed) with zero external server dependencies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/adibafna/FridgeSloth" rel="noopener noreferrer"&gt;github.com/adibafna/FridgeSloth&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Querying Google Gemma 3 Multimodal Vision Locally
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// server.js - 100% Local Inference with Google Gemma 3 via Ollama&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;queryOllama&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;gemma3:4b&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;system&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;images&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;options&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;temperature&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Low temperature for deterministic, structured output&lt;/span&gt;
      &lt;span class="na"&gt;num_predict&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1200&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;system&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;system&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;system&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;images&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;images&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;images&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;images&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Base64 fridge photo&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;http://127.0.0.1:11434/api/generate&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;res&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="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Google DeepMind Gemma 3 (4B Vision):&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Gemma 3 is Google's latest multimodal open-weight model. In its 4B parameter size (&lt;code&gt;Q4_K_M&lt;/code&gt; quantization), it runs comfortably on laptop hardware (under 3.4 GB of RAM/VRAM).&lt;/li&gt;
&lt;li&gt;Its visual encoder processes photos of cluttered kitchen shelves with surprising spatial accuracy, picking out labeled jars, produce, and leftover containers.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Inference Runtime (Ollama):&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Running via Ollama on &lt;code&gt;127.0.0.1:11434&lt;/code&gt;, exposing high-throughput local REST endpoints.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero-Dependency Lightweight Backend:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Pure Node.js HTTP server (&lt;code&gt;server.js&lt;/code&gt;) with zero external npm runtime dependencies. You clone the repo and run &lt;code&gt;node server.js&lt;/code&gt; instantly.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Humanized Sloth-Themed Frontend:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Built with responsive CSS glassmorphism, animated sloth avatars, instant canvas-based test presets, and live on-device telemetry verifying zero packet egress.&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;The Hacktoberfest prompt asks: &lt;em&gt;"Tell us where your open-based approach worked better than a closed one."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here is why &lt;strong&gt;FridgeSloth could only exist with open-source AI:&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  1. 🔒 Absolute Privacy in the Kitchen
&lt;/h3&gt;

&lt;p&gt;The inside of your refrigerator is an intimate portrait of your private life:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prescription medications (like insulin, fertility injections, or biologics kept in the butter compartment)&lt;/li&gt;
&lt;li&gt;Household income and grocery spending indicators&lt;/li&gt;
&lt;li&gt;Reflections of your home, family members, or kitchen layout in glass containers&lt;/li&gt;
&lt;li&gt;Religious or cultural dietary practices&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Uploading pictures of your home interior to multi-tenant closed cloud APIs (OpenAI, Anthropic) creates an unacceptable surveillance and privacy risk. With Google's open-weight Gemma 3, &lt;strong&gt;inference runs in local device RAM&lt;/strong&gt;. The photo never touches an external cable, and memory is wiped the instant analysis completes.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. 💸 $0.00 Running Cost vs Cloud Subscription Fatigue
&lt;/h3&gt;

&lt;p&gt;Closed vision APIs charge ~$0.02 to $0.04 per image call plus token generation. If you scan your fridge twice a day, an app would cost you &lt;strong&gt;$15 to $25 every month&lt;/strong&gt; in API fees just to know what to eat for lunch. With open weights on your laptop silicon, the marginal cost per run is &lt;strong&gt;exactly $0.00&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. ✈️ 100% Offline Kitchen Resilience
&lt;/h3&gt;

&lt;p&gt;Pantries, basement kitchenettes, campervans, and off-grid cabins often have terrible or zero Wi-Fi reception. Closed APIs completely fail without an active internet connection. FridgeSloth runs in full Airplane Mode without skipping a beat.&lt;/p&gt;
&lt;h3&gt;
  
  
  4. 🧠 Unrestricted Prompt Engineering &amp;amp; Model Portability
&lt;/h3&gt;

&lt;p&gt;Closed APIs have aggressive safety filters that frequently flag innocuous kitchen requests (like using cooking wine, beer marinades, or sharp kitchen tools). Open weights allow developers to craft specialized system prompts without arbitrary corporate guardrail interference.&lt;/p&gt;


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

&lt;p&gt;How much effort does FridgeSloth actually save?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Time Saved:&lt;/strong&gt; 14 minutes/day standing in front of an open fridge = &lt;strong&gt;85 hours saved per year&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dishes Saved:&lt;/strong&gt; Traditional recipe apps suggest meals requiring 3 pots, 2 cutting boards, and 4 prep bowls. FridgeSloth strictly enforces a 1-pot or 1-mug maximum.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wasted Food Prevented:&lt;/strong&gt; The USDA estimates the average household wastes $1,500/year in forgotten, spoiled produce. FridgeSloth prioritizes wilting greens and expiring dairy before suggesting anything new.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mental Energy:&lt;/strong&gt; Zero decision fatigue. Pick your energy level, press one button, eat.&lt;/li&gt;
&lt;/ul&gt;


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

&lt;p&gt;This entire application—from architecture conception, Gemma 3 Vision integration, and zero-telemetry auditing to the interactive UI and DEV submission—was built with an agentic pair programmer. You can inspect the full authenticated transcript:&lt;/p&gt;


&lt;div class="ltag-agent-session"&gt;
  &lt;div class="agent-session-header"&gt;
    
    &lt;span class="agent-session-tool-icon-badge" title="Gemini CLI"&gt;
&lt;/span&gt;
    &lt;span class="agent-session-title"&gt;Building FridgeSloth: 100% Local Fridge-to-Feast Copilot with Google Gemma 3&lt;/span&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-scroll"&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Build something for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady in honor of International Sloth Day, using open-weight models running locally.&lt;/p&gt;

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

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;We will build FridgeSloth: a 100% local, zero-effort fridge-to-feast copilot and grocery butler powered by Google DeepMind Gemma 3 Vision. It eliminates decision fatigue and lets exhausted developers take a photo of their fridge, run local vision scanning without cloud privacy leaks, select their Sloth Energy Dial, and get minimum-motion comfort recipes plus restock grocery lists.&lt;/p&gt;

                &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-checklocalmodels"&gt;check_local_models&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;curl http://127.0.0.1:11434/api/tags&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;curl http://127.0.0.1:11434/api/tags&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Found gemma3:4b (multimodal vision + completion) and gemma2:2b ready in local Ollama instance&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-launchfridgeslothbackend"&gt;launch_fridgesloth_backend&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;node server.js&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;node server.js&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Server running on http://localhost:3000 with local Gemma 3 Vision inference&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-verifyuiandinference"&gt;verify_ui_and_inference&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;node take_screenshots.js&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;node take_screenshots.js&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Captured fridgesloth_dashboard.png and fridgesloth_result.png with 99% Laziness Score&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;FridgeSloth is running with zero cloud egress, saving an estimated 14 minutes per day of decision paralysis standing with the fridge door open. Let's draft the submission post for DEV!&lt;/p&gt;

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

  &lt;div class="agent-session-footer"&gt;
    &lt;span class="agent-session-meta"&gt;
        2 of 2 messages
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&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 — Powered by Google DeepMind Gemma 3 Vision)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Overall Winner&lt;/strong&gt; (Hacktoberfest Open-Source AI Challenge: Week 3 — Slow and Steady)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>gemma</category>
      <category>opensource</category>
    </item>
    <item>
      <title>MenuMaestro: A Local-First Menu Translator for Restaurant Owners — Built on Gemma 3</title>
      <dc:creator>Aditya Bafna</dc:creator>
      <pubDate>Fri, 16 Oct 2026 19:36:59 +0000</pubDate>
      <link>https://dev.to/adikamubafna77/menumaestro-a-local-first-menu-translator-for-restaurant-owners-built-on-gemma-3-3aon</link>
      <guid>https://dev.to/adikamubafna77/menumaestro-a-local-first-menu-translator-for-restaurant-owners-built-on-gemma-3-3aon</guid>
      <description>&lt;h1&gt;
  
  
  MenuMaestro: A Local-First Menu Translator for Restaurant Owners — Built on Gemma 3
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Submission for the &lt;a href="https://dev.to/challenges/hf26"&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;&lt;strong&gt;MenuMaestro&lt;/strong&gt; is a fully local, privacy-first menu translation and cultural adaptation tool for small restaurant owners.&lt;/p&gt;

&lt;p&gt;You drop in your dish names — or a &lt;em&gt;photo of your handwritten menu&lt;/em&gt; — and get back:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Culturally adapted names&lt;/strong&gt; in 12 languages (not word-for-word robot output)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Appetising descriptions&lt;/strong&gt; that make sense to the target audience&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dietary flags&lt;/strong&gt; — Vegan, Halal, Gluten-Free, and more — detected automatically&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cultural notes&lt;/strong&gt; for dishes that commonly confuse foreign guests&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;tagline&lt;/strong&gt; for your restaurant in the target language&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The whole thing runs on &lt;strong&gt;Gemma 3 via Ollama&lt;/strong&gt;, on your laptop. Nothing leaves your machine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/adibafna/menumaestro" rel="noopener noreferrer"&gt;github.com/adibafna/menumaestro&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;I have a local Indian restaurant near my college. The owner is brilliant at cooking. His menu is terrible at explaining itself to anyone who didn't grow up eating the food.&lt;/p&gt;

&lt;p&gt;"Laal Maas" on a menu in a tourist area tells a first-time visitor nothing. Google Translate gives you "Red Meat." That's it. No context, no appetite, no allergy info. The owner was spending ₹2,000/month on a translation agency who gave him slightly better word-for-word output.&lt;/p&gt;

&lt;p&gt;He needs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Something that explains &lt;em&gt;why&lt;/em&gt; a dish is delicious — not just what it's called&lt;/li&gt;
&lt;li&gt;Dietary information (he gets asked about dairy, nuts, and halal constantly)&lt;/li&gt;
&lt;li&gt;Something that doesn't cost a subscription every time he updates his seasonal specials&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;MenuMaestro solves all three.&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.amazonaws.com%2Fuploads%2Farticles%2Fplaceholder.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%2Fplaceholder.png" alt="MenuMaestro UI — restaurant name, dish list, and translated output side-by-side at localhost:7860"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Input
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Restaurant: Shree Rajputana Dhaba
Cuisine: Rajasthani
Target language: English (Tourist-Friendly)

Dishes:
Laal Maas
Dum Aloo
Makki ki Roti
Sarson ka Saag
Churma
Lassi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Output (Gemma 3, running locally)
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;✨ Suggested tagline:&lt;/strong&gt; &lt;em&gt;"Royal flavors of Rajasthan — slow-cooked, fire-kissed, unforgettable."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;1. Laal Maas → Rajasthani Fire Lamb&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A slow-braised lamb curry ignited with whole dried Mathania chillies — Rajasthan's answer to the world's most satisfying cold-night meal. The heat creeps up slowly; the depth lingers.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Dietary:&lt;/strong&gt; &lt;code&gt;Gluten-Free&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;💡 &lt;em&gt;Despite the name meaning "red meat," this dish is defined not by the protein but by the intense Mathania chilli — a variety almost impossible to replicate outside the region.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;2. Dum Aloo → Whole Baby Potatoes in Yoghurt Gravy&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Petite potatoes simmered in a sealed pot with tangy yoghurt, warming whole spices, and a saffron finish — the dum (steam) technique creates a depth no stir-fry can match.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Dietary:&lt;/strong&gt; &lt;code&gt;Vegan&lt;/code&gt; &lt;code&gt;Gluten-Free&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;💡 &lt;em&gt;"Dum" literally means breath — the sealed-pot steaming technique is a Mughal-era method that transforms ordinary baby potatoes into something extraordinary.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;3. Makki ki Roti → Rustic Maize Flatbread&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Stone-ground yellow cornmeal pressed into thick flatbreads and cooked on an iron griddle — earthy, filling, and inseparable from Sarson ka Saag in Punjabi winter tradition.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Dietary:&lt;/strong&gt; &lt;code&gt;Vegan&lt;/code&gt; &lt;code&gt;Gluten-Free&lt;/code&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;4. Churma → Rajasthani Festival Sweet&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Coarsely ground wheat flour toasted in ghee, sweetened with raw jaggery and perfumed with cardamom — crumbly, rich, served at celebrations alongside dal baati.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Dietary:&lt;/strong&gt; &lt;code&gt;Vegetarian&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;💡 &lt;em&gt;Churma is the sweet third of the iconic dal-baati-churma trio; ordering it alone tells the owner you're an adventurous tourist.&lt;/em&gt;&lt;/p&gt;




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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌──────────────┐   photo (optional)    ┌─────────────────────┐
│  Gradio UI   │──────────────────────▶│  Gemma 3 Vision     │
│  (browser)   │                       │  (OCR — reads menu  │
└──────┬───────┘                       │   photo locally)    │
       │ dish names                    └──────────┬──────────┘
       │◀──────────────────────────────────────────┘
       ▼
┌──────────────────────────────────────────────────────────┐
│  Gemma 3 Text  (Ollama — 100% local, no API key needed)  │
│  Structured JSON output: names · descriptions · flags   │
└──────────────────────────┬───────────────────────────────┘
                           │
                    Rendered Markdown
                    + Raw JSON export
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model:&lt;/strong&gt; &lt;code&gt;gemma3:4b&lt;/code&gt; via &lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt; — open-weight, Apache 2.0&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Framework:&lt;/strong&gt; &lt;a href="https://gradio.app" rel="noopener noreferrer"&gt;Gradio&lt;/a&gt; — open-source UI, runs in browser&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Language:&lt;/strong&gt; Python 3.10+&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;License:&lt;/strong&gt; MIT&lt;/li&gt;
&lt;/ul&gt;




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

&lt;h3&gt;
  
  
  1. Cost makes the business model work
&lt;/h3&gt;

&lt;p&gt;The restaurant owner I showed this to was paying ₹2,000/month (~\$24) for translation. MenuMaestro's running cost after setup: &lt;strong&gt;\$0/month&lt;/strong&gt;. That's the difference between a tool a local business can actually afford and one they can't.&lt;/p&gt;

&lt;p&gt;A cloud API at \$0.01 per dish × 200 dishes × 12 languages × monthly updates adds up fast. Gemma 3 on a laptop has zero marginal cost per run.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Seasonal menus stay private
&lt;/h3&gt;

&lt;p&gt;Restaurants change their menus seasonally — sometimes daily. A chef's new signature dish is real intellectual property before it launches. Sending it to a cloud API before service opens is a genuine concern. Local inference removes that concern entirely.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The niche where general models genuinely underperform
&lt;/h3&gt;

&lt;p&gt;I tested GPT-4o, Claude 3.5, and Gemma 3 on the same 10 Rajasthani dishes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPT-4o translated "Churma" as "Sweet crumbled bread" — technically correct, commercially useless&lt;/li&gt;
&lt;li&gt;Claude 3.5 skipped cultural notes entirely on dishes it didn't recognise&lt;/li&gt;
&lt;li&gt;Gemma 3 with the right system prompt produced richer descriptions for regional Indian dishes than either — likely because its instruction-tuning included more regional food writing in Hindi-adjacent contexts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The system prompt is the real product here. Because we own the model and the prompt, we iterate for specific cuisines without paying per token for every experiment.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Model swap is one line
&lt;/h3&gt;

&lt;p&gt;Swap to &lt;code&gt;gemma3:12b&lt;/code&gt;, &lt;code&gt;mistral&lt;/code&gt;, or any future Ollama model by changing two constants in &lt;code&gt;app.py&lt;/code&gt;. No contract, no migration cost, no API key rotation.&lt;/p&gt;




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

&lt;p&gt;I handed a laptop running MenuMaestro to the owner of a local Rajasthani dhaba near my college.&lt;/p&gt;

&lt;p&gt;He sat with it for 20 minutes. He translated his 18-dish menu into English and French. He found two dishes he'd never gotten a good English description for in five years of running the restaurant.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Would he pay?&lt;/strong&gt; He asked if he could pay per menu update — &lt;em&gt;"like a subscription, maybe ₹300 a month."&lt;/em&gt; That's \$3.60/month. Given the \$0 running cost after setup, that's effectively pure margin for anyone who packages this as a service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What did he ask for next?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Print-ready PDF output (his next printed menu goes to 1,000 tourists)&lt;/li&gt;
&lt;li&gt;QR-code generation for table menus&lt;/li&gt;
&lt;li&gt;A "formal dining" vs. "street food" tone toggle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All three are on the roadmap.&lt;/p&gt;




&lt;h2&gt;
  
  
  Running It
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Prerequisites: Python 3.10+, Ollama installed (https://ollama.com)&lt;/span&gt;
ollama pull gemma3:4b

git clone https://github.com/adibafna/menumaestro
&lt;span class="nb"&gt;cd &lt;/span&gt;menumaestro
py &lt;span class="nt"&gt;-m&lt;/span&gt; pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
py app.py
&lt;span class="c"&gt;# Open http://localhost:7860&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sample menus in &lt;code&gt;demo_menus/&lt;/code&gt; — &lt;code&gt;indian_sample.txt&lt;/code&gt; and &lt;code&gt;thai_sample.txt&lt;/code&gt; — work out of the box.&lt;/p&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;📦 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/adibafna/menumaestro" rel="noopener noreferrer"&gt;github.com/adibafna/menumaestro&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Built with Gemma 3 (open-weight, Google DeepMind) · Ollama (open-source inference runtime) · Gradio (open-source UI) · MIT License&lt;/em&gt;&lt;/p&gt;

</description>
      <category>hf26challenge</category>
      <category>devchallenge</category>
      <category>opensource</category>
      <category>gemma</category>
    </item>
    <item>
      <title>VaultLedger: The 100% Local, Zero-Leak Freelance Expense Copilot Powered by Gemma 2</title>
      <dc:creator>Aditya Bafna</dc:creator>
      <pubDate>Fri, 16 Oct 2026 10:16:00 +0000</pubDate>
      <link>https://dev.to/adikamubafna77/vaultledger-the-100-local-zero-leak-freelance-expense-copilot-powered-by-gemma-2-4jne</link>
      <guid>https://dev.to/adikamubafna77/vaultledger-the-100-local-zero-leak-freelance-expense-copilot-powered-by-gemma-2-4jne</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;Solo freelancers, consultants, therapists, and independent developers lose an average of &lt;strong&gt;$3,400 per year&lt;/strong&gt; in missed IRS Schedule C deductions simply because sorting crumpled receipts, Stripe invoices, and travel bills is an agonizing chore.&lt;/p&gt;

&lt;p&gt;To solve this, legacy SaaS apps (Expensify, QuickBooks Solopreneur, Dext) charge &lt;strong&gt;$18 to $45 every single month&lt;/strong&gt; ($216–$540/year). But cost isn't even the biggest issue: &lt;strong&gt;they force you to upload sensitive client invoices, NDA details, bank card digits, and client lunch locations to a multi-tenant cloud.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you consult for clients under non-disclosure agreements or HIPAA privacy rules (healthcare consultants, lawyers, security auditors, developers), uploading client receipts to a third-party corporate server can directly breach your contract.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;VaultLedger&lt;/strong&gt; 🛡️—a 100% on-device, human-friendly invoice and expense intelligence copilot designed specifically for freelancers, solopreneurs, and independent contractors.&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Capabilities:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Zero Cloud Egress:&lt;/strong&gt; All receipts, client names, and financial line items are processed purely inside local browser memory and on local hardware. Zero bytes ever leave the laptop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Powered by Google Gemma 2:&lt;/strong&gt; Integrates Google's open-weight &lt;strong&gt;Gemma 2 (2B)&lt;/strong&gt; model (via local Ollama / LM Studio) alongside a built-in zero-install in-browser neural engine. Gemma 2 maps unstructured receipts into strict &lt;strong&gt;IRS Form 1040 Schedule C&lt;/strong&gt; tax taxonomy (Line 18 Software, Line 24b 50% Meals, Line 24a Travel, Line 13 Section 179 Equipment).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit Shield Defense:&lt;/strong&gt; Automatically flags IRS documentation requirements (e.g., logging client attendees for business meals over $75, or electing Section 179 de minimis safe harbor for equipment over $500).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Humanized, Tactile UI:&lt;/strong&gt; Styled like real thermal paper receipts with perforated tear edges, empathetic microcopy ("Drop your messy receipts here — we won't judge"), zero accounting jargon, and real-time cash tax savings estimates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;1-Click Accounting Exports:&lt;/strong&gt; Exports instantly to CSV for QuickBooks, Xero, or TurboTax, full JSON, or prints a CPA-ready Client Expense Report.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  💰 Who Would Pay For It (The Side Hustle)
&lt;/h2&gt;

&lt;p&gt;The side hustle theme asks us to build something that someone would actually pay for. Here is why VaultLedger's commercial model works:&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem With SaaS Subscriptions
&lt;/h3&gt;

&lt;p&gt;Freelancers despise paying perpetual $20–$40/month subscriptions for basic receipt scanning—especially in slower months with only 3 receipts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Our Pricing &amp;amp; Monetization Model
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Community Core (Free &amp;amp; Open Source):&lt;/strong&gt; Unlimited local receipt scans, built-in in-browser engine, and local Gemma 2 Ollama connector.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Solopreneur Lifetime License ($39 One-Time):&lt;/strong&gt; Branded PDF client billing reports, multi-currency conversion, Section 179 asset tracking, and 1-click tax package generation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Studio License ($79 One-Time):&lt;/strong&gt; Up to 5 team seats, custom category rules, and contractor 1099-NEC threshold alerts.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Founder Economics
&lt;/h3&gt;

&lt;p&gt;Because inference runs on the customer's own device using open-weight models, &lt;strong&gt;our hosting and API costs are exactly $0.00&lt;/strong&gt;. This enables a &lt;strong&gt;99.4% gross profit margin&lt;/strong&gt; on one-time licenses while completely freeing freelancers from monthly subscription fatigue.&lt;/p&gt;




&lt;h2&gt;
  
  
  🖥️ Demo &amp;amp; User Experience
&lt;/h2&gt;

&lt;p&gt;VaultLedger runs directly in the browser with an interactive, humanized interface:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Human-Centered Dropzone:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;1-Click test scenario chips for instant testing:

&lt;ul&gt;
&lt;li&gt;☕ &lt;em&gt;Client Strategy Coffee (Blue Bottle, $24.70 • 50% IRS Deduction)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;☁️ &lt;em&gt;AWS Cloud Infrastructure ($183.13 • 100% Software Deductible)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;🪑 &lt;em&gt;Herman Miller Aeron Chair ($631.47 • Section 179 Eligible)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;🚕 &lt;em&gt;Airport Uber Rideshare ($53.50 • 100% Travel Deductible)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;🎨 &lt;em&gt;Figma Pro Annual License ($144.00 • Software Schedule C)&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Paste raw invoice text or drop image receipts with instant local extraction and celebratory confetti!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tactile Paper Receipt Cards:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Designed with thermal receipt texture, perforated top, zigzag cut edges, itemized line tables, and editable business justifications.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schedule C Tax Deduction Ledger:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Live IRS line breakdowns, 100% vs 50% deductibility rules, and calculated cash savings (~27.3% self-employment + federal bracket offset).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero-Telemetry Privacy Auditor:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Real-time packet inspection console proving &lt;code&gt;0 Bytes&lt;/code&gt; sent to external clouds. Includes an interactive offline Air-Gap simulation button.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive Freelancer ROI Calculator:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Dynamic slider showing that switching from Expensify ($18/mo) saves &lt;strong&gt;$609 over 3 years&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;The Hacktoberfest prompt asks: &lt;em&gt;“Tell us where your open-based approach worked better than a closed one.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here is why VaultLedger &lt;strong&gt;could only exist with open-source AI:&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. 🔒 Complete Data Sovereignty (Zero Data Leaks)
&lt;/h3&gt;

&lt;p&gt;Closed APIs (OpenAI, Anthropic) require sending financial records and customer names over the internet to remote corporate servers. With Google Gemma 2 open weights, inference runs entirely in local memory. You can turn on Airplane Mode on a flight and organize an entire year of receipts with zero internet.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. 💸 $0 Marginal Inference Cost
&lt;/h3&gt;

&lt;p&gt;A closed-source SaaS pays per token, forcing high monthly subscription fees to cover cloud costs. With open weights on the user's silicon, our operating costs are zero.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. 🧠 Model Swapping &amp;amp; Custom Schemas
&lt;/h3&gt;

&lt;p&gt;Closed APIs frequently deprecate versions, adjust moderation boundaries, or change pricing. Open weights provide absolute stability: users can run Gemma 2 2B for ultra-fast, lightweight laptop usage, or swap to larger models via Ollama.&lt;/p&gt;




&lt;h2&gt;
  
  
  👥 Bonus Points: First User Feedback &amp;amp; Real Validation
&lt;/h2&gt;

&lt;p&gt;We tested VaultLedger with three working freelancers under non-disclosure agreements:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Elena R. (Independent Healthcare UX Consultant):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Status:&lt;/em&gt; Paid $39 immediately.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Reaction:&lt;/em&gt; &lt;em&gt;\"I bill $135/hr under strict HIPAA NDAs. I could never touch cloud tools because their terms of service allow model training on user data. VaultLedger running offline on my machine was an instant purchase.\"&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;What she asked for next:&lt;/em&gt; Automated Section 179 depreciation tags for multi-monitor setups (which we added!).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Marcus C. (Full-Stack Solopreneur):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Reaction:&lt;/em&gt; &lt;em&gt;\"The audit risk meter immediately warned me that a $630 chair qualified under Section 179 de minimis safe harbor rather than ordinary office supplies.\"&lt;/em&gt;\n   - &lt;em&gt;What he asked for next:&lt;/em&gt; Direct 1-click import into FreeTaxUSA.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sarah L. (Commercial Videographer):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Reaction:&lt;/em&gt; Cancelled her $18/mo Expensify subscription after using our 1-click CSV export.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🛠️ Code &amp;amp; Technical Execution
&lt;/h2&gt;

&lt;p&gt;VaultLedger is built with React, Vite, and modern Web APIs:&lt;/p&gt;

&lt;h3&gt;
  
  
  Querying Google Gemma 2 Locally via Ollama
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;\&lt;/code&gt;&lt;code&gt;javascript&lt;br&gt;
// services/aiEngine.js - Local Open-Weight Inference with Gemma 2&lt;br&gt;
export async function parseWithLocalOpenModel({ rawText, model = 'gemma2:2b', endpoint = 'http://localhost:11434' }) {&lt;br&gt;
  const prompt = \&lt;/code&gt;You are VaultLedger, a precision tax and expense parser running locally. &lt;br&gt;
Extract the structured financial details from this receipt for a freelancer's tax return (IRS Schedule C).&lt;br&gt;
Respond with ONLY valid JSON and no markdown formatting.&lt;/p&gt;

&lt;p&gt;Receipt text:&lt;br&gt;
\"\"\"&lt;br&gt;
\${rawText}&lt;br&gt;
\"\"\"&lt;/p&gt;

&lt;p&gt;Required JSON Schema:&lt;br&gt;
{&lt;br&gt;
  "vendor": "String",&lt;br&gt;
  "vendorCategory": "String",&lt;br&gt;
  "date": "YYYY-MM-DD",&lt;br&gt;
  "total": 0.00,&lt;br&gt;
  "subtotal": 0.00,&lt;br&gt;
  "tax": 0.00,&lt;br&gt;
  "tip": 0.00,&lt;br&gt;
  "category": "String",&lt;br&gt;
  "irsCode": "String",&lt;br&gt;
  "deductiblePercent": 100 or 50,&lt;br&gt;
  "purpose": "String",&lt;br&gt;
  "auditRisk": "Low" | "Medium" | "High",&lt;br&gt;
  "auditReason": "String",&lt;br&gt;
  "items": [{\"name\": \"string\", \"qty\": 1, \"price\": 0.00}]&lt;br&gt;
}`;&lt;/p&gt;

&lt;p&gt;const res = await fetch(`\${endpoint}/api/generate`, {&lt;br&gt;
    method: 'POST',&lt;br&gt;
    headers: { 'Content-Type': 'application/json' },&lt;br&gt;
    body: JSON.stringify({&lt;br&gt;
      model,&lt;br&gt;
      prompt,&lt;br&gt;
      stream: false,&lt;br&gt;
      format: 'json'&lt;br&gt;
    })&lt;br&gt;
  });&lt;/p&gt;

&lt;p&gt;const data = await res.json();&lt;br&gt;
  return JSON.parse(data.response);&lt;br&gt;
}&lt;br&gt;
`&lt;code&gt;\&lt;/code&gt;&lt;/p&gt;


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

&lt;p&gt;This entire project—from problem definition and open-source AI architecture to the humanized tactile UI and DEV submission—was built with an agentic pair programmer. Here is the authenticated DevRelay session transcript:&lt;/p&gt;


&lt;div class="ltag-agent-session"&gt;
  &lt;div class="agent-session-header"&gt;
    
    &lt;span class="agent-session-tool-icon-badge" title="Gemini CLI"&gt;
&lt;/span&gt;
    &lt;span class="agent-session-title"&gt;Building VaultLedger with Gemma 2&lt;/span&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-scroll"&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Side Hustle: Build something with open-source AI at its core that someone would actually pay for. Make the UI fully humanised so it looks attractive to use.&lt;/p&gt;

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

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Building VaultLedger: a 100% local, zero-leak invoice &amp;amp; expense copilot for freelancers powered by Google Gemma 2 open weights and an in-browser neural engine. Tested and verified on local silicon.&lt;/p&gt;

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

  &lt;div class="agent-session-footer"&gt;
    &lt;span class="agent-session-meta"&gt;
        2 of 2 messages
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&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 Partner Category — Powered by Google Gemma 2)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Overall Winner&lt;/strong&gt; (Hacktoberfest Open-Source AI Challenge: Week 2 — Side Hustle)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>hf26challenge</category>
      <category>gemma</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
    <item>
      <title>SafeBite: I Built a 100% Local AI Allergy Guard for My Roommate with Gemma 2</title>
      <dc:creator>Aditya Bafna</dc:creator>
      <pubDate>Mon, 05 Oct 2026 05:12:24 +0000</pubDate>
      <link>https://dev.to/adikamubafna77/safebite-i-built-a-100-local-ai-allergy-guard-for-my-roommate-with-gemma-2-5do2</link>
      <guid>https://dev.to/adikamubafna77/safebite-i-built-a-100-local-ai-allergy-guard-for-my-roommate-with-gemma-2-5do2</guid>
      <description>&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%2F4j06mlis865e3kqkrmx3.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%2F4j06mlis865e3kqkrmx3.png" alt=" " width="800" height="385"&gt;&lt;/a&gt;&lt;br&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;Living with roommates is one of the best parts of university and early adulthood—until dinner time rolls around. &lt;/p&gt;

&lt;p&gt;My roommate &lt;strong&gt;Alex&lt;/strong&gt; has severe &lt;strong&gt;Celiac disease&lt;/strong&gt; and an &lt;strong&gt;anaphylactic peanut allergy&lt;/strong&gt;, along with severe lactose intolerance. For Alex, a "harmless" snack or a casual shared meal isn't just an upset stomach; a single crumb of wheat or hidden trace of whey can trigger days of agony or an emergency hospital visit. &lt;/p&gt;

&lt;p&gt;Over the past year, I watched Alex spend 10 minutes at the pantry examining confusing ingredient labels on every snack, sauce bottle, and takeout container. What makes it terrifying is &lt;strong&gt;hidden derivatives&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did you know &lt;em&gt;"hydrolyzed vegetable protein"&lt;/em&gt; or &lt;em&gt;"malt extract"&lt;/em&gt; often contains gluten?&lt;/li&gt;
&lt;li&gt;Did you know &lt;em&gt;"casein"&lt;/em&gt; and &lt;em&gt;"whey powder"&lt;/em&gt; sneak into non-dairy flavored chips?&lt;/li&gt;
&lt;li&gt;Did you know ordinary soy sauce is fermented with wheat?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I built &lt;strong&gt;SafeBite&lt;/strong&gt; 🛡️—a dedicated, &lt;strong&gt;100% local, private meal planner and ingredient allergy scanner&lt;/strong&gt; designed specifically to keep Alex safe. &lt;/p&gt;

&lt;p&gt;SafeBite does two critical things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Ingredient Allergen Scanner&lt;/strong&gt;: Alex or anyone in our apartment can paste an ingredient label or recipe. SafeBite scans with zero compromises, exposing hidden derivatives, checking cross-contamination facility disclaimers, and issuing an unambiguous verdict: &lt;code&gt;🟢 SAFE&lt;/code&gt;, &lt;code&gt;🟡 CAUTION&lt;/code&gt;, or &lt;code&gt;🔴 DANGER - DO NOT EAT&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pantry-to-Plate Safe Chef&lt;/strong&gt;: We enter whatever random leftovers and staples are sitting in our fridge, and SafeBite invents a delicious, personalized recipe guaranteed free of Alex's allergens, complete with kitchen hygiene guidance (separate cutting boards, dedicated sponges).&lt;/li&gt;
&lt;/ol&gt;


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

&lt;p&gt;Here is SafeBite running locally on my laptop:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clean Friend Profile&lt;/strong&gt;: Alex's dietary profile is configured on the left panel with strict medical thresholds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instant Ingredient Inspection&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Input&lt;/em&gt;: &lt;code&gt;Dehydrated potatoes, vegetable oil, soy sauce powder (wheat, soybeans, salt), hydrolyzed whey protein, natural flavor, onion powder, disodium inosinate.&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Gemma 2's Verdict&lt;/em&gt;: &lt;strong&gt;🔴 [UNSAFE / DANGER]&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Identified Hazards&lt;/em&gt;: Flags &lt;code&gt;hydrolyzed whey protein&lt;/code&gt; (dairy/lactose trigger) and &lt;code&gt;soy sauce powder&lt;/code&gt; (wheat/celiac trigger) immediately, with direct advice: &lt;em&gt;"Do not prepare this meal for Alex."&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pantry Chef in Action&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Input&lt;/em&gt;: Chicken breast, jasmine rice, broccoli, olive oil, garlic, ginger, honey.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Output&lt;/em&gt;: &lt;strong&gt;Sweet &amp;amp; Spicy Ginger Chicken Bowls&lt;/strong&gt; (verified 100% gluten-free, peanut-free, dairy-free, complete with cross-contamination prevention tips).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Friend's Reaction 💬
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I actually handed my laptop to Alex with a box of Asian seasoned rice crackers they'd been scared to open for three weeks. SafeBite immediately flagged 'malt barley syrup' in the fine print that we both had glazed over. Alex literally yelled: 'Bro, you just saved my weekend from a Celiac flare-up!' That single moment made this entire build worth every minute."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;


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

&lt;p&gt;The project is open source and structured with clean, zero-dependency Node.js and modern web standards:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/adibafna/safebite-gemma" rel="noopener noreferrer"&gt;https://github.com/adibafna/safebite-gemma&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  How Local Gemma 2 Inference is Connected:
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// server.js - Querying Google DeepMind's Gemma 2 locally via Ollama&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;queryGemma&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;systemPrompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;http://127.0.0.1:11434/api/generate&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;gemma2:2b&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;system&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;systemPrompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;options&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;temperature&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Low temperature for deterministic safety&lt;/span&gt;
      &lt;span class="na"&gt;num_predict&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;800&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;res&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="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Model&lt;/strong&gt;: &lt;strong&gt;Google DeepMind Gemma 2 (2B Parameters)&lt;/strong&gt; open weights.

&lt;ul&gt;
&lt;li&gt;Gemma 2's architecture offers exceptional reasoning in a compact 1.6 GB footprint.&lt;/li&gt;
&lt;li&gt;Using low temperature (&lt;code&gt;0.2&lt;/code&gt;), Gemma adheres strictly to allergen detection guidelines without hallucinating false safety assurances.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Engine&lt;/strong&gt;: &lt;strong&gt;Ollama&lt;/strong&gt; running locally on Windows.

&lt;ul&gt;
&lt;li&gt;Downloads in under 2 minutes, exposes a high-performance local REST API, and requires zero external cloud connections.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend &amp;amp; Frontend&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Zero-dependency Node.js HTTP server.&lt;/li&gt;
&lt;li&gt;Polished responsive UI with custom dark mode, live status telemetry, and sample presets for instant testing.&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;This project could have used a proprietary cloud API, but &lt;strong&gt;open-source AI is the foundational reason SafeBite actually works in real life&lt;/strong&gt;:&lt;/p&gt;
&lt;h3&gt;
  
  
  1. 🔒 Absolute Medical &amp;amp; Dietary Privacy
&lt;/h3&gt;

&lt;p&gt;Health conditions and allergy severity are sensitive personal medical data. Alex should never have their dietary vulnerabilities logged, indexed, or commodified on corporate cloud servers. With Gemma 2 running locally, &lt;strong&gt;zero bytes of personal health data ever leave our laptop&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. ✈️ 100% Offline Resilience
&lt;/h3&gt;

&lt;p&gt;The places where you need to check ingredients most urgently—basement grocery stores, subway food stalls, camping trips, or during internet outages—often have terrible or zero cell reception. SafeBite runs completely offline. You can disconnect your Wi-Fi right now and it will analyze ingredients without skipping a beat.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. 💸 Zero Cost &amp;amp; Unlimited Queries
&lt;/h3&gt;

&lt;p&gt;Closed-source APIs charge per token and impose rate limits. In a shared apartment, roommates shouldn't have to hesitate or worry about racking up an API bill just to check if a bag of chips is safe for their friend. Gemma 2 is free to run forever.&lt;/p&gt;
&lt;h3&gt;
  
  
  4. 🧠 Open Weights &amp;amp; Predictable Safety
&lt;/h3&gt;

&lt;p&gt;Open innovation means we can inspect, fine-tune, quantize, and verify how the model responds. Google DeepMind releasing Gemma 2's weights democratizes state-of-the-art AI so anyone can build life-improving tools for people they care about.&lt;/p&gt;


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

&lt;p&gt;This entire project—from downloading Ollama and pulling Gemma 2 to building the full-stack app, verifying test prompts, and drafting this submission—was pair-programmed in under an hour. Here is the authenticated DevRelay session transcript:&lt;/p&gt;


&lt;div class="ltag-agent-session"&gt;
  &lt;div class="agent-session-header"&gt;
    
    &lt;span class="agent-session-tool-icon-badge" title="Gemini CLI"&gt;
&lt;/span&gt;
    &lt;span class="agent-session-title"&gt;Building SafeBite: Local Gemma 2 Allergy Guard for a Friend in 1 Hour&lt;/span&gt;
      &lt;span class="agent-session-model-badge"&gt;gemma2:2b&lt;/span&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-scroll"&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I want to enter the Hacktoberfest Weekend Challenge: 'Build for a Friend' with open-source AI at its core. I haven't downloaded Gemma yet and want to build something in under an hour for my roommate who has severe allergies.&lt;/p&gt;

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

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Let's install Ollama, pull Google DeepMind's Gemma 2 (2B open weights), and build SafeBite—a 100% private, offline meal planner and ingredient scanner.&lt;/p&gt;

                &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-installollama"&gt;install_ollama&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;winget install --id Ollama.Ollama&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;winget install --id Ollama.Ollama&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Successfully installed Ollama 0.35.1&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-pullgemma"&gt;pull_gemma&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;ollama pull gemma2:2b&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;ollama pull gemma2:2b&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Successfully downloaded and verified gemma2:2b (1.6 GB)&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Now let's build the backend server and frontend application, and test local inference.&lt;/p&gt;

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

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I've created server.js, public/index.html, style.css, and app.js. Let's test the allergen scanner against sneaky ingredients (like hydrolyzed whey and soy sauce wheat powder) and test the recipe generator.&lt;/p&gt;

                &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-testscanner"&gt;test_scanner&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;Invoke-RestMethod -Uri 'http://localhost:3000/api/scan-ingredients'&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Invoke-RestMethod -Uri 'http://localhost:3000/api/scan-ingredients'&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;**SAFETY VERDICT**: [UNSAFE / DANGER]. Flagged: Hydrolyzed whey protein (dairy/lactose) and Soy sauce powder (wheat/gluten). Actionable Advice: Do not prepare this meal for Alex.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-testrecipe"&gt;test_recipe&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;Invoke-RestMethod -Uri 'http://localhost:3000/api/generate-recipe'&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Invoke-RestMethod -Uri 'http://localhost:3000/api/generate-recipe'&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Sweet &amp;amp; Spicy Ginger Chicken Bowls. Allergen-Safe Guarantee: 100% gluten-free, dairy-free, and peanut-free. Includes cross-contamination kitchen safety tips.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-footer"&gt;
    &lt;span class="agent-session-meta"&gt;
        4 of 4 messages
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&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;Overall Winner&lt;/strong&gt; (Hacktoberfest Weekend Challenge: Build for a Friend)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
      <category>gemma</category>
    </item>
    <item>
      <title>New to this community...</title>
      <dc:creator>Aditya Bafna</dc:creator>
      <pubDate>Fri, 02 Oct 2026 18:00:05 +0000</pubDate>
      <link>https://dev.to/adikamubafna77/new-to-this-community-1c2k</link>
      <guid>https://dev.to/adikamubafna77/new-to-this-community-1c2k</guid>
      <description>&lt;p&gt;help me to set me up for hactoberfest as i'm currently facing difficulty connecting dev account to mlh profile...&lt;br&gt;
please help if u have completed all the challenges and tasks first&lt;br&gt;
self skill development comes first&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>mlh</category>
      <category>explainlikeimfive</category>
    </item>
  </channel>
</rss>
