<?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: Nitin Gangwal</title>
    <description>The latest articles on DEV Community by Nitin Gangwal (@gangwal_746a3e68edc).</description>
    <link>https://dev.to/gangwal_746a3e68edc</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%2F4155746%2F9dc02934-ac44-4967-acff-5ad76aedc79b.png</url>
      <title>DEV Community: Nitin Gangwal</title>
      <link>https://dev.to/gangwal_746a3e68edc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gangwal_746a3e68edc"/>
    <language>en</language>
    <item>
      <title>LazyRack: A Clothes Shop That Fetches Itself (Gemma, Running Locally)</title>
      <dc:creator>Nitin Gangwal</dc:creator>
      <pubDate>Sat, 24 Oct 2026 10:20:42 +0000</pubDate>
      <link>https://dev.to/gangwal_746a3e68edc/lazyrack-a-clothes-shop-that-fetches-itself-gemma-running-locally-2oaf</link>
      <guid>https://dev.to/gangwal_746a3e68edc/lazyrack-a-clothes-shop-that-fetches-itself-gemma-running-locally-2oaf</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;Think about the last time you went clothes shopping.&lt;/p&gt;

&lt;p&gt;You ask for a kurta in blue and the shopkeeper pulls down six. You want to see the other colour, so he pulls down four more. You try a few on, then ask for a size that turns out to be out of stock. Forty-five minutes later you leave with nothing, and he is standing in a pile of unfolded clothes.&lt;/p&gt;

&lt;p&gt;Nobody did anything wrong. It is just a lot of manual work for everybody.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LazyRack&lt;/strong&gt; takes most of that work away. The shopkeeper sticks a QR code on the counter. The customer scans it with their phone, sees only what is actually in stock, picks a size and colour, and taps &lt;strong&gt;Order&lt;/strong&gt;. A screen in the godown (the storeroom) shows the new order, the assistant brings exactly that piece, and the customer can try it on right there.&lt;/p&gt;

&lt;p&gt;The shopkeeper never unfolds a shirt that nobody wanted. The customer never asks for a size that doesn't exist. Both of them get to be a little lazier.&lt;/p&gt;

&lt;p&gt;And the laziest part is the setup: &lt;strong&gt;the shopkeeper never types a catalogue.&lt;/strong&gt; He photographs a garment and Gemma fills in the name, category and colour. He only adds the price and how many pieces he has in each size.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://1drv.ms/v/c/136E95ECD6A003BB/IQC4cVNEnD-mRZWDqeOI_C-YAb8-WcLxg-VDFlnS-9v4glk?e=Hin8ZI" rel="noopener noreferrer"&gt;https://1drv.ms/v/c/136E95ECD6A003BB/IQC4cVNEnD-mRZWDqeOI_C-YAb8-WcLxg-VDFlnS-9v4glk?e=Hin8ZI&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The shopkeeper uploads a photo, Gemma fills in the details&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%2F7h4jgpnks020tux1a8sy.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%2F7h4jgpnks020tux1a8sy.png" alt=" " width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. The customer scans the QR and sees only what is in stock&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%2Fo59imadn0ybfdn9ntmcd.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%2Fo59imadn0ybfdn9ntmcd.png" alt=" " width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. The godown sees the order the moment it is placed&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%2Fepfyi8gy3t4mev8x664a.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%2Fepfyi8gy3t4mev8x664a.png" alt=" " width="800" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Gemma running locally through Ollama&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%2F9nkrn1no61azmkdyb8lk.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%2F9nkrn1no61azmkdyb8lk.png" alt=" " width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;{ &lt;a href="https://github.com/NitinGangwal/LazyRack" rel="noopener noreferrer"&gt;https://github.com/NitinGangwal/LazyRack&lt;/a&gt; }&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 3 (4B)&lt;/strong&gt;, an open-weight model, served locally through &lt;strong&gt;Ollama&lt;/strong&gt; on my own laptop (16 GB RAM, nothing else needed).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streamlit&lt;/strong&gt; for the three screens: shopkeeper, customer and godown.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SQLite&lt;/strong&gt; for the catalogue and orders, in a single file.&lt;/li&gt;
&lt;li&gt;A QR code generated by the app that points to the shop's local address. The phone and the laptop only need to be on the same WiFi.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Gemma does two jobs. First, it reads a garment photo and returns the name, category (Men / Women / Kids) and colour as JSON:&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="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ollama&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;VISION_MODEL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="c1"&gt;# gemma3:4b by default
&lt;/span&gt;    &lt;span class="n"&gt;messages&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;role&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;user&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;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;DESCRIBE_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="nf"&gt;_shrink&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;format&lt;/span&gt;&lt;span class="o"&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="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Second, it powers the customer's search. A customer can type something like &lt;em&gt;"shaadi ke liye blue kurta"&lt;/em&gt;, and Gemma reads the catalogue and returns the best matches. Hindi in Roman script works too. If the model is unavailable, the app falls back to a simple keyword search, so the shop never gets stuck.&lt;/p&gt;

&lt;p&gt;Stock is reduced the moment an order is placed, so the last piece of a size can never be ordered twice.&lt;/p&gt;

&lt;p&gt;I am a third-year student and still learning Python, and I built this with an AI coding assistant helping me write the code. I ran, tested and debugged everything myself on my own laptop.&lt;/p&gt;

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

&lt;p&gt;A small shop is exactly where a closed API is a bad fit.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The shop's data stays in the shop.&lt;/strong&gt; Product photos, prices and stock live in a file on the shopkeeper's own laptop. Nothing is sent to someone else's server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It costs nothing to run.&lt;/strong&gt; There is no per-photo or per-search fee. A shopkeeper who adds 200 items pays the same as one who adds 2: nothing. With a paid vision API, the shop with the biggest catalogue would pay the most.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The AI doesn't need the internet.&lt;/strong&gt; The model and the app run on the shop's own WiFi, so a dropped connection doesn't stop the shop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I can swap the model with one line.&lt;/strong&gt; If a shop has a stronger laptop, setting &lt;code&gt;VISION_MODEL=gemma3:12b&lt;/code&gt; gives better results without changing any code. With a closed API, that choice isn't mine to make.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;I haven't put this in a real shop yet, so I am not going to invent a "saves X hours a week" number. Here is what I actually measured:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I added &lt;strong&gt;more than 20 clothes&lt;/strong&gt; across Men, Women and Kids, using photos of clothes at my home and professional product photos from the internet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma got every category, name and colour right&lt;/strong&gt;, on both the messy home photos and the clean product photos.&lt;/li&gt;
&lt;li&gt;The first photo took about &lt;strong&gt;40 seconds&lt;/strong&gt; because the model had to load into memory. Every photo after that took about &lt;strong&gt;15 to 20 seconds&lt;/strong&gt;. The shopkeeper can keep working while it runs, so cataloguing one item means taking a photo, then adding the price and stock.&lt;/li&gt;
&lt;li&gt;The full flow worked end to end: scan the QR, pick a size, place the order, and the godown sees it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One honest limitation: once, when I searched for "shirt under 500", a shirt priced at 600 also showed up. On the next attempt it was correct, and it stayed correct for the rest of my testing. The reason is that the model reasons over the catalogue in a prompt, it doesn't run a strict price filter. My next step is to read the price limit in plain code and use Gemma only for the fuzzy part (style, occasion, colour).&lt;/p&gt;

&lt;p&gt;The same idea fits shoe stores, malls and even restaurants, anywhere people browse a physical catalogue and someone fetches things for them.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Best Use of Gemma&lt;/strong&gt;: Gemma 3 (4B) runs locally through Ollama and does the photo cataloguing and the customer search. Swapping in a larger Gemma is a one-line change.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>gemma</category>
      <category>python</category>
    </item>
    <item>
      <title>KaamClear AI: Turning Messy Client Briefs into Clear Projects with Local Gemma AI</title>
      <dc:creator>Nitin Gangwal</dc:creator>
      <pubDate>Wed, 14 Oct 2026 17:39:30 +0000</pubDate>
      <link>https://dev.to/gangwal_746a3e68edc/kaamclear-ai-turning-messy-client-briefs-into-clear-projects-with-local-gemma-ai-273a</link>
      <guid>https://dev.to/gangwal_746a3e68edc/kaamclear-ai-turning-messy-client-briefs-into-clear-projects-with-local-gemma-ai-273a</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;Freelancers often receive client messages that sound simple at first but hide a lot of unanswered questions.&lt;/p&gt;

&lt;p&gt;A client might say, "I need an e-commerce website in two weeks." But what does that include? How many products will be listed? Which payment gateway is required? What should the admin panel manage? Is the proposed budget realistic?&lt;/p&gt;

&lt;p&gt;Missing these details can lead to misunderstandings, underquoting, and scope creep.&lt;/p&gt;

&lt;p&gt;That's why I built &lt;strong&gt;Kaam Clear AI&lt;/strong&gt;, a local-first AI assistant that turns confusing client messages into structured project briefs.&lt;/p&gt;

&lt;p&gt;With KaamClear AI, a freelancer can paste a client's message and get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A clear project summary&lt;/li&gt;
&lt;li&gt;Requirements mentioned by the client&lt;/li&gt;
&lt;li&gt;Important questions to ask before starting&lt;/li&gt;
&lt;li&gt;Suggested deliverables&lt;/li&gt;
&lt;li&gt;Project risks and assumptions&lt;/li&gt;
&lt;li&gt;Preliminary effort and price estimates&lt;/li&gt;
&lt;li&gt;Suggested milestones&lt;/li&gt;
&lt;li&gt;A professional draft reply to the client&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The application also lets users download the generated project brief.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who would use it?
&lt;/h3&gt;

&lt;p&gt;Independent freelancers, beginner developers, and small service businesses could use KaamClear AI to understand project requirements before agreeing to a scope, timeline, or price.&lt;/p&gt;

&lt;p&gt;It is designed to be a practical starting point for client conversations, not a replacement for professional judgement.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Video demo:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://1drv.ms/v/c/136E95ECD6A003BB/IQBgSXR2T6zwQqsOqpQVk4r7AUsDqXooHZjgwzSretI3sDU?e=f3gnm5" rel="noopener noreferrer"&gt;https://1drv.ms/v/c/136E95ECD6A003BB/IQBgSXR2T6zwQqsOqpQVk4r7AUsDqXooHZjgwzSretI3sDU?e=f3gnm5&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The demo shows a sample client request being analysed and converted into a structured project brief.&lt;/p&gt;

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

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

&lt;p&gt;The repository includes the application source code, dependencies, licence, and setup instructions.&lt;/p&gt;

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

&lt;p&gt;I built KaamClear AI using Python and Streamlit, with Ollama providing access to the locally running Gemma 3 4B model.&lt;/p&gt;

&lt;p&gt;The basic workflow is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The user enters a client's project request and an hourly rate.&lt;/li&gt;
&lt;li&gt;Streamlit sends the request to the local Ollama API.&lt;/li&gt;
&lt;li&gt;Gemma analyses the message and generates a structured response.&lt;/li&gt;
&lt;li&gt;The application displays the project brief and offers a download.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The main technologies are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python&lt;/strong&gt; for application logic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streamlit&lt;/strong&gt; for the user interface&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama&lt;/strong&gt; for local model inference&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 3 4B&lt;/strong&gt; as the open-weight language model&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I kept the first version focused on one useful workflow instead of trying to build a large freelancer management platform.&lt;/p&gt;

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

&lt;p&gt;Client conversations can contain confidential information about budgets, business plans, products, and upcoming projects.&lt;/p&gt;

&lt;p&gt;By running Gemma locally through Ollama, KaamClear AI can process client messages on the user's own computer instead of sending the prompt to a hosted AI inference API through this application's normal workflow.&lt;/p&gt;

&lt;p&gt;This offers several practical advantages:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;More control over data:&lt;/strong&gt; Client messages can remain on the local machine during inference, provided the user keeps the device and its software secure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lower recurring API costs:&lt;/strong&gt; The app does not require a paid hosted-model API for its normal inference workflow. Local hardware, electricity, and setup still have costs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;More flexibility:&lt;/strong&gt; Developers can experiment with other compatible models and modify the application without depending entirely on a single hosted AI provider.&lt;/p&gt;

&lt;p&gt;For me, open innovation makes it possible to build a useful AI tool that people can run and experiment with on their own computers.&lt;/p&gt;

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

&lt;p&gt;Building KaamClear AI helped me understand how a local language model can be integrated into a practical application using Python, Streamlit, and Ollama.&lt;/p&gt;

&lt;p&gt;It also showed me that generating a detailed answer is only one part of building a useful AI product. Estimates need to be checked, missing requirements need to be surfaced clearly, and the final decision must remain with the user.&lt;/p&gt;

&lt;p&gt;This is an early version, and I want to improve its pricing calculations, budget comparisons, and scope-reduction suggestions in future iterations.&lt;/p&gt;

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

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

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

&lt;p&gt;KaamClear AI started with a simple question: can a local AI model help freelancers turn vague client requests into clearer, more actionable projects?&lt;/p&gt;

&lt;p&gt;This first version is my attempt to answer that question.&lt;/p&gt;

&lt;p&gt;I would love to hear how you would improve it, especially if you work with freelance clients or build tools using open-weight AI.&lt;/p&gt;

&lt;h1&gt;
  
  
  devchallenge #hf26challenge
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
    </item>
    <item>
      <title>Touch Grass Quest: An AI Scavenger Hunt That Gets You Outside.</title>
      <dc:creator>Nitin Gangwal</dc:creator>
      <pubDate>Sun, 11 Oct 2026 07:38:42 +0000</pubDate>
      <link>https://dev.to/gangwal_746a3e68edc/touch-grass-quest-an-ai-scavenger-hunt-that-gets-you-outside-54fl</link>
      <guid>https://dev.to/gangwal_746a3e68edc/touch-grass-quest-an-ai-scavenger-hunt-that-gets-you-outside-54fl</guid>
      <description>&lt;p&gt;This is a submission for the Hacktoberfest Open-Source AI Challenge: Week-1&lt;/p&gt;

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

&lt;p&gt;Touch Grass Quest is an AI-powered outdoor scavenger hunt. You pick a place and a difficulty, and the app generates five photo quests. You then put the laptop down, go outside, and photograph what you find. An open-weight Gemma model checks each photo, tells you what it sees, adds a fun fact, and finally writes a short nature journal. The screen is only needed to start the hunt and to upload the photos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Taking It Outside
&lt;/h2&gt;

&lt;p&gt;I tested it in the garden in front of my house with my sister. We were out for around half an hour to forty minutes, and the laptop was only used when it was time to upload a photo. The rest of the time we just walked around and took pictures.&lt;/p&gt;

&lt;p&gt;My five quests were:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Find a fallen green leaf under a tree.&lt;/li&gt;
&lt;li&gt;Photograph something natural that is yellow or red.&lt;/li&gt;
&lt;li&gt;Photograph a tree.&lt;/li&gt;
&lt;li&gt;Capture sunlight coming down through the branches.&lt;/li&gt;
&lt;li&gt;Photograph the eye of an animal.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The yellow and red flowers were the easiest. The animal's eye was the hardest: I spotted a bird sitting on a branch and photographed it there. it was hard because the bird was far away or kept moving.&lt;/p&gt;

&lt;p&gt;The AI judged almost every photo correctly. My favourite moment was the fun fact for the fallen leaf photo. The leaves were lying on a stone, and the model said it looked like leaves resting on a bald man's head. I laughed, and my sister enjoyed the whole thing too. Honestly, the best part was not the app. It was the thirty minutes of walking around and looking closely at things we usually ignore.&lt;/p&gt;

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

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

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

&lt;p&gt;Besides the garden walk, I tested both AI engines on all three difficulty levels (Easy, Medium and Hard), with five quests each. That is about 30 photo checks in total. I did not notice any serious mistakes. This was an informal test and not a benchmark, so I cannot give an accuracy number. But this is far better than random tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Interface:&lt;/strong&gt; Streamlit&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI:&lt;/strong&gt; Gemma 4 through the Gemini API, or Gemma 3 (4B) running locally through Ollama. You can switch between them in the sidebar.&lt;/li&gt;
&lt;li&gt;The model returns structured JSON, both for the quests and for each photo check. The quest prompt tells the model to keep quests safe: no trespassing, no touching wild animals, no picking plants.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Privacy:&lt;/strong&gt; with the local engine, photos taken outdoors, including photos with family, stay on the laptop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost:&lt;/strong&gt; the local engine needs no API key and costs nothing to run.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexibility:&lt;/strong&gt; changing the model is a one-line change in the code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;My comparison:&lt;/strong&gt; because the open innovation helps to make a new thing that builds actually something great new and better then others.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;A phone-friendly version that works offline, quests tuned to the season and local plants, and a group mode for friends and run clubs.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/NitinGangwal/touchgrass-quest" rel="noopener noreferrer"&gt;https://github.com/NitinGangwal/touchgrass-quest&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>opensource</category>
      <category>python</category>
    </item>
    <item>
      <title>Smart Expense Tracker: A Private, Local AI Finance Assistant for My Friend.</title>
      <dc:creator>Nitin Gangwal</dc:creator>
      <pubDate>Sun, 04 Oct 2026 13:55:16 +0000</pubDate>
      <link>https://dev.to/gangwal_746a3e68edc/smart-expense-tracker-a-private-local-ai-finance-assistant-for-my-friend-44c7</link>
      <guid>https://dev.to/gangwal_746a3e68edc/smart-expense-tracker-a-private-local-ai-finance-assistant-for-my-friend-44c7</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;Smart Expense Tracker&lt;/strong&gt;, a finance assistant for my friend "Denim Sharma". Instead of filling in forms, you simply type something like "tea 20, bus 100, lunch 120". A local AI model works out the items, amounts and categories, then the app shows spending analytics and gives personalised saving tips.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who It's For
&lt;/h2&gt;

&lt;p&gt;Denim Sharma is my friend. they were Live at Home Alone. who spends on many small things during the month and rarely knows where the money went. I wanted something effortless to use that does not require handing financial data to a third party.&lt;/p&gt;

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

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

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Interface:&lt;/strong&gt; Streamlit, with custom styling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI:&lt;/strong&gt; Gemma 3 (4B), an open-weight model, running locally through Ollama&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage:&lt;/strong&gt; a simple CSV file on the user's own machine&lt;/li&gt;
&lt;li&gt;The model converts free text into structured JSON expenses, and later writes a summary with saving tips from the category totals.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Open Source AI Matters Here
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Privacy:&lt;/strong&gt; financial data never leaves the laptop. There is no server and no account.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero cost:&lt;/strong&gt; no API fees, which matters for a student.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Works offline:&lt;/strong&gt; it runs on an ordinary 16 GB laptop with no dedicated GPU.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexible:&lt;/strong&gt; switching to a different model takes a one-line change.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What My Friend Said
&lt;/h2&gt;

&lt;p&gt;Denim Sharma is my best friend. She lives away from home, and like most students she spends on many small things during the month but rarely knows where the money went. I wanted something effortless to use that does not require handing financial data to a third party.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;Budget limits and alerts, monthly reports, and voice-note input.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/NitinGangwal/Smart-finance-Expense-tracker" rel="noopener noreferrer"&gt;https://github.com/NitinGangwal/Smart-finance-Expense-tracker&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>hellooooo</title>
      <dc:creator>Nitin Gangwal</dc:creator>
      <pubDate>Sat, 03 Oct 2026 17:37:53 +0000</pubDate>
      <link>https://dev.to/gangwal_746a3e68edc/hellooooo-3lpf</link>
      <guid>https://dev.to/gangwal_746a3e68edc/hellooooo-3lpf</guid>
      <description></description>
    </item>
    <item>
      <title>Hiiiii....</title>
      <dc:creator>Nitin Gangwal</dc:creator>
      <pubDate>Thu, 01 Oct 2026 19:58:40 +0000</pubDate>
      <link>https://dev.to/gangwal_746a3e68edc/hiiiii-5a2c</link>
      <guid>https://dev.to/gangwal_746a3e68edc/hiiiii-5a2c</guid>
      <description></description>
    </item>
  </channel>
</rss>
