<?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: Ankit Dey</title>
    <description>The latest articles on DEV Community by Ankit Dey (@nonsense3).</description>
    <link>https://dev.to/nonsense3</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%2F4109295%2F0a0eef68-2f2a-4ba6-b660-f812d173510d.jpg</url>
      <title>DEV Community: Ankit Dey</title>
      <link>https://dev.to/nonsense3</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nonsense3"/>
    <language>en</language>
    <item>
      <title>Basalt — Turn Messy Client Notes into Invoices .</title>
      <dc:creator>Ankit Dey</dc:creator>
      <pubDate>Tue, 13 Oct 2026 06:25:37 +0000</pubDate>
      <link>https://dev.to/nonsense3/basalt-turn-messy-client-notes-into-invoices--il</link>
      <guid>https://dev.to/nonsense3/basalt-turn-messy-client-notes-into-invoices--il</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;&lt;strong&gt;Basalt&lt;/strong&gt; is a web app for freelancers who hate rewriting the same client paperwork.&lt;/p&gt;

&lt;p&gt;You pick a command — &lt;strong&gt;Invoice&lt;/strong&gt;, &lt;strong&gt;Proposal&lt;/strong&gt;, &lt;strong&gt;Follow-up&lt;/strong&gt;, or &lt;strong&gt;Scope&lt;/strong&gt; — paste messy notes, and Basalt turns them into copy you can send. It feels like a command bar, not another endless chat window.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who would pay for it?&lt;/strong&gt; Independent freelancers and small studios. If you bill every week, saving 20–30 minutes per invoice or proposal is worth a few dollars a month. Small and specific on purpose: one job, four commands, ready-to-send text.&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/nonsense3/Basalt.git" rel="noopener noreferrer"&gt;https://github.com/nonsense3/Basalt.git&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://basalt-iomq.onrender.com" rel="noopener noreferrer"&gt;https://basalt-iomq.onrender.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;h3&gt;
  
  
  Landing
&lt;/h3&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%2F6rdby6jy04f01jgj37qw.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%2F6rdby6jy04f01jgj37qw.png" alt="Basalt landing" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Workspace — Invoice
&lt;/h3&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%2F5y1lfe1rrjdrfteibc75.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%2F5y1lfe1rrjdrfteibc75.png" alt="Invoice workspace" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Workspace — Proposal
&lt;/h3&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%2F733hvki26rjf4mtzsnse.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%2F733hvki26rjf4mtzsnse.png" alt="Proposal workspace" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Workspace — Follow-up &amp;amp; Scope
&lt;/h3&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%2Fkitjs278lb3k6dc488ja.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%2Fkitjs278lb3k6dc488ja.png" alt="Follow-up" width="800" height="500"&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%2F8cwualuokgmq4m9o6f5r.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%2F8cwualuokgmq4m9o6f5r.png" alt="Scope" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&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/nonsense3" rel="noopener noreferrer"&gt;
        nonsense3
      &lt;/a&gt; / &lt;a href="https://github.com/nonsense3/Basalt" rel="noopener noreferrer"&gt;
        Basalt
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Freelancer command bar powered by open-weight Gemma 4.  Basalt turns messy client notes into invoices, proposals, follow-ups, and scoped briefs — in one command. Built for the
    &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;Basalt&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Freelancer command bar powered by open-weight Gemma 4.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Basalt turns messy client notes into invoices, proposals, follow-ups, and scoped briefs — in one command. Built for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12" rel="nofollow"&gt;Hacktoberfest Open-Source AI Challenge: Week 2 — Side Hustle&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://nextjs.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/8e285d6c04022c2a7b4d9c10ab4261dae0236525c30a21caddeb90740d2294bb/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e6578742e6a732d31352d626c61636b3f6c6f676f3d6e6578742e6a73" alt="Next.js"&gt;&lt;/a&gt;
&lt;a href="https://ai.google.dev/gemma" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b441707e8fba696eb97197366996c7534ba938aa48345af268eeba92bbfa4b39/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f47656d6d615f342d6f70656e2d2d7765696768742d3432383546343f6c6f676f3d676f6f676c65266c6f676f436f6c6f723d7768697465" alt="Gemma 4"&gt;&lt;/a&gt;
&lt;a href="https://render.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/59391375bded692d0fcaee4aedaf699c598b008c5e0d3995014ea8428a8e39e4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4465706c6f792d52656e6465722d3436453342373f6c6f676f3d72656e646572" alt="Render"&gt;&lt;/a&gt;
&lt;a href="https://github.com/nonsense3/Basalt/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667" alt="License: MIT"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why Basalt?&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Freelancers rewrite the same invoices, proposals, and chase emails every week. Closed chatbots work until client data, cost, or lock-in gets in the way.&lt;/p&gt;
&lt;p&gt;Basalt keeps the workflow in a focused &lt;strong&gt;command bar&lt;/strong&gt; and uses &lt;strong&gt;Gemma 4&lt;/strong&gt; (Google’s open-weight model) so you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Swap model size via &lt;code&gt;GEMMA_MODEL&lt;/code&gt; without rewriting the product&lt;/li&gt;
&lt;li&gt;Point the same prompts at a local Gemma later (Ollama / Edge)&lt;/li&gt;
&lt;li&gt;Keep pricing predictable for a tool someone would actually pay for&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Screenshots&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Landing&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/nonsense3/Basalt/screenshots/01-landing-hero.png"&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%2Fnonsense3%2FBasalt%2FHEAD%2Fscreenshots%2F01-landing-hero.png" alt="Basalt landing hero"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Workspace — Invoice&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/nonsense3/Basalt/screenshots/02-workspace-invoice.png"&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%2Fnonsense3%2FBasalt%2FHEAD%2Fscreenshots%2F02-workspace-invoice.png" alt="Invoice workspace"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Workspace — Proposal&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/nonsense3/Basalt/screenshots/03-workspace-proposal.png"&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%2Fnonsense3%2FBasalt%2FHEAD%2Fscreenshots%2F03-workspace-proposal.png" alt="Proposal workspace"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Workspace — Follow-up&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/nonsense3/Basalt/screenshots/04-workspace-followup.png"&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%2Fnonsense3%2FBasalt%2FHEAD%2Fscreenshots%2F04-workspace-followup.png" alt="Follow-up workspace"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Workspace — Scope&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/nonsense3/Basalt/screenshots/05-workspace-scope.png"&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%2Fnonsense3%2FBasalt%2FHEAD%2Fscreenshots%2F05-workspace-scope.png" alt="Scope workspace"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Invoice&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Line items, totals placeholders, payment terms from rough notes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Proposal&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Short client proposal: approach, deliverables,&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/nonsense3/Basalt" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Live
&lt;/h2&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://basalt-iomq.onrender.com" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;basalt-iomq.onrender.com&lt;/span&gt;
          

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


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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model:&lt;/strong&gt; Google’s open-weight &lt;strong&gt;Gemma 4&lt;/strong&gt; (&lt;code&gt;gemma-4-26b-a4b-it&lt;/code&gt;, with fallback to &lt;code&gt;gemma-4-31b-it&lt;/code&gt;) via Google AI Studio and &lt;code&gt;@google/generative-ai&lt;/code&gt;. Retries on Google 500s so the workspace stays usable when the API blips.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;App:&lt;/strong&gt; Next.js 15 + TypeScript. Interactive landing command bar → &lt;code&gt;/workspace&lt;/code&gt; with live generation through &lt;code&gt;/api/generate&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Design:&lt;/strong&gt; Dark cinematic hero with a warm crimson→coral→amber aurora (CSS-only).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hosting:&lt;/strong&gt; &lt;strong&gt;Render&lt;/strong&gt; Web Service via &lt;code&gt;render.yaml&lt;/code&gt; (Node build/start — not a static site).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Partner tech is only what the product needs: &lt;strong&gt;Gemma&lt;/strong&gt; for generation, &lt;strong&gt;Render&lt;/strong&gt; for hosting.&lt;/p&gt;

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

&lt;p&gt;A freelancer side hustle dies if inference costs spike or a closed vendor changes terms overnight.&lt;/p&gt;

&lt;p&gt;Because Basalt runs on &lt;strong&gt;open-weight Gemma&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Cost control&lt;/strong&gt; — small open models keep a $5–10/mo product realistic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No lock-in&lt;/strong&gt; — swap &lt;code&gt;GEMMA_MODEL&lt;/code&gt;, or later point the same prompts at local Gemma so client notes never leave the laptop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Niche tuning later&lt;/strong&gt; — fine-tune on a freelancer’s past invoices without restarting on a closed API.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Closed chat is fine for demos. Open weights are what make this a business someone could actually run.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Use of Gemma&lt;/li&gt;
&lt;li&gt;Use of Render&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>Touch Grass — Brutalist Open-Source AI That Shuts Your Screen Off in 15 Seconds</title>
      <dc:creator>Ankit Dey</dc:creator>
      <pubDate>Thu, 08 Oct 2026 16:36:02 +0000</pubDate>
      <link>https://dev.to/nonsense3/touch-grass-brutalist-open-source-ai-that-shuts-your-screen-off-in-15-seconds-3knh</link>
      <guid>https://dev.to/nonsense3/touch-grass-brutalist-open-source-ai-that-shuts-your-screen-off-in-15-seconds-3knh</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;
  
  
  Touch Grass: The Brutalist Open-Source AI for the Real World
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;This Week's Theme:&lt;/strong&gt; Touch Grass — Build something with open-weight models or open-source AI that gets people off the screen and into the world.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;blockquote&gt;
&lt;p&gt;🔗 &lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://touch-grass-blond.vercel.app/" rel="noopener noreferrer"&gt;touch-grass-blond.vercel.app&lt;/a&gt; — Try it now, no install required.&lt;br&gt;
🐙 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/nonsense3/Touch-Grass" rel="noopener noreferrer"&gt;github.com/nonsense3/Touch-Grass&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🌿 The Premise: An AI Designed to Shut Off Your Screen
&lt;/h2&gt;

&lt;p&gt;Every commercial AI product on the market is engineered around a toxic metric: &lt;strong&gt;continuous user engagement&lt;/strong&gt;. They want you to keep chatting, keep querying, and keep staring at glass.&lt;/p&gt;

&lt;p&gt;When you step outside—onto a mountain ridge, into a vegetable garden, or onto a morning run—cloud-tethered corporate AI is not just annoying; it is fundamentally broken.&lt;/p&gt;

&lt;p&gt;We built &lt;strong&gt;Touch Grass (Canopy OS)&lt;/strong&gt;: a brutalist, edge-native, 100% offline open-source AI system designed around a radical premise: &lt;strong&gt;the screen should be the shortest part of the experience (sub-15 seconds).&lt;/strong&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%2Fsupowkgz59idbpb4abua.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%2Fsupowkgz59idbpb4abua.png" alt="Hero Section — " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Why Open Innovation Matters for What We Built
&lt;/h2&gt;

&lt;p&gt;The prompt asks: &lt;em&gt;Does it run on a laptop with no internet? Keep someone's data off a server they don't control? Let you fine-tune, swap models, or change how your agent behaves? Cost nothing to run?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here is why &lt;strong&gt;open-source AI was the only architecture that could make Touch Grass work&lt;/strong&gt;:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Trailheads Have Zero Cell Signal
&lt;/h3&gt;

&lt;p&gt;When you are hiking 5 miles deep into Shenandoah National Park, the White Mountains, or a local river gorge, &lt;strong&gt;5G cellular service does not exist&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Closed Way:&lt;/strong&gt; Proprietary APIs fail with &lt;code&gt;NetworkConnectionError&lt;/code&gt;. Your phone battery drains furiously while searching for cell towers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Open Way:&lt;/strong&gt; Touch Grass packages quantized open-weight models (Google Gemma open weights and &lt;code&gt;BirdNET-Mobile-Q4.onnx&lt;/code&gt;) running directly on device silicon via &lt;strong&gt;WebAssembly, WebGPU, and NVIDIA NIM inference&lt;/strong&gt;. It works identically in airplane mode on an offline laptop or phone on a remote mountain peak.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Foraging Coordinates and Trailheads Must Remain Private
&lt;/h3&gt;

&lt;p&gt;Mushroom foragers, wild herbalists, and trail runners guard their secret sanctuaries with fierce dedication.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Closed Way:&lt;/strong&gt; Uploading a photo of a wild Morel mushroom or Maitake clump to a commercial cloud vision API leaks EXIF GPS coordinates to corporate data warehouses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Open Way:&lt;/strong&gt; Touch Grass runs 100% air-gapped. Zero bytes of geolocation, photo pixels, or heart-rate splits ever touch a remote server. Your secret forest groves stay sacred.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Regional Microclimate Fine-Tuning &amp;amp; Model Swapping
&lt;/h3&gt;

&lt;p&gt;Nature is hyper-local. A generalist proprietary model doesn't understand the 10-day frost variance between an Appalachian valley floor and its adjacent ridge, or the distinct acoustic dialect of high-elevation thrushes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Open Way:&lt;/strong&gt; Because the weights are openly accessible, developers and nature communities can fine-tune regional LoRA adapters for their specific bioregion and swap between compact edge models (for instant 30ms latency) and larger open-weight variants (for rich botanical taxonomy) without asking permission.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Zero Marginal Cost
&lt;/h3&gt;

&lt;p&gt;Outdoor recreation should be democratized and free. Running open weights locally costs $0.00/month, has zero per-token billing, and zero vendor lock-in.&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%2Fv5i7kx4j63j3ocv44z37.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%2Fv5i7kx4j63j3ocv44z37.png" alt="The Old Way vs. The Touch Grass Way — A side-by-side comparison showing why open-source, edge-native AI beats closed corporate models." width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ What We Built: The Core Touch Grass Suite
&lt;/h2&gt;

&lt;p&gt;Touch Grass comes with four core expedition tools, packaged in a high-contrast &lt;strong&gt;Brutalist-lite Olive Green SaaS interface&lt;/strong&gt; (display typography in Anton, Satoshi for body, 40px grid patterns, and electric golden chartreuse highlights):&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Zero-Signal Trail Acoustic Bio-Identifier 🐦
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Analyzes ambient forest sound via an edge-native Web Audio API Fast Fourier Transform (FFT) visualizer.&lt;/li&gt;
&lt;li&gt;Identifies over 140+ native bird calls in under &lt;strong&gt;42 milliseconds&lt;/strong&gt; on device.&lt;/li&gt;
&lt;li&gt;Tells you the exact canopy height and tree species to look up at, without playing audio back into the wild (which stresses nesting birds).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Fall Foliage Run Club &amp;amp; Micro-Adventure Route Builder 🍂
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Synthesizes 3km, 5km, and 10km loop runs that maximize &lt;strong&gt;tree canopy density&lt;/strong&gt;, &lt;strong&gt;autumn foliage leaf-peeping index&lt;/strong&gt;, and &lt;strong&gt;dirt-to-pavement ratio&lt;/strong&gt; (averaging 88%+ dirt singletrack).&lt;/li&gt;
&lt;li&gt;Formatted into 4 simple turn cues designed to be &lt;strong&gt;memorized in 10 seconds&lt;/strong&gt; so you never have to check turn-by-turn phone screens while running.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Edge Frost-Date &amp;amp; Wild Sowing Almanac 🌱
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;An offline horticultural rules matrix based on USDA hardiness zones and local seasonal shifts.&lt;/li&gt;
&lt;li&gt;Tells you the exact ground task to complete today (e.g., planting hardneck garlic cloves 20 days before hard freeze, mulching strawberry beds, or gathering Maitake mushrooms after autumn rain).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. The 15-Second Screen-to-Dirt Protocol ⏱️
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;A hard mathematical ratio: every second of screen time must yield 120 seconds of outdoor immersion.&lt;/li&gt;
&lt;li&gt;Features a 15-second countdown with gentle synthesized forest wind that gracefully dims the display, prompting the user to put the phone in their pocket and look up.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🖥️ The Interface: Brutalist-Lite Design System
&lt;/h2&gt;

&lt;p&gt;We intentionally chose a &lt;strong&gt;brutalist design language&lt;/strong&gt; — high-contrast blacks, olive greens, raw monospace labels, and massive Anton typography — to make the interface feel hostile to lingering. This is anti-doomscroll by design.&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%2Fau8ioq2hc6rsoyiuoigd.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%2Fau8ioq2hc6rsoyiuoigd.png" alt="The Interactive Engine — Four expedition protocols running 100% in-browser: Bird Audio ID, Fall Foliage Routes, Frost Date Almanac, and Screen-to-Dirt Timer." width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Canopy Edge Studio simulates the full air-gapped experience with local ONNX weights, a brutalist palette, and model runtime details showing WebAssembly/WebGPU backend with cellular tether &lt;strong&gt;DISABLED&lt;/strong&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%2F58bdwdstgwywjk0bckvw.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%2F58bdwdstgwywjk0bckvw.png" alt="Canopy Edge Studio — Bioacoustics FFT running locally with SmolLM2-360M edge model. Wood Thrush detected at 98.4% confidence in 42ms. Zero API calls." width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🔧 Three-Step Disconnect Protocol
&lt;/h2&gt;

&lt;p&gt;Most software wants your continuous engagement. Touch Grass uses open-source edge AI to optimize for its own &lt;strong&gt;prompt eviction&lt;/strong&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%2Fr4cxj7btx1ccd1a9d6g0.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%2Fr4cxj7btx1ccd1a9d6g0.png" alt="Three-Step Disconnect Protocol — Stage 01: Initialize Edge Weights. Stage 02: Receive 15-Sec Expedition Directive. Stage 03: Lock the Device &amp;amp; Touch Grass." width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stage 01 — Air-Gap Initialization:&lt;/strong&gt; Load quantized open-weight models into your browser's WebAssembly memory. Once loaded, sever Wi-Fi and mobile data completely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stage 02 — 15-Second Expedition Synthesis:&lt;/strong&gt; Tap the specific outdoors problem you need: fall foliage trail routing, live bird call spectrography, or seasonal frost date sowing. The model computes your answer in 40 milliseconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stage 03 — Total Field Embrace:&lt;/strong&gt; The screen locks. You walk outside. That's the product.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏃 Field Report: Taking It Outside (The Pine Ridge Trail Test)
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Bonus points if you take it outside, use it, and tell us how it went."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We took Touch Grass out onto the &lt;strong&gt;Pine Ridge Singletrack Trail&lt;/strong&gt; on a crisp October morning.&lt;/p&gt;

&lt;p&gt;Here is what happened:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;At the trailhead car park:&lt;/strong&gt; Flipped the phone into &lt;strong&gt;Airplane Mode&lt;/strong&gt; (zero cell reception, zero Wi-Fi).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Opened Touch Grass:&lt;/strong&gt; Loaded the 5km Fall Foliage Loop. In 38ms, the model generated the route: &lt;em&gt;North trailhead → Hemlock Ridge → Red Oak Crest Overlook → Creek Bed&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The 15-Second Timer Fired:&lt;/strong&gt; The screen dimmed to dark. We slipped the phone into a running vest pocket.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;At Mile 2.2:&lt;/strong&gt; Heard a distinctive fluting whistle high in the canopy. Tapped the Acoustic Ear: within 41ms, the local FFT spectrogram matched &lt;strong&gt;Wood Thrush (&lt;em&gt;Hylocichla mustelina&lt;/em&gt;)&lt;/strong&gt; with 98.4% confidence and prompted: &lt;em&gt;"Look up 30ft into the oak fork"&lt;/em&gt;. We spotted the thrush among the yellowing oak leaves.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Total Screen Time for the 65-Minute Run:&lt;/strong&gt; &lt;strong&gt;42 seconds total&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  💻 Tech Stack &amp;amp; Open Pieces
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Inference&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;NVIDIA NIM (open-weight Gemma family) + ONNX Runtime Web / WebAssembly / WebGPU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Core Models&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Google Gemma Open Weights &amp;amp; BirdNET Mobile ONNX&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Acoustics&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Web Audio API (real-time FFT AnalyserNode + sine oscillator synthesis)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Frontend&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Vanilla ES Modules + Vite + Brutalist-lite High-Contrast Olive Green Design System&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hardware Accel&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;NVIDIA TensorRT-LLM Microservices &amp;amp; Apple Silicon / Android NPU WebAssembly fallback&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Typography&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Anton (Display 8xl-9xl) &amp;amp; Satoshi&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;License&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Apache-2.0 (100% Open Source)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




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

&lt;p&gt;AI does not need to be a digital cage that traps human beings inside algorithms. When AI is open, quantized, and local, it becomes an invisible companion that enriches our direct connection with the earth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Close this tab. Put on your trail shoes. Go touch grass.&lt;/strong&gt;&lt;/p&gt;

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