<?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: Mushaf Ali Mir</title>
    <description>The latest articles on DEV Community by Mushaf Ali Mir (@mushaf_alimir_bda2490be4).</description>
    <link>https://dev.to/mushaf_alimir_bda2490be4</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%2F4174093%2Fd234898f-bb17-4985-9dbc-797c96632328.png</url>
      <title>DEV Community: Mushaf Ali Mir</title>
      <link>https://dev.to/mushaf_alimir_bda2490be4</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mushaf_alimir_bda2490be4"/>
    <language>en</language>
    <item>
      <title>Second Harvest: Which of Your Meal Leftovers Can Actually Grow? (Local Gemma 2 + Ollama)</title>
      <dc:creator>Mushaf Ali Mir</dc:creator>
      <pubDate>Mon, 12 Oct 2026 06:54:52 +0000</pubDate>
      <link>https://dev.to/mushaf_alimir_bda2490be4/second-harvest-your-next-garden-might-start-with-todays-meal-468p</link>
      <guid>https://dev.to/mushaf_alimir_bda2490be4/second-harvest-your-next-garden-might-start-with-todays-meal-468p</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;What if your next reason to go outside was sitting on your chopping board?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After a meal, most of us clear the counter without a second thought. Seeds, root ends and peels go straight into the bin. But some of those leftovers can start growing again: a spring onion base with its roots still attached, or seeds from a ripe tomato.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;Second Harvest&lt;/strong&gt; to help people notice that and try something with it. You describe what you ate and what you saved. A local AI model turns that into a list you can check. Then the app compares what you saved with the space, light and supplies you actually have, and tells you whether there is a reasonable experiment to try.&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%2F45zv3mchvy3zwb8gqio1.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%2F45zv3mchvy3zwb8gqio1.png" alt="Second Harvest home screen with the headline " width="799" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Your next garden might start with today's meal.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It is a small green initiative. The hope is simple: reuse suitable leftovers before throwing them away, add a little greenery to a balcony, terrace or garden, and give someone a reason to step outside. Those are intended benefits. I have not measured waste reduction, outdoor time or harvests.&lt;/p&gt;

&lt;p&gt;Not every scrap can grow. A banana peel will never become a banana plant, and the app should not suggest planting one. Telling useful material apart from unsuitable material is a big part of what makes reuse worthwhile.&lt;/p&gt;

&lt;h3&gt;
  
  
  How this connects to "Touch Grass"
&lt;/h3&gt;

&lt;p&gt;The theme asks for projects that make the screen the shortest part of the experience. Second Harvest is the planning step before the real activity. It helps you choose one manageable experiment and prepare for it. Then you can print the guide and put the laptop away.&lt;/p&gt;

&lt;p&gt;The part that matters happens outside the app: inspecting what you saved, gathering a container, choosing a spot, and looking after something. I have not yet run a growing trial and reported a harvest, so this post covers the app and the preparation, not growing results.&lt;/p&gt;

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

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

&lt;p&gt;Second Harvest runs on my laptop with &lt;strong&gt;Gemma 2 2B through Ollama&lt;/strong&gt;, on CPU. Here is the journey, in the order the app presents it.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Describe the meal and what you saved
&lt;/h3&gt;

&lt;p&gt;You write in your own words. There is no fixed list of vegetables to pick from. This was one of my test descriptions:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I made a salad. I saved fresh uncooked spring onion white bases with roots attached, and seeds from a ripe raw tomato. I also ate a banana, but only its peel remains. I also ate a mango and saved its seed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The details matter. "I ate a tomato" says nothing about whether you kept seeds, peel or nothing at all.&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%2Frjpfcs1prxozgtxa95l7.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%2Frjpfcs1prxozgtxa95l7.png" alt="Meal description entered in Second Harvest" width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Tell the app what remains, not just the name of the food.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Review the interpretation, then describe your setup
&lt;/h3&gt;

&lt;p&gt;Gemma turns the description into food entries: a food name, what remains, and the leftover's condition. You can edit a description, remove a wrong food, or add one the model missed. Nothing is used until you confirm.&lt;/p&gt;

&lt;p&gt;The review step matters because the model makes mistakes. In the screenshot below, it attached the tomato seeds to the spring onion row and left tomato as "Not specified". That is exactly the kind of error this screen exists to catch. &lt;em&gt;(Adjust if you retake: I left it uncorrected in this run, and you can see the effect in the tomato results later.)&lt;/em&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%2Fjrdiywq4v0c0jxc3uob9.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%2Fjrdiywq4v0c0jxc3uob9.png" alt="Editable food entries prepared by the local model" width="800" height="529"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;You know what is in your kitchen. The model's interpretation stays editable.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Before moving on, you describe your situation: growing space, direct sunlight per day, a goal (for example, an easy first experiment), and which supplies you have, namely a clean vessel with water and a potting mix with a draining container. You can also add a city or region. "Not sure" is an allowed answer, and the later results then ask you to check it.&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%2Fvf0oh1ujuckgxl9yknvy.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%2Fvf0oh1ujuckgxl9yknvy.png" alt="Growing space, sunlight, and available supplies" width="800" height="275"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Choose a growing path that fits the space and supplies you already have.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;These details move the question from "can this food grow?" to "is this a reasonable experiment for me, right now?"&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Learn what the foods give you
&lt;/h3&gt;

&lt;p&gt;Once you confirm, the app shows a benefit card for each food.&lt;/p&gt;

&lt;p&gt;A small reference collection covers selected foods, including tomato, spring onion, carrot and celery, with links to sources. Other foods get a general AI overview, labelled as one and marked as not checked against a food database.&lt;/p&gt;

&lt;p&gt;These cards describe the food you ate. They do not suggest that peels or seeds should be eaten or planted.&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%2Fqsyq45w86xjde8opuhpc.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%2Fqsyq45w86xjde8opuhpc.png" alt="Food benefit cards in Second Harvest" width="800" height="305"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A moment to learn about the meal before exploring what its leftovers could become.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. See what you could grow
&lt;/h3&gt;

&lt;p&gt;Next the app compares your confirmed leftovers with your setup and goal. Each result is one of three things: a possible candidate, an option that needs more information or supplies, or a leftover that is excluded.&lt;/p&gt;

&lt;p&gt;In the example below, spring onion appears with a "Check a few things first" label. The card lists checks for light, a suitable growing spot, and supplies, plus reference links and a button to create a guide. You can also see the review mistake from step 2 here, since the "You saved" line includes tomato seeds.&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%2F0oeqb08e2gnpmsddzxta.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%2F0oeqb08e2gnpmsddzxta.png" alt="Spring onion growing recommendation with checks before starting" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A possible next life for your leftovers, with practical checks before you start.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Some leftovers are ruled out before the model gets a say. Python checks in the app catch obvious cases such as cooked or spoiled material and peel-only scraps. Here, banana peel is excluded, so you can spend your effort on something you can actually try.&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%2Fua8o9li4ej3vk9np6zco.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%2Fua8o9li4ej3vk9np6zco.png" alt="Banana peel shown as not a planting option" width="800" height="193"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Not every leftover can grow. The banana peel is excluded because it cannot produce a new banana plant.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Turn an option into a growing guide
&lt;/h3&gt;

&lt;p&gt;When something looks worth trying, you click &lt;strong&gt;Create my growing guide&lt;/strong&gt;. Here is the tomato example.&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%2Fe7qolmyi46mx3ytb2e9z.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%2Fe7qolmyi46mx3ytb2e9z.png" alt="Tomato recommendation card with checks before starting" width="800" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The recommendation lists what needs confirming before starting a tomato experiment.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The guide gathers the materials, what you can do now, the checks before planting, what to expect, and reference links. Because the saved material and several setup details were unspecified here, the guide does not pretend to be a planting walkthrough. It asks you to inspect the leftovers and confirm the missing details first.&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%2Fw5rl16yev7ekqvlwmk6a.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%2Fw5rl16yev7ekqvlwmk6a.png" alt="Generated tomato growing guide asking the user to check and confirm first" width="800" height="887"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;When details are missing, the next step is to check and prepare before planting.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This guide took about 79 seconds on my CPU. That is one request, not an average and not the whole workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Take the guide away from the screen
&lt;/h3&gt;

&lt;p&gt;The guide has a &lt;strong&gt;Print / Save as PDF&lt;/strong&gt; button that uses your browser's print window. That gives you something to read while you gather supplies and choose a spot, without keeping the app open.&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%2Fnlv95cl9levdy3kxs4w8.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%2Fnlv95cl9levdy3kxs4w8.png" alt="Printable tomato growing guide" width="764" height="990"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Save your guide, gather what you need, and take the next step outside.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is the point where the app steps back. It helps you prepare. The planting and the caring happen in the real world.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;GitHub repository:&lt;/strong&gt; &lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/RED-Mushaf-Ali-Mir" rel="noopener noreferrer"&gt;
        RED-Mushaf-Ali-Mir
      &lt;/a&gt; / &lt;a href="https://github.com/RED-Mushaf-Ali-Mir/second-harvest" rel="noopener noreferrer"&gt;
        second-harvest
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      I built Second Harvest to help a beginner answer that question and choose a small gardening experiment that fits their space.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Second Harvest 🌱&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Your next garden might start with today's meal.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Second Harvest helps you explore what could grow from the food scraps you saved. Describe your meal and leftovers, review what the local AI understood, and compare growing options that fit your space.&lt;/p&gt;
&lt;p&gt;Built for the &lt;strong&gt;Hacktoberfest Open-Source AI Challenge — Week 1: Touch Grass&lt;/strong&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What it does&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Accepts a description of your meal and saved leftovers.&lt;/li&gt;
&lt;li&gt;Uses Gemma to identify foods and their remaining parts.&lt;/li&gt;
&lt;li&gt;Lets you edit descriptions, remove incorrect entries, and add missed foods.&lt;/li&gt;
&lt;li&gt;Shows food benefit cards after you confirm.&lt;/li&gt;
&lt;li&gt;Compares growing possibilities using your space, sunlight, supplies, and goal.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Food recognition is open-ended. A small reference catalogue provides additional facts for selected foods, but it does not limit which foods you can enter.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Example input&lt;/h2&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;I made a salad. I saved fresh uncooked spring onion white bases with roots attached, and seeds from…&lt;/p&gt;
&lt;/blockquote&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/RED-Mushaf-Ali-Mir/second-harvest" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Python and FastAPI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; HTML, CSS and JavaScript&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model:&lt;/strong&gt; &lt;code&gt;gemma2:2b&lt;/code&gt; through Ollama, running on CPU&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The code is organised simply:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;app.py&lt;/code&gt;: API routes, model requests and response validation&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;garden.py&lt;/code&gt;: data models, reference facts and growing checks&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;static/index.html&lt;/code&gt;: the page and styling&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;static/interpret.js&lt;/code&gt;: interpretation and the editable review&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;static/garden.js&lt;/code&gt;: benefit cards, growing results, the guide, and printing&lt;/li&gt;
&lt;/ul&gt;

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

&lt;h3&gt;
  
  
  The path through the app
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;The browser sends your meal description to the FastAPI server (&lt;code&gt;/api/interpret&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;FastAPI asks Gemma, through Ollama, for a structured JSON answer, and sends the expected structure with the request.&lt;/li&gt;
&lt;li&gt;Python parses the reply and validates it with Pydantic.&lt;/li&gt;
&lt;li&gt;You review and correct the entries, add your setup, and confirm.&lt;/li&gt;
&lt;li&gt;Confirmed entries drive the benefit cards and the growing comparison, which combine the model's assessment with the app's own checks.&lt;/li&gt;
&lt;li&gt;Choosing a candidate sends it, with your setup, to &lt;code&gt;/api/guide&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each model task is its own focused request: interpreting the meal, summarising benefits, comparing growing options, writing the guide. I found this works better than asking one small model for everything at once.&lt;/p&gt;

&lt;h3&gt;
  
  
  The first version only worked with four foods
&lt;/h3&gt;

&lt;p&gt;I started with a catalogue of four foods. When I added banana and mango, the app treated them as outside the catalogue. That was frustrating, because the whole idea was that someone describes an ordinary meal without guessing what I had prepared.&lt;/p&gt;

&lt;p&gt;So I opened it up to any food name. The reference collection still adds checked information where it exists, but it no longer limits what you can enter.&lt;/p&gt;

&lt;h3&gt;
  
  
  Valid JSON is not the same as a correct answer
&lt;/h3&gt;

&lt;p&gt;The interface needs separate pieces of information: the food, the part that remains, and its condition. Asking for JSON gives me those pieces cleanly instead of making me dig through a paragraph.&lt;/p&gt;

&lt;p&gt;An early check required supporting words to be copied exactly from the input. It kept failing with this message:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Evidence was not copied from the input."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It was a small error, but it stopped the whole flow. It also taught me something. Checking the format of an answer and checking whether it is right are different jobs. A reply can be perfectly readable by my code and still describe the wrong leftovers. The model sometimes missed foods or mixed up details between them, as the screenshots show.&lt;/p&gt;

&lt;h3&gt;
  
  
  Review became the main feature
&lt;/h3&gt;

&lt;p&gt;Since I could not trust every answer, I made review part of the core flow. You keep what is right, fix what is wrong and continue. The app's own checks add a second layer, for example for cooked, spoiled or peel-only leftovers. These catch specific mistakes. They do not make every suggestion reliable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Running on a laptop means waiting
&lt;/h3&gt;

&lt;p&gt;I started with &lt;code&gt;gemma3:1b&lt;/code&gt; and later moved to &lt;code&gt;gemma2:2b&lt;/code&gt;. That was a practical experiment, not a formal benchmark. The model requests run on my laptop's CPU, so answers take a while, as the video shows. I have tested one machine, so I won't claim an average response time or an accuracy score.&lt;/p&gt;

&lt;p&gt;For someone preparing a gardening activity, waiting a little seems acceptable. What matters is that the wait is visible and that the answer can be reviewed.&lt;/p&gt;

&lt;p&gt;I used ChatGPT/Codex assistance for implementation and debugging. Most of the progress came from running the app, spotting where the output did not match the input, and changing the experience around those problems.&lt;/p&gt;

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

&lt;p&gt;The biggest benefit for me was running the model on my own computer. Once the software and model are downloaded, the main workflow works without internet. The browser talks to the local FastAPI server, and the server talks to Ollama on the same machine. In this setup, meal descriptions are not sent to a hosted AI service, and the app does not need a database to process them.&lt;/p&gt;

&lt;p&gt;Downloading the software and model, and opening the reference links, still need internet.&lt;/p&gt;

&lt;p&gt;Open weights also let me change models and adjust how the app asks for answers without rebuilding the interface. That mattered when the first version struggled. There is no per-request inference bill, though the laptop still uses electricity. Gemma is an open-weight model released under its own licence terms.&lt;/p&gt;

&lt;p&gt;A hosted model could well be faster than my CPU. For a small project like this, though, being able to run, swap and experiment locally made a real difference.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Hope Comes Next
&lt;/h2&gt;

&lt;p&gt;I want to expand the reference collection and test far more food descriptions. The most valuable next step is to follow real growing experiments: what people tried, what grew, and where the advice needs improving.&lt;/p&gt;

&lt;p&gt;The app does not currently check live weather or local planting calendars, and it cannot guarantee germination or a harvest.&lt;/p&gt;

&lt;p&gt;Its intended impact is smaller: help someone recognise a useful leftover, try looking after a plant, and get into the habit of noticing what they throw away. If that means a few more plants on balconies and a little more time outside, that is the direction I want Second Harvest to grow.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Best Use of Gemma&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Second Harvest runs &lt;code&gt;gemma2:2b&lt;/code&gt; locally through Ollama for four jobs: interpreting meal descriptions into editable entries, writing general benefit summaries where reference facts are not available, comparing growing options against your confirmed leftovers and setup, and preparing the growing guide.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A little curiosity. A new beginning.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before you clear away the remains of your next meal, there might be something worth saving, and a reason to step outside.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>ai</category>
      <category>gemma</category>
    </item>
    <item>
      <title>hello</title>
      <dc:creator>Mushaf Ali Mir</dc:creator>
      <pubDate>Fri, 09 Oct 2026 19:10:16 +0000</pubDate>
      <link>https://dev.to/mushaf_alimir_bda2490be4/hello-33k</link>
      <guid>https://dev.to/mushaf_alimir_bda2490be4/hello-33k</guid>
      <description>&lt;p&gt;AI is the new electricity &lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
