<?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>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>
