<?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: Vinit Shinde</title>
    <description>The latest articles on DEV Community by Vinit Shinde (@vinit_shinde_99).</description>
    <link>https://dev.to/vinit_shinde_99</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%2F4173615%2F45dbe7fb-09cb-4c37-858c-0611663b04a7.jpg</url>
      <title>DEV Community: Vinit Shinde</title>
      <link>https://dev.to/vinit_shinde_99</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vinit_shinde_99"/>
    <language>en</language>
    <item>
      <title>Still: The Decision Decompressor for Overwhelmed Minds</title>
      <dc:creator>Vinit Shinde</dc:creator>
      <pubDate>Sun, 25 Oct 2026 09:58:25 +0000</pubDate>
      <link>https://dev.to/vinit_shinde_99/still-the-decision-decompressor-for-overwhelmed-minds-29o1</link>
      <guid>https://dev.to/vinit_shinde_99/still-the-decision-decompressor-for-overwhelmed-minds-29o1</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;When your brain is completely fried by three emails from your boss, a looming Thursday deadline, and 30 open browser tabs, the last thing you need is another productivity tool asking you to organize a Kanban board, assign priority tags, or create a 10-step action plan. Most tools demand the exact executive function you currently lack.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Still&lt;/strong&gt; is the antidote. It is an open-source, ephemeral decision decompressor designed for moments of acute cognitive fatigue and analysis paralysis.&lt;/p&gt;

&lt;p&gt;You type or speak a raw, messy brain-dump into the box (e.g. &lt;em&gt;"deadline thursday, boss emailed 3x, exhausted"&lt;/em&gt;). Still passes it through open-weight AI with strict deterministic guardrails to return &lt;strong&gt;exactly one small, physical, reversible micro-step&lt;/strong&gt; that takes 10 minutes or less—and then &lt;strong&gt;completely forgets everything&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who gets to be lazier because of it?
&lt;/h3&gt;

&lt;p&gt;Anyone trapped in burnout, ADHD decision paralysis, or end-of-day overwhelm. You don't have to plan. You don't have to prioritize. You don't have to triage a backlog. You get one tiny 2-minute icebreaker (like &lt;em&gt;"glance at that last email from your boss to see if it is actually scary or just noise"&lt;/em&gt;, or &lt;em&gt;"drink a cool glass of water"&lt;/em&gt;). You do that one thing, your paralysis dissolves, and you're back in motion without expending willpower.&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Live Web Application:&lt;/strong&gt; &lt;a href="https://decision-decompressor.onrender.com" rel="noopener noreferrer"&gt;https://decision-decompressor.onrender.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💻 &lt;strong&gt;Source Code Repository:&lt;/strong&gt; &lt;a href="https://github.com/vinit-tech-source/decision-decompressor" rel="noopener noreferrer"&gt;github.com/vinit-tech-source/decision-decompressor&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/Ukp4zBx6UWU" width="710" height="399"&gt;
  &lt;/iframe&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/vinit-tech-source" rel="noopener noreferrer"&gt;
        vinit-tech-source
      &lt;/a&gt; / &lt;a href="https://github.com/vinit-tech-source/decision-decompressor" rel="noopener noreferrer"&gt;
        decision-decompressor
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Still: The Decision Decompressor for Overwhelmed Minds
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/vinit-tech-source/decision-decompressor/./public/icon.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%2Fvinit-tech-source%2Fdecision-decompressor%2FHEAD%2F.%2Fpublic%2Ficon.svg" alt="Still Logo" width="80" height="80"&gt;&lt;/a&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Still&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;&lt;em&gt;One gentle thing, then it forgets you.&lt;/em&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;A calm decision decompressor built for days when planning feels impossible.&lt;br&gt;
Still takes a raw, messy brain-dump and returns &lt;strong&gt;exactly one small, physical, reversible action&lt;/strong&gt; that takes 10 minutes or less.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.typescriptlang.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b308ff9a6de632b94c933c0f27975188080f8cf88a115ae10338540f8d9ab8ab/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f547970655363726970742d3030374143433f7374796c653d666f722d7468652d6261646765266c6f676f3d74797065736372697074266c6f676f436f6c6f723d7768697465" alt="TypeScript"&gt;&lt;/a&gt;
&lt;a href="https://react.dev/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/2b076a615e84ef0bea45dbbfb40196dc307777b296c9c3bd4e5b19b889c97c80/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f52656163745f31392d3230323332413f7374796c653d666f722d7468652d6261646765266c6f676f3d7265616374266c6f676f436f6c6f723d363144414642" alt="React 19"&gt;&lt;/a&gt;
&lt;a href="https://tailwindcss.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/215d30cd1fc91da5de6cf841118ff4ec716464170f5b0ea6191868c86861388d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5461696c77696e645f4353535f76342d3338423241433f7374796c653d666f722d7468652d6261646765266c6f676f3d7461696c77696e642d637373266c6f676f436f6c6f723d7768697465" alt="Tailwind CSS"&gt;&lt;/a&gt;
&lt;a href="https://threejs.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/01120d9d1490171955b6919963b88643a2185de74cdd3cc292060f758a468821/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f54687265652e6a732d3030303030303f7374796c653d666f722d7468652d6261646765266c6f676f3d74687265652e6a73266c6f676f436f6c6f723d7768697465" alt="Three.js"&gt;&lt;/a&gt;
&lt;a href="https://vitejs.dev/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/06a01d90ae9fa6bd96eb0e03dc3dce93e7c9d163a59dba7be9de9fa03ab926ac/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f566974655f382d3634364346463f7374796c653d666f722d7468652d6261646765266c6f676f3d76697465266c6f676f436f6c6f723d7768697465" alt="Vite"&gt;&lt;/a&gt;
&lt;a href="https://github.com/vinit-tech-source/decision-decompressor/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/9218332452902d9e542a100d0af126fd3174a116456614d2cf093546a13783db/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d677265656e2e7376673f7374796c653d666f722d7468652d6261646765" alt="License: MIT"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://decision-decompressor.onrender.com" rel="nofollow noopener noreferrer"&gt;Live Demo&lt;/a&gt; • &lt;a href="https://github.com/vinit-tech-source/decision-decompressor#key-features" rel="noopener noreferrer"&gt;Features&lt;/a&gt; • &lt;a href="https://github.com/vinit-tech-source/decision-decompressor#system-flow--architecture" rel="noopener noreferrer"&gt;Architecture&lt;/a&gt; • &lt;a href="https://github.com/vinit-tech-source/decision-decompressor#quick-start" rel="noopener noreferrer"&gt;Getting Started&lt;/a&gt; • &lt;a href="https://github.com/vinit-tech-source/decision-decompressor#deployment" rel="noopener noreferrer"&gt;Deployment&lt;/a&gt; • &lt;a href="https://github.com/vinit-tech-source/decision-decompressor#privacy--data-ethics" rel="noopener noreferrer"&gt;Privacy&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🍃 Why Still Exists&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Most productivity apps demand more executive function than an overwhelmed mind can provide:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Complex Kanban boards and task lists demand categorization and prioritization.&lt;/li&gt;
&lt;li&gt;Streak counters and notifications create guilt loops when you fall behind.&lt;/li&gt;
&lt;li&gt;AI assistants overload you with 10-step action plans when you can barely start one thing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Still is the antidote.&lt;/strong&gt; It is not a to-do list, a project manager, or a streak tracker. It is an ephemeral refuge that clears the noise, suggests one single micro-step, and forgets everything the moment you close the tab.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🚫 What Still Refuses to Do&lt;/h2&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/vinit-tech-source/decision-decompressor" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





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

&lt;p&gt;Still was built from the ground up around &lt;strong&gt;open-weight models&lt;/strong&gt;, &lt;strong&gt;zero-AI deterministic guardrails&lt;/strong&gt;, and &lt;strong&gt;calm web aesthetics&lt;/strong&gt;:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Dual Inference Engine (Hosted + 100% Offline Local)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hosted Mode:&lt;/strong&gt; Powered by Google's open-weights &lt;strong&gt;Gemma 4&lt;/strong&gt; (&lt;code&gt;gemma-4-26b-a4b-it&lt;/code&gt;) via the Google GenAI SDK, tuned to be warm, friendly, and ice-breaking rather than clinical.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Mode with Ollama:&lt;/strong&gt; For ultimate privacy, users can flip a switch in Settings to run 100% on their own machine using local &lt;strong&gt;Ollama&lt;/strong&gt; (&lt;code&gt;ollama pull gemma4:e2b&lt;/code&gt;). Not a single byte ever leaves the computer.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. The Deterministic Zero-AI Validator
&lt;/h3&gt;

&lt;p&gt;To prevent AI hallucinations, scope creep, or multi-step lists, every single model output is passed through an automated heuristic validator in TypeScript:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Strict Single Action:&lt;/strong&gt; Rejects any sentence containing connectors like &lt;em&gt;"and"&lt;/em&gt;, &lt;em&gt;"then"&lt;/em&gt;, &lt;em&gt;"after"&lt;/em&gt;, &lt;em&gt;"before"&lt;/em&gt;, or commas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gentle Verb Enforcement:&lt;/strong&gt; The action must start with an approved grounding verb (&lt;em&gt;open, glance, drink, stretch, wipe, sit, breathe, step...&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anti-Effort Filter:&lt;/strong&gt; Instantly rejects high-effort triggers (&lt;em&gt;reply, decide, plan, organize, schedule, fix, solve&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hard Time Box:&lt;/strong&gt; Enforces an integer limit of 1 to 10 minutes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Crisis &amp;amp; Safety Interceptor
&lt;/h3&gt;

&lt;p&gt;Before any text reaches the model, a deterministic safety classifier checks for acute distress or self-harm keywords. If detected, it immediately bypasses all generation to offer compassionate, immediate crisis helpline resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Calm Aesthetic Architecture
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; React 19, Vite 8, Tailwind CSS v4, Motion.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3D Procedural Grounding Canvas:&lt;/strong&gt; Three.js procedural shaders generating dynamic nature vistas (Forest, Water, Meadow) that respond gently to cursor motion.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Micro-Voice Typing:&lt;/strong&gt; Native Web Speech API integration with progressive permission checks and live speech stream accumulation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Express + Node.js (hosted on Render's free tier) with in-memory sliding quota protection and privacy-first zero-logging of user texts.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;Open innovation is what makes a privacy-first mental health tool like Still ethically possible:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Radical Privacy Through Local Weights:&lt;/strong&gt; People using Still are typing their most vulnerable, stressed-out, unstructured thoughts into a text area. Closed APIs require shipping those private anxieties across corporate networks to be logged and monetized. Open-weight models like &lt;strong&gt;Gemma 4 via Ollama&lt;/strong&gt; make it possible to run state-of-the-art inference entirely offline on the user's laptop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic Control over Closed Black Boxes:&lt;/strong&gt; Closed AI services are optimized for engagement loops, longer sessions, and subscription retention. Open innovation allows developers to constrain open models with deterministic guardrails that say: &lt;em&gt;"Give them one tiny step, close the door, and refuse to keep them hooked."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Free &amp;amp; Accessible Forever:&lt;/strong&gt; By leveraging open-weight models, independent developers can deploy therapeutic, decompression utilities on free-tier infrastructure without facing prohibitive per-token API bills.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;The average knowledge worker wastes 20 to 45 minutes every single day spiraling in "meta-work"—re-sorting task lists, staring blankly at notifications, and reorganizing calendars while doing nothing.&lt;/p&gt;

&lt;p&gt;Still turns that entire exhausting mental process into a single button press. Instead of fighting your tired brain to prioritize 15 urgent tasks, Still extracts the single lowest-friction icebreaker. Doing just &lt;strong&gt;one 2-minute micro-action&lt;/strong&gt; restores momentum without requiring you to make any decisions. It is the ultimate productivity hack for days when you just want to take it slow and steady.&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Week 3: Slow and Steady&lt;/strong&gt; (Primary Challenge Theme)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Open-Source AI Application&lt;/strong&gt; (Gemma 4 / Ollama)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>ai</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>ShowUp: an offline no-show predictor that tells you when it can't be trusted</title>
      <dc:creator>Vinit Shinde</dc:creator>
      <pubDate>Sun, 18 Oct 2026 17:43:18 +0000</pubDate>
      <link>https://dev.to/vinit_shinde_99/showup-an-offline-no-show-predictor-that-tells-you-when-it-cant-be-trusted-3f9j</link>
      <guid>https://dev.to/vinit_shinde_99/showup-an-offline-no-show-predictor-that-tells-you-when-it-cant-be-trusted-3f9j</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 missed appointment is an empty chair you still pay for. Solo salons, physios, tutors and small clinics feel this most, and the usual fixes are blunt: a deposit for everyone, including loyal regulars.&lt;/p&gt;

&lt;p&gt;ShowUp is a local-first tool that helps these businesses &lt;strong&gt;reduce&lt;/strong&gt; no-shows. The owner imports a CSV export of their bookings (Google Sheets, Calendly, Fresha, Excel). ShowUp calculates what no-shows cost them, ranks upcoming appointments by predicted risk, and drafts a polite WhatsApp reminder in English, Hindi or Marathi. The owner reviews it and sends it with one click through a wa.me link. Nothing is ever sent automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who would pay:&lt;/strong&gt; a solo practitioner who loses slots and doesn't want to alienate regulars with deposit rules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing idea (untested):&lt;/strong&gt; $9/month, or a $49 one-time license. Illustration, not measured data: 60 bookings a month at $60 with a 10% no-show rate is about $360 lost monthly, so recovering two slots a month beats the subscription.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it is different:&lt;/strong&gt; client names, phone numbers and visit history never leave the computer. No cloud, no account, no per-message API fee.&lt;/p&gt;

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

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/84S_YkNj56o" width="710" height="399"&gt;
  &lt;/iframe&gt;
. Everything shown is &lt;strong&gt;synthetic sample data&lt;/strong&gt;, not a real business. I chose not to host a public version, because a public site where strangers upload client records would contradict the privacy promise.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/vinit-tech-source/ShowUp" rel="noopener noreferrer"&gt;https://github.com/vinit-tech-source/ShowUp&lt;/a&gt; (Apache 2.0). Uses TabPFN-2 by Prior Labs; its weights carry their own license with an attribution requirement.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Local stack:&lt;/strong&gt; Python, Streamlit, SQLite. After a one-time model download, it runs with Wi-Fi off.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Import:&lt;/strong&gt; detects encoding and delimiter, fuzzy-matches column names, and reports valid, invalid and duplicate rows before saving.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scoring ladder:&lt;/strong&gt; simple rules under 30 visits, calibrated logistic regression with more history, and TabPFN-2 (CPU) as a candidate. Features use only data from before each appointment, so there is no leakage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Honest selection:&lt;/strong&gt; models are compared with 95% bootstrap confidence intervals, and the app won't call one "better" unless the gap is statistically meaningful.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Messages:&lt;/strong&gt; local Llama 3.2 3B via Ollama, with template fallbacks and a guardrail that blocks guilt-tripping or shaming language. [State which languages come from the model vs templates.]&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tests:&lt;/strong&gt; 159 passing, ruff clean, mypy --strict on the UI.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What the Numbers Say (and Don't)
&lt;/h2&gt;

&lt;p&gt;On my 160-visit &lt;strong&gt;synthetic&lt;/strong&gt; benchmark: TabPFN-2 ROC-AUC &lt;a href="//95%%20CI%20[0.387%E2%80%930.634]"&gt;0.526&lt;/a&gt; and logistic regression &lt;a href="//[0.461%E2%80%930.756]"&gt;0.607&lt;/a&gt;. Both intervals include 0.50, so ShowUp reported no reliable signal. I generated that data myself, so this says more about my generator than about TabPFN, and &lt;strong&gt;I am not claiming real-world accuracy.&lt;/strong&gt; I have not yet tested on a real business's data. The result I care about is the behavior: the app told me its predictions weren't trustworthy instead of sounding confident.&lt;/p&gt;

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

&lt;p&gt;A booking history is sensitive: names, phone numbers, treatments, habits. A cloud service means uploading it to someone else's server and paying per message. With open-weight models running locally, the owner keeps the data, pays nothing per reminder, and can swap the model in settings. I chose local TabPFN-2 over the newer hosted version on purpose, because the hosted API would break the offline guarantee.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Best Use of TabPFN:&lt;/strong&gt; TabPFN-2 runs locally on CPU inside the model-selection pipeline, benchmarked against logistic regression with bootstrap confidence intervals. On my synthetic data it did not beat the baseline, and I report that.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>TouchGrass Buddy: a local AI that gives me one small reason to go outside</title>
      <dc:creator>Vinit Shinde</dc:creator>
      <pubDate>Sun, 11 Oct 2026 13:20:35 +0000</pubDate>
      <link>https://dev.to/vinit_shinde_99/touchgrass-buddy-a-local-ai-that-gives-me-one-small-reason-to-go-outside-6li</link>
      <guid>https://dev.to/vinit_shinde_99/touchgrass-buddy-a-local-ai-that-gives-me-one-small-reason-to-go-outside-6li</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;
  
  
  🎬 The Story Behind It
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/3ettzXwi7Hs" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

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

&lt;p&gt;Most people spend their days staring at a screen, and “go outside more” rarely sticks. TouchGrass Buddy gives people a reason to step out. They share their time and mood, and the app checks the weather and finds a green spot nearby. Then it gives them one small mission to finish and asks for a photo to show they did it.&lt;/p&gt;

&lt;p&gt;TouchGrass Buddy is a web app that gives you one short outdoor mission. You pick a spot on a map, set your time, energy, mood, group and terrain needs, and choose interests such as birdwatching, photography, walking or sketching (or write your own). The app checks the weather, finds green spaces near your pin, and turns that into a few concrete steps, a small scavenger hunt and a photo challenge. Afterwards you upload a photo, and completed missions go into a journal with XP, a streak and badges.&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%2Fofgnc54f746e048h3niu.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%2Fofgnc54f746e048h3niu.png" alt="TouchGrass Buddy home page with a short introduction, a Plan a Mission button and a three-step guide" width="800" height="414"&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%2F9vy84vh39reylmwyv9sz.jpg" 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%2F9vy84vh39reylmwyv9sz.jpg" alt="AI-generated illustration of a hand holding a phone with a nature app on a sunny park path" width="800" height="447"&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/vinit-tech-source" rel="noopener noreferrer"&gt;
        vinit-tech-source
      &lt;/a&gt; / &lt;a href="https://github.com/vinit-tech-source/touchgrass-buddy" rel="noopener noreferrer"&gt;
        touchgrass-buddy
      &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;🌿 TouchGrass Buddy 3.0&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;The Local-First Outdoor Companion &amp;amp; Gamified Field Journal&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;&lt;em&gt;Reduce screen time, reconnect with nature, and explore the real world through AI-powered physical missions.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://python.org" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b9a76f48d4b74786c04188871918b504be0cc83d37bd73481a6f4756055855c0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f507974686f6e2d332e31302532422d3337373641423f7374796c653d666f722d7468652d6261646765266c6f676f3d707974686f6e266c6f676f436f6c6f723d7768697465" alt="Python"&gt;&lt;/a&gt;
&lt;a href="https://fastapi.tiangolo.com" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/f8c092c5f69139f1f77ebcd3cac4bccf291717b24337804ff83713975a904f31/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f466173744150492d302e3131302532422d3030393638383f7374796c653d666f722d7468652d6261646765266c6f676f3d66617374617069266c6f676f436f6c6f723d7768697465" alt="FastAPI"&gt;&lt;/a&gt;
&lt;a href="https://ollama.com" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/bff30f1ba4e8826e921799ae77c475925669a3c2da368bbea1e76c52896013f1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4f6c6c616d612d4c6f63616c2532304c4c4d2d626c61636b3f7374796c653d666f722d7468652d6261646765266c6f676f3d6f6c6c616d61266c6f676f436f6c6f723d7768697465" alt="Ollama"&gt;&lt;/a&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/18065e9660e92755e932de2a818d8857a22b3db8cf4e2da70cfbda9841ec7c7c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5057412d496e7374616c6c61626c652d3541304643383f7374796c653d666f722d7468652d6261646765266c6f676f3d707761266c6f676f436f6c6f723d7768697465" alt="PWA Ready"&gt;&lt;/a&gt;
&lt;a href="https://github.com/vinit-tech-source/touchgrass-buddy/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/7a1226d14a365d288bfe51ece915ee0c7e754a16faa51ff06436504de29b33b4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e7376673f7374796c653d666f722d7468652d6261646765" alt="License: MIT"&gt;&lt;/a&gt;
&lt;a href="https://github.com/vinit-tech-source/touchgrass-buddy" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/cecb938539dbbcbed0ca510eb99699f616f4a76d1a787c4978232b1e1e84087c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f253234302e30302d5a65726f253230415049253230436f7374732d3232433535453f7374796c653d666f722d7468652d6261646765" alt="Zero Cloud Costs"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;📖 Overview&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;TouchGrass Buddy&lt;/strong&gt; is a privacy-first Single-Page Application (SPA) designed to solve modern screen fatigue. Instead of just telling you to take a break, it generates &lt;strong&gt;context-aware outdoor micro-adventures&lt;/strong&gt; tailored to your exact neighborhood, current live weather, energy level, and personal interests.&lt;/p&gt;
&lt;p&gt;Every aspect of the application runs &lt;strong&gt;100% locally on your computer&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Zero Cloud AI API Billing:&lt;/strong&gt; Driven entirely by local open-weight models via &lt;strong&gt;Ollama&lt;/strong&gt; (&lt;code&gt;llama3.2:3b&lt;/code&gt; for mission generation and &lt;code&gt;moondream&lt;/code&gt; for photo verification).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Total Privacy:&lt;/strong&gt; Your GPS coordinates, health energy levels, personal journal logs, and camera photos never leave your device.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modern Outdoor Field Journal UI:&lt;/strong&gt; An organic, forest-night design aesthetic (AllTrails meets Duolingo) built with high-performance Vanilla JavaScript, CSS custom properties, and Leaflet maps.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Key Features&lt;/h2&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/vinit-tech-source/touchgrass-buddy" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


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

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/JQkxmUQsOJ8" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;🌐 Published App: &lt;a href="https://rational-settled-theorem-description.trycloudflare.com" rel="noopener noreferrer"&gt;https://rational-settled-theorem-description.trycloudflare.com&lt;/a&gt;&lt;br&gt;
OR&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://touchgrass-buddy.onrender.com" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;touchgrass-buddy.onrender.com&lt;/span&gt;
          

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


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

&lt;p&gt;The main design decision was to keep facts and writing separate. The code fetches the facts (live weather, sun times, and real places from OpenStreetMap and Wikipedia), and the model only turns them into a mission. It is told not to invent places.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mission writing:&lt;/strong&gt; Llama 3.2 (3B) running locally through Ollama. The backend asks for structured JSON, validates it, retries if the output is invalid, and falls back to a default mission if the model is unavailable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Photo check:&lt;/strong&gt; Moondream through Ollama compares the uploaded photo with the photo challenge and returns an AI check with a confidence score. It is a small model and can be wrong, so the app calls it a check, not a guarantee.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; FastAPI (Python).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data:&lt;/strong&gt; Open-Meteo for weather, OpenStreetMap Overpass and Wikipedia for places and photos, and Leaflet for the interactive map.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; a single-page app in vanilla JavaScript, set up as a PWA. Progress and journal entries are stored in the browser's localStorage, on the user's own device.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tests:&lt;/strong&gt; 19 automated unit and integration tests, all passing when I last ran them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I used an AI coding agent (Antigravity) to help write the code, and I tested and edited the result myself.&lt;/p&gt;

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

&lt;p&gt;Open models let me keep the AI on my own machine. My notes and photos are not sent to an AI provider, it costs nothing per mission, and I can swap in another model whenever I want. A closed API would have made all three harder.&lt;/p&gt;

&lt;p&gt;To be accurate: only the AI runs locally. Weather, place data and map tiles still come from online services, so the app is not fully offline.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Tested and What Went Wrong
&lt;/h2&gt;

&lt;p&gt;I took my laptop and phone outside for a 25-minute test walk around my neighborhood and the nearby public park.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The mission it generated:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Walk towards the neighborhood park, pause near the tree line for 5 deep breaths, and find a leaf with serrated or unique edges to photograph.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Three real problems showed up outside that I never saw at my desk:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The location button was confusing.&lt;/strong&gt; At first it was only a crosshair icon next to the search box. Standing outside, I could not tell whether tapping it was fetching my GPS or had frozen. I replaced it with a labeled "Use My Location" button that shows its state: "Detecting GPS..." and then "Location found".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Place lookups were unreliable.&lt;/strong&gt; The public OpenStreetMap Overpass servers often timed out or returned nothing in dense or suburban areas, so someone standing on a street could get an empty list. I added fallback mirror servers and a Wikipedia GeoSearch lookup so the app can still suggest nearby landmarks when the main servers are slow.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The photo check was slow.&lt;/strong&gt; Sending a full-resolution camera photo to Moondream took almost 20 seconds on my laptop, and waiting on a spinner in the sun was frustrating. I added a fallback: if the vision model takes too long or is not running, the app accepts the photo and moves on. The cost is that the photo check can be skipped, so it is a nudge and not proof.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What I'd Improve Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A "Parks Only" mode:&lt;/strong&gt; a toggle that limits nearby spots to parks, nature reserves and trails, hiding cafes and urban places for people who want a quieter walk. It answers the mixed spots list I saw during testing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smaller photos for the vision model:&lt;/strong&gt; compress camera photos in the browser (for example to 512x512) before sending them to Moondream. The aim is to cut the wait well below the roughly 20 seconds I saw, but I have not measured the new time yet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Small model comparison:&lt;/strong&gt; test Llama 3.2 3B against other compact models such as Gemma 2 2B, Phi 3.5 Mini and Qwen 2.5 3B, looking at mission quality, speed and battery use on a laptop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audio walk mode:&lt;/strong&gt; a text-to-speech option that reads the steps aloud through earbuds, so the phone can stay in a pocket.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;Best Use of Render:&lt;/strong&gt; The web app (front end and FastAPI API) is deployed on Render. The hosted version cannot run Ollama, so it uses fallback missions. The Llama 3.2 and Moondream models run locally.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best Use of ElevenLabs:&lt;/strong&gt; The voiceover in the demo video was generated with ElevenLabs.&lt;/p&gt;

&lt;p&gt;The best version of this app is the one you close after two minutes. 🌿&lt;/p&gt;

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