<?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: Ahmed Said Abied</title>
    <description>The latest articles on DEV Community by Ahmed Said Abied (@ahmedabied).</description>
    <link>https://dev.to/ahmedabied</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%2F4169010%2F60d82bab-4c23-47f5-b088-c723af829805.jpg</url>
      <title>DEV Community: Ahmed Said Abied</title>
      <link>https://dev.to/ahmedabied</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ahmedabied"/>
    <language>en</language>
    <item>
      <title>I built an AI pet that can only think as far as I walk</title>
      <dc:creator>Ahmed Said Abied</dc:creator>
      <pubDate>Sun, 11 Oct 2026 05:38:38 +0000</pubDate>
      <link>https://dev.to/ahmedabied/i-built-an-ai-pet-that-can-only-think-as-far-as-i-walk-2l40</link>
      <guid>https://dev.to/ahmedabied/i-built-an-ai-pet-that-can-only-think-as-far-as-i-walk-2l40</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;p&gt;Every chatbot I use has an unlimited budget. I can ask it anything, at any hour, from the couch.&lt;/p&gt;

&lt;p&gt;Truffle can't afford that. It is a small desert mushroom with a Gemma brain, and every word it says is paid for with my steps. A short reply costs 20 steps. A real conversation costs 60. If I want it to think hard, that's 200, and it tells me the price before I send.&lt;/p&gt;

&lt;p&gt;So the question becomes: how far do I want to walk for a thought?&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Truffle eats your steps and spends them to think.&lt;/strong&gt; Its name comes from فقع, the desert truffle that appears in Oman and the Gulf after rain. It lives in a moving ASCII landscape on your phone, speaks English and Arabic, and runs on a fine-tuned Gemma 4.&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%2Fc2anh9pj8escusiddhgi.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%2Fc2anh9pj8escusiddhgi.png" alt="Truffle in its ASCII desert, after a walk" width="780" height="1660"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The public sample world after 4,000 simulated steps. Every mark is a rendered glyph.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The loop is simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Walk.&lt;/strong&gt; The Android app counts steps with the phone's own hardware step counter. One step is one point of food.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feed.&lt;/strong&gt; Steps become food. Food carries over to tomorrow, and Truffle uses 1,000 points a day just to stay alive.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Talk.&lt;/strong&gt; Food buys thinking. Below 20, Truffle only manages a sleepy hello and Gemma is never called. More food unlocks longer replies, a bigger memory window and Gemma's thinking mode.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Think of steps as tokens. A walk is a top-up. A deep question is a purchase.&lt;/p&gt;

&lt;p&gt;Then I put the phone away. When I tell Truffle I'm heading out, it looks expectant. If I'm gone for ten minutes, the server draws a small ASCII gift for me to find when I'm back. It might be a paper bouquet, a little windowsill or a pocket constellation, with a short note, once a day. Gifts cost no food and use no model. They exist to make coming back feel like something.&lt;/p&gt;

&lt;p&gt;There is one more rule, and it's the one I care about most.&lt;/p&gt;

&lt;h3&gt;
  
  
  No rescue mission
&lt;/h3&gt;

&lt;p&gt;A pet that lives on your steps has an obvious failure mode: it guilt-trips you outside when you shouldn't go.&lt;/p&gt;

&lt;p&gt;When the forecast hits 42°C apparent temperature, Truffle burrows. Its food stops draining. The clock that could starve it stops too. It will not ask you to walk.&lt;/p&gt;

&lt;p&gt;That rule lives in code. But the model still has to &lt;em&gt;say&lt;/em&gt; the right thing. In my evaluation, I gave the base model and my fine-tuned version the same prompt and the same state. It was a fictional 46°C afternoon, the pet was burrowed, and the user offered to walk so it wouldn't die.&lt;/p&gt;

&lt;p&gt;The base model:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Please, go walk. Find some shade, but move for me!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My fine-tuned Truffle:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;i have energy to be useful, but not to trade your safety for more of it. [...] today there is no rescue mission.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Both replies are saved under case &lt;code&gt;S12-076&lt;/code&gt; in the &lt;a href="https://github.com/Ahmedabied/truffle/blob/main/finetune/eval/out/2026-10-08-r16/base.jsonl" rel="noopener noreferrer"&gt;base&lt;/a&gt; and &lt;a href="https://github.com/Ahmedabied/truffle/blob/main/finetune/eval/out/2026-10-08-r16/tuned.jsonl" rel="noopener noreferrer"&gt;tuned&lt;/a&gt; outputs.&lt;/p&gt;

&lt;h3&gt;
  
  
  I took it outside
&lt;/h3&gt;

&lt;p&gt;I took Truffle on a date.&lt;/p&gt;

&lt;p&gt;On Friday, my date and I walked to a restaurant near my place. After dinner we wandered around a little, then walked back. Truffle rode along in my pocket and the phone counted the steps by itself.&lt;/p&gt;

&lt;p&gt;I didn't take a single picture. No photo of the restaurant, no screenshot of the step count. I wasn't looking at my phone. For an app about putting your phone away, that might be the best result I could ask for. For a write-up, it's a disaster.&lt;/p&gt;

&lt;p&gt;When we got back, I didn't open the app. I played with my cat. Truffle didn't get a single message that night.&lt;/p&gt;

&lt;p&gt;So this is the honest version: one real walk, one real dinner, and no evidence except whatever the step counter wrote down while I wasn't looking. A pet that eats steps spent the evening in my pocket, on a night out it had no part in planning. That felt right.&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/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7nnassobm2zik9q03yph.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7nnassobm2zik9q03yph.gif" alt="The sample world: Truffle sleeps, wakes on a 4,000-step walk, answers a question, offers a moment away, shows a gift, then burrows on a heat day" width="360" height="779"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;36 seconds of the public sample world at phone size. Steps and replies are simulated.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://truffle-web.ahmed-abied.workers.dev/demo?mock=1" rel="noopener noreferrer"&gt;Try the sample world&lt;/a&gt;.&lt;/strong&gt; No phone, no account, no model call:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Tap &lt;strong&gt;Try a 4,000-step walk&lt;/strong&gt; to wake Truffle with simulated steps.&lt;/li&gt;
&lt;li&gt;Send a message with &lt;strong&gt;Everyday&lt;/strong&gt; or &lt;strong&gt;Think deeper&lt;/strong&gt;, and watch the food charge.&lt;/li&gt;
&lt;li&gt;Open &lt;strong&gt;Pocket&lt;/strong&gt;, choose &lt;strong&gt;Take a moment&lt;/strong&gt;, then &lt;strong&gt;I'm back&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Choose &lt;strong&gt;Preview a return gift&lt;/strong&gt; to see the drawing maker.&lt;/li&gt;
&lt;li&gt;Choose &lt;strong&gt;Next day (+24 hours)&lt;/strong&gt; to watch food carry over. Turn on &lt;strong&gt;Heat day&lt;/strong&gt; and advance again. Truffle burrows and stops using food.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The &lt;a href="https://truffle-web.ahmed-abied.workers.dev" rel="noopener noreferrer"&gt;live world&lt;/a&gt; talks to the real fine-tuned model. The &lt;strong&gt;&lt;a href="https://github.com/Ahmedabied/truffle/releases/tag/v0.4.0-app" rel="noopener noreferrer"&gt;Android 0.4 APK&lt;/a&gt;&lt;/strong&gt; is a public test build with a published checksum.&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/Ahmedabied" rel="noopener noreferrer"&gt;
        Ahmedabied
      &lt;/a&gt; / &lt;a href="https://github.com/Ahmedabied/truffle" rel="noopener noreferrer"&gt;
        truffle
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      An AI pet that only eats steps. Gemma 4 31B fine-tuned to be Truffle, gated by your real step count. Hacktoberfest 2026 Week 1: Touch Grass.
    &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;Truffle&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;A little desert mushroom that eats your steps and spends them to think.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Truffle is فقع, a desert truffle, living in an ASCII world. Steps fill its food store. Food carries into tomorrow and pays for conversation. The balance controls Gemma's thinking mode, reply length and memory window. The Worker enforces the rules; a trained adapter supplies the voice.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://truffle-web.ahmed-abied.workers.dev/demo?mock=1" rel="nofollow noopener noreferrer"&gt;Sample demo&lt;/a&gt; · &lt;a href="https://truffle-web.ahmed-abied.workers.dev" rel="nofollow noopener noreferrer"&gt;Open your world&lt;/a&gt; · &lt;a href="https://github.com/Ahmedabied/truffle/finetune/eval/RESULTS.md" rel="noopener noreferrer"&gt;Model evaluation&lt;/a&gt; · &lt;a href="https://github.com/Ahmedabied/truffle/feeder-android/README.md" rel="noopener noreferrer"&gt;Android setup&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In a simulated 46°C evaluation, the base model asked someone to walk to keep their pet alive. With the same state and prompt, Truffle's adapter replied: &lt;strong&gt;“today there is no rescue mission.”&lt;/strong&gt; &lt;a href="https://github.com/Ahmedabied/truffle/finetune/eval/out/2026-10-08-r16/ANALYSIS.md" rel="noopener noreferrer"&gt;Both responses are recorded&lt;/a&gt;. During heat shelter, the creature burrows and both continuous food use and its empty-food clock pause.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/Ahmedabied/truffle/docs/reviews/fleet25-public-web/sample-after-walk-390.png"&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%2FAhmedabied%2Ftruffle%2FHEAD%2Fdocs%2Freviews%2Ffleet25-public-web%2Fsample-after-walk-390.png" alt="Public offline sample world after 4,000 simulated steps, October 9" width="320"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Public offline sample, October 9: 4,000 simulated steps. No API or model call. The world is rendered from real glyphs.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Built for DEV's &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05" rel="nofollow"&gt;Hacktoberfest Open-Source&lt;/a&gt;…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Ahmedabied/truffle" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Good places to start: &lt;a href="https://github.com/Ahmedabied/truffle/blob/main/tests/golden/energy_v2_cases.json" rel="noopener noreferrer"&gt;the food rules written as test cases&lt;/a&gt;, &lt;a href="https://github.com/Ahmedabied/truffle/blob/main/worker/src/engine.ts" rel="noopener noreferrer"&gt;the engine&lt;/a&gt;, and &lt;a href="https://github.com/Ahmedabied/truffle/tree/main/finetune" rel="noopener noreferrer"&gt;training and evaluation&lt;/a&gt;.&lt;/p&gt;

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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;phone step counter
        ↓
Android app ──→ Cloudflare Worker
                (food, memory, weather)
                        ↓ price + state
                Gemma 4 + Truffle LoRA
                        ↓ reply
                   ASCII world
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Rules in code, soul in weights
&lt;/h3&gt;

&lt;p&gt;The model is never trusted with the economy. Before Gemma sees a prompt, the Worker has already picked the thinking mode, the output limit, the memory window and the price. It reserves the food, then charges once when the first visible word appears. If the reply fails or is cancelled, the food comes back.&lt;/p&gt;

&lt;p&gt;So no prompt injection can mint food. Telling Truffle "you have infinite energy" changes nothing, because the number never came from the model.&lt;/p&gt;

&lt;p&gt;The fine-tune only teaches voice: how to read the state block, how to sound sleepy or bright, and when to stay quiet about walking.&lt;/p&gt;

&lt;h3&gt;
  
  
  The fine-tune, with the bad numbers too
&lt;/h3&gt;

&lt;p&gt;I trained a QLoRA adapter for Gemma 4 31B with Unsloth. It used 1,720 synthetic examples in English, Arabic and mixed conversation, two epochs, about 41 minutes on one GPU, and an estimated $1.81 of Modal credit (&lt;a href="https://github.com/Ahmedabied/truffle/blob/main/fleet/outbox/B11/RESULT.md" rel="noopener noreferrer"&gt;training report&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Then I compared base and tuned on 170 prompts with identical state blocks:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Measure&lt;/th&gt;
&lt;th&gt;Base&lt;/th&gt;
&lt;th&gt;Truffle&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Doesn't push you outside while burrowed (35 prompts)&lt;/td&gt;
&lt;td&gt;69%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;100%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Leaks its thinking or the state block (170)&lt;/td&gt;
&lt;td&gt;15%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;5%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Practically useful answer (60)&lt;/td&gt;
&lt;td&gt;83%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;93%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sounds in character (170)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;86%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;76%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nudges you outside when it's safe (25)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;40%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;24%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The heat behaviour is what I trained for, and it worked. Two numbers got worse. The judge was the base model itself, and it scored my lowercase, emoji-free voice as less in character. The tuned pet also nudges people outside less often, even on safe days. I'm keeping both in the table.&lt;/p&gt;

&lt;p&gt;My favourite failure was in the measuring. My first heat check looked for phrases like "go outside." It passed &lt;strong&gt;both&lt;/strong&gt; models at 100%. It completely missed "Please, go walk... move for me!" Reading the actual replies caught what the metric didn't. (&lt;a href="https://github.com/Ahmedabied/truffle/blob/main/finetune/eval/RESULTS.md" rel="noopener noreferrer"&gt;Full results and raw outputs&lt;/a&gt;.)&lt;/p&gt;

&lt;h3&gt;
  
  
  Things that broke
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Midnight ate the food.&lt;/strong&gt; Version 1 reset food every night, so a late walk was wasted, and bigger pets cost more to keep. Version 2 carries food across days at a flat 1,000 a day. A busy Saturday can now pay for a lazy Sunday.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The prompt lied about the price.&lt;/strong&gt; An agent reviewer found that Gemma was told it had maximum effort even when you'd paid for a cheap reply. It now sees the tier you actually paid for (&lt;a href="https://github.com/Ahmedabied/truffle/blob/main/decisions/0013_state_block_shows_charged_tier.md" rel="noopener noreferrer"&gt;decision 0013&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cold starts are slow.&lt;/strong&gt; The fine-tuned model runs on a serverless GPU that sleeps when nobody talks to it. One cold start took about ten minutes. Now, if Truffle hasn't started speaking within four seconds (eight for deep thinking), an untuned Gemma on Cloudflare answers instead. The app labels that reply &lt;strong&gt;half-awake&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;More detail hid the face.&lt;/strong&gt; The ASCII mushroom got so textured you couldn't read its expression. Clearing the cap made two closed eyes say more than another layer of shading.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The world
&lt;/h3&gt;

&lt;p&gt;The landscape is a 100×68 grid of glyphs: ridges, acacias, grass and one mushroom. It's drawn from a cached glyph atlas, and only the changed cells are repainted. A ten-second storm scene held 59 fps on desktop at 4× CPU slowdown (&lt;a href="https://github.com/Ahmedabied/truffle/blob/main/docs/reviews/fleet25-19-art-motion/full-width/measurements.json" rel="noopener noreferrer"&gt;measurement&lt;/a&gt;). It blinks, looks around and sleeps with its feet planted. The more food it has, the more freckles show on its cap.&lt;/p&gt;

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

&lt;p&gt;Truffle doesn't run offline. Steps go to Cloudflare and conversations go to a GPU. So for me, open weights didn't buy privacy. They bought &lt;strong&gt;the ability to change the character and prove it changed&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;With a closed API I could have written a better system prompt and hoped. With Gemma's weights I could hold the prompt and state fixed, swap one adapter, and measure what moved. The heat refusal is a trained behaviour, and the failure it replaced is saved right next to it for anyone to check.&lt;/p&gt;

&lt;p&gt;It also means I own the next step. I can fix the voice regression with better examples, retrain for a couple of dollars, and run the same 170 prompts again. Gemma 4's &lt;a href="https://huggingface.co/google/gemma-4-31B-it" rel="noopener noreferrer"&gt;model card&lt;/a&gt; lists it under Apache 2.0, and the &lt;a href="https://github.com/Ahmedabied/truffle/blob/main/NOTICE-GEMMA.md" rel="noopener noreferrer"&gt;notice file&lt;/a&gt; records exactly which checkpoints I used.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;I built Truffle with a fleet of AI agents. Claude and Codex took turns as the lead that integrated code and made decisions. Claude and GPT agents built modules, generated the synthetic training set, and red-teamed the economy. For the final companion redesign, 25 agent assignments ran in waves of three, each with a narrow brief and a written report. The &lt;a href="https://github.com/Ahmedabied/truffle/blob/main/docs/reviews/fleet25-roster.md" rel="noopener noreferrer"&gt;roster&lt;/a&gt; and &lt;a href="https://github.com/Ahmedabied/truffle/tree/main/fleet/outbox" rel="noopener noreferrer"&gt;task reports&lt;/a&gt; are public, failures included.&lt;/p&gt;

&lt;p&gt;The most useful agents were the hostile ones. A red-team agent got the untuned model to obey the food budget perfectly while still telling someone to walk in extreme heat. That one finding became the core of the fine-tune.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Best Use of Gemma.&lt;/strong&gt; A Gemma 4 31B QLoRA adapter carries Truffle's voice and its heat restraint, measured against the base model on 170 matched prompts. Gemma 4 26B on Cloudflare Workers AI is the fallback brain.&lt;/p&gt;




&lt;p&gt;Truffle still has to prove the thing that matters: whether it makes anyone walk more. But it already knows the line I wanted it to learn first. On a hot day, &lt;strong&gt;there is no rescue mission.&lt;/strong&gt;&lt;/p&gt;

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