<?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: Parichay Madnani</title>
    <description>The latest articles on DEV Community by Parichay Madnani (@parichay29).</description>
    <link>https://dev.to/parichay29</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%2F945500%2F88780d28-c134-435f-a70e-f8cb63584d93.png</url>
      <title>DEV Community: Parichay Madnani</title>
      <link>https://dev.to/parichay29</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/parichay29"/>
    <language>en</language>
    <item>
      <title>Touch Grass AI</title>
      <dc:creator>Parichay Madnani</dc:creator>
      <pubDate>Sun, 11 Oct 2026 10:59:27 +0000</pubDate>
      <link>https://dev.to/parichay29/touch-grass-ai-a91</link>
      <guid>https://dev.to/parichay29/touch-grass-ai-a91</guid>
      <description>&lt;h1&gt;
  
  
  🌱 Touch Grass AI: An Offline Garden Planner Powered by Open-Weight Models
&lt;/h1&gt;

&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;Touch Grass AI is an open-source garden planner that helps people spend less time researching gardening online and more time actually growing things.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It uses locally running, open-weight language models to provide planting recommendations, weekly gardening calendars, frost-date information, and answers to common gardening questions.&lt;/p&gt;

&lt;p&gt;Instead of depending on a cloud-based AI assistant, the application runs inference on your own machine. Once the model and required gardening data are downloaded, you can use the core planner without an internet connection.&lt;/p&gt;

&lt;p&gt;Whether you're starting a vegetable garden, planning seasonal crops, or trying to figure out what to plant this week, Touch Grass AI helps turn gardening questions into practical outdoor tasks.&lt;/p&gt;

&lt;h3&gt;
  
  
  🌿 Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🌱 &lt;strong&gt;Local frost-date calculations:&lt;/strong&gt; Use locally cached frost-date data to help plan around the growing season.&lt;/li&gt;
&lt;li&gt;🪴 &lt;strong&gt;Plant recommendations:&lt;/strong&gt; Find plants suited to your growing zone, season, and garden conditions.&lt;/li&gt;
&lt;li&gt;📅 &lt;strong&gt;Weekly planting calendar:&lt;/strong&gt; Plan what to sow, transplant, harvest, and avoid.&lt;/li&gt;
&lt;li&gt;🤖 &lt;strong&gt;Offline AI gardening assistant:&lt;/strong&gt; Ask questions about planting times, pests, companion planting, and more.&lt;/li&gt;
&lt;li&gt;🔒 &lt;strong&gt;Privacy-first design:&lt;/strong&gt; Enter your location manually without requiring GPS access.&lt;/li&gt;
&lt;li&gt;🧠 &lt;strong&gt;Model flexibility:&lt;/strong&gt; Experiment with compatible GGUF models, including Llama, Mistral, Phi, and Gemma.&lt;/li&gt;
&lt;li&gt;🌐 &lt;strong&gt;Offline operation:&lt;/strong&gt; Keep gardening information available when connectivity is unavailable, after the required assets have been downloaded.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The idea is simple: open the planner, get your gardening tasks, put your phone away, and get your hands dirty.&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/parichay29/touch-grass-ai" rel="noopener noreferrer"&gt;parichay29/touch-grass-ai&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is organized into modular Python components so developers can experiment with models, planting data, frost-date logic, and prompts independently.&lt;/p&gt;

&lt;p&gt;Contributions, feedback, and suggestions are welcome!&lt;/p&gt;

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

&lt;p&gt;The core design principle is that the AI should run locally rather than act as a thin wrapper around a proprietary cloud API.&lt;/p&gt;

&lt;h3&gt;
  
  
  Technology Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python:&lt;/strong&gt; Application logic and command-line interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;llama.cpp:&lt;/strong&gt; Local inference for compatible GGUF model files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open-weight language models:&lt;/strong&gt; Phi, Llama, Mistral, and Gemma variants for gardening assistance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local plant database:&lt;/strong&gt; Planting schedules, companion relationships, and common pest information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cached frost-date data:&lt;/strong&gt; Locally available seasonal information for planning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom prompts:&lt;/strong&gt; Instructions that guide the model toward practical, gardening-focused answers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Architecture
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;touch-grass-ai/
├── garden_planner.py       # Main CLI application
├── download_model.py       # Model downloader
├── frost_dates.py          # Offline frost-date calculator
├── plant_database.py       # Plant data and gardening knowledge
├── llm_engine.py           # Local inference with llama.cpp
├── prompts.py              # System prompts for garden advice
├── cache/                  # Cached data and model weights
└── requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each component has a distinct responsibility:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;garden_planner.py&lt;/code&gt; coordinates the application and user interaction.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;download_model.py&lt;/code&gt; downloads the selected model during setup.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;frost_dates.py&lt;/code&gt; handles frost-date information and seasonal calculations.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;plant_database.py&lt;/code&gt; provides structured gardening knowledge.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;llm_engine.py&lt;/code&gt; runs local model inference through llama.cpp.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;prompts.py&lt;/code&gt; defines the assistant's gardening behavior.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The separation between structured data and language-model inference is deliberate. Planting dates and frost calculations should come from the application's data and logic wherever possible, while the model makes the information easier to understand and helps answer natural-language questions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Quick Start
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Install dependencies&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Download a model&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python download_model.py &lt;span class="nt"&gt;--model&lt;/span&gt; phi-3-mini-4k-instruct-q4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is a one-time setup step that downloads the model weights.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Run the garden planner&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python garden_planner.py &lt;span class="nt"&gt;--zip&lt;/span&gt; 90210
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The initial setup requires downloading the model and any external data the application needs. Once those assets are available locally, the planner can operate offline to the extent supported by its implementation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example Usage
&lt;/h2&gt;

&lt;p&gt;Imagine opening the planner before heading out to your garden.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ python garden_planner.py --zip 97202

🌱 Touch Grass AI - Garden Planner
Growing zone: 8b
Last frost: March 15
First frost: November 15

📅 THIS WEEK
  ✅ Plant: Garlic, suitable cover crops
  ✅ Transplant: Kale, spinach where conditions permit
  ✅ Harvest: Seasonal crops that are ready
  🛑 Review: Frost-sensitive plants and upcoming cold weather

💬 Ask me anything:
"What cover crop fixes nitrogen best?"

&amp;gt; Crimson clover can fix atmospheric nitrogen.
&amp;gt; Consider your local planting window and soil conditions
  when selecting a cover crop.

💬 Ask me:
"Companions for garlic?"

&amp;gt; Explore companion options such as carrots, beets,
  and spinach, and check the local plant database
  for compatibility and growing recommendations.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The local AI assistant helps explain gardening options, compare approaches, and suggest practical next steps using the available gardening information.&lt;/p&gt;

&lt;p&gt;Exact recommendations depend on the local dataset, growing conditions, and selected model. Gardening advice should always be checked against local conditions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Models Tested
&lt;/h2&gt;

&lt;p&gt;The following are candidate model configurations and indicative performance figures. Actual performance depends on hardware, inference settings, quantization, and model versions.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Approx. model size&lt;/th&gt;
&lt;th&gt;Intended use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Phi-3 Mini 4K Instruct Q4&lt;/td&gt;
&lt;td&gt;2.3 GB&lt;/td&gt;
&lt;td&gt;Compact local assistant&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Llama 3.2 3B Instruct Q4&lt;/td&gt;
&lt;td&gt;2.0 GB&lt;/td&gt;
&lt;td&gt;General gardening questions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mistral 7B Instruct v0.3 Q4&lt;/td&gt;
&lt;td&gt;4.1 GB&lt;/td&gt;
&lt;td&gt;More demanding responses&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemma 2 2B Instruct Q4&lt;/td&gt;
&lt;td&gt;1.6 GB&lt;/td&gt;
&lt;td&gt;Lightweight inference&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;CPU tokens-per-second figures should be included only after benchmarking each model on documented hardware. Model compatibility and licenses should also be checked before distributing model weights.&lt;/p&gt;

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

&lt;p&gt;This is the most important part of the project for me.&lt;/p&gt;

&lt;p&gt;Gardening is inherently local. Planting calendars, growing conditions, and seasonal decisions are personal to your garden. I wanted to explore what happens when an AI application can operate without requiring that information to be sent to a cloud service.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔒 1. Your garden data stays on your device
&lt;/h3&gt;

&lt;p&gt;A local-first architecture means the core gardening workflow doesn't need a third-party AI API. Location inputs, preferences, and gardening questions can remain on the machine.&lt;/p&gt;

&lt;h3&gt;
  
  
  📴 2. Offline access is a real feature
&lt;/h3&gt;

&lt;p&gt;Gardens, allotments, and hiking areas don't always have reliable connectivity. Downloading the model and required data ahead of time makes the planner useful in those situations.&lt;/p&gt;

&lt;h3&gt;
  
  
  🧠 3. Models are replaceable
&lt;/h3&gt;

&lt;p&gt;I'm not locked into one model provider. Compatible GGUF models can be evaluated and swapped based on response quality, hardware requirements, speed, and memory usage.&lt;/p&gt;

&lt;p&gt;This also makes it possible for contributors to experiment with different model families and share improvements.&lt;/p&gt;

&lt;h3&gt;
  
  
  💸 4. No per-request API charges
&lt;/h3&gt;

&lt;p&gt;Local inference avoids usage-based charges from hosted model APIs. The trade-off is that users need compatible hardware, storage, and power to run inference themselves.&lt;/p&gt;

&lt;h3&gt;
  
  
  🛠️ 5. The application is open to modification
&lt;/h3&gt;

&lt;p&gt;The prompts, Python logic, plant database, and model configuration can be inspected and adapted. Contributors can add regional plant knowledge, improve planting recommendations, or change the assistant's behavior without depending entirely on a proprietary service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open innovation makes this project more than a gardening chatbot. It makes it a customizable, locally controlled tool that can remain useful without a permanent connection to a cloud provider.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;I'd like to explore better regional planting datasets, improved seasonal recommendations, more reliable companion-planting information, and a simpler interface for gardeners who don't want to use a command line.&lt;/p&gt;

&lt;p&gt;The larger goal is to make local AI useful in everyday life, beyond productivity apps and chat interfaces.&lt;/p&gt;

&lt;p&gt;Instead of using AI to spend another hour on a screen, use it to decide what to plant, step outside, and grow something.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Less scrolling. More growing. 🌱&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Hacktoberfest #OpenSourceAI #LocalAI #Python #TouchGrass
&lt;/h1&gt;

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