<?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: Mueni Mutie</title>
    <description>The latest articles on DEV Community by Mueni Mutie (@muen1).</description>
    <link>https://dev.to/muen1</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%2F4175077%2Fc8cf0192-bc43-4242-8d4a-7d6c5931d6e8.jpg</url>
      <title>DEV Community: Mueni Mutie</title>
      <link>https://dev.to/muen1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/muen1"/>
    <language>en</language>
    <item>
      <title>Ghost Farmer: An offline Ancestor Farmer powered by Gemma</title>
      <dc:creator>Mueni Mutie</dc:creator>
      <pubDate>Sat, 31 Oct 2026 21:20:58 +0000</pubDate>
      <link>https://dev.to/muen1/ghost-farmer-an-offline-ancestor-farmer-powered-by-gemma-1i3</link>
      <guid>https://dev.to/muen1/ghost-farmer-an-offline-ancestor-farmer-powered-by-gemma-1i3</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week4-2026-10-26"&gt;Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Ghost Farmer is an offline chatbot that channels the spirit of an ancestor farmer to answer questions about planting, soil, pests, and harvest. Growing up in Kenya, as a farmer's child, my grand father often gave us advice on how to take care of plants in order to ensure great yield so I chose to work on Agriculture because I saw how helpful it is.&lt;/p&gt;

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

&lt;p&gt;GitHub Link: &lt;a href="https://github.com/Muen1/ghost-farmer.git" rel="noopener noreferrer"&gt;https://github.com/Muen1/ghost-farmer.git&lt;/a&gt;&lt;br&gt;
Screenshots:&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%2F64cxgreal6pb9xft7xln.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%2F64cxgreal6pb9xft7xln.png" alt="Screenshot" width="800" height="450"&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%2Fakos8wtiaxtpanojl6je.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%2Fakos8wtiaxtpanojl6je.png" alt="Screenshot" width="800" height="450"&gt;&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&lt;/strong&gt; (&lt;code&gt;gemma3:1b&lt;/code&gt;, an open-weight model) running locally through &lt;strong&gt;Ollama&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python&lt;/strong&gt; with the &lt;code&gt;ollama&lt;/code&gt; library&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;stories.txt&lt;/code&gt; file the ghost reads at startup, so every family gets a different ghost&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;/save&lt;/code&gt; command that builds an "ofrenda" of advice worth keeping&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The whole thing is one Python file of about 60 lines. A system prompt tells the model to speak like a gentle ghost farmer, keep answers short, stay practical, and admit when it isn't sure. The family memories from &lt;code&gt;stories.txt&lt;/code&gt; are added to that prompt, and answers stream onto the screen word by word so it feels like the ghost is speaking.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What went wrong:&lt;/strong&gt; I got stuck before I wrote any code. I tried to install Ollama with a command meant for PowerShell while I was in Git Bash, so it failed. Then the installer hung, and my terminal said &lt;code&gt;ollama&lt;/code&gt; wasn't recognized. I switched to the regular Windows installer, opened a fresh terminal, and it worked. That taught me that local AI is not hard to run, but the setup can fight you if you are new to it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What surprised me:&lt;/strong&gt; the ghost started inventing his own backstory. When I asked about aphids, he told me about a "dreadful infestation" from his own farming days and called them "little green devils." I never wrote that anywhere. A tiny 1B-parameter model, running on my laptop with no internet, gave a made-up ghost a personality. It's not always accurate, which is why I told him in the prompt never to invent exact chemical doses, but for a ghost story it's the right kind of wrong.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It works with no internet.&lt;/strong&gt; Many farms have poor signal, and this runs entirely on a laptop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Family stories stay on your own machine.&lt;/strong&gt; Nothing in &lt;code&gt;stories.txt&lt;/code&gt; is sent to a server I don't control.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It's free to run&lt;/strong&gt;, and I can swap the model by changing one line (&lt;code&gt;MODEL = "gemma3:1b"&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It can't disappear if a service shuts down.&lt;/strong&gt; The model and the code are on my computer, and whoever has them can keep the ghost alive.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A closed, cloud-based chatbot would need internet and an account, and would send private family stories to someone else's servers. For a project about preserving memories, that felt wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Fits the Theme
&lt;/h2&gt;

&lt;p&gt;Día de los Muertos honors those who came before us, and marigolds, the flower of the ofrenda, are a crop. For many families, the people we remember include farmers whose knowledge was never written down. Ghost Farmer is a small way to keep that knowledge speaking. You write down what your grandparents taught you, and a ghost carries it into the next season.&lt;/p&gt;

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