<?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: S. M. Riad</title>
    <description>The latest articles on DEV Community by S. M. Riad (@smriad).</description>
    <link>https://dev.to/smriad</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%2F964003%2F41963e7d-8bdd-4f6b-ab18-ef79758688da.png</url>
      <title>DEV Community: S. M. Riad</title>
      <link>https://dev.to/smriad</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/smriad"/>
    <language>en</language>
    <item>
      <title>Stillbench: open Gemma + TabPFN for twelve minutes outside (Touch Grass)</title>
      <dc:creator>S. M. Riad</dc:creator>
      <pubDate>Sun, 11 Oct 2026 05:39:50 +0000</pubDate>
      <link>https://dev.to/smriad/stillbench-open-gemma-tabpfn-for-twelve-minutes-outside-touch-grass-8og</link>
      <guid>https://dev.to/smriad/stillbench-open-gemma-tabpfn-for-twelve-minutes-outside-touch-grass-8og</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;Stillbench&lt;/strong&gt; gets you off the couch with one job: sit outside at a real bench for &lt;strong&gt;twelve minutes&lt;/strong&gt; while your phone stays in your pocket.&lt;/p&gt;

&lt;p&gt;It is not a quest app, a streak game, or a garden planner. You tap &lt;strong&gt;Take me outside&lt;/strong&gt;, hear a ~40-word &lt;strong&gt;Gemma&lt;/strong&gt; brief once, walk to a bench &lt;strong&gt;TabPFN&lt;/strong&gt; thinks you will actually reach today, then the screen is only a timer until the chime.&lt;/p&gt;

&lt;p&gt;Optional &lt;strong&gt;This sit is for…&lt;/strong&gt; names who the sit is for. TabPFN shows a plain &lt;strong&gt;why this bench&lt;/strong&gt; line (light, last bail, leave probability). &lt;strong&gt;The street is too much&lt;/strong&gt; is a six-minute doorstep sit—the roof counts. &lt;strong&gt;Sit with someone&lt;/strong&gt; adds a line you can play for the person next to you. Check-in text shares a &lt;strong&gt;return time, not GPS&lt;/strong&gt;.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Live:&lt;/strong&gt; &lt;a href="https://stillbench.onrender.com" rel="noopener noreferrer"&gt;https://stillbench.onrender.com&lt;/a&gt; (Render free tier may sleep; first load after idle ~1 minute)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sixty seconds:&lt;/strong&gt; open the link on your phone → optional dedication → &lt;strong&gt;Take me outside&lt;/strong&gt; → listen once → &lt;strong&gt;I'm leaving&lt;/strong&gt; → &lt;strong&gt;I'm sitting&lt;/strong&gt; → pocket the phone. &lt;strong&gt;Practice sit, twenty seconds&lt;/strong&gt; is the same flow with a short timer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Integrations board:&lt;/strong&gt; &lt;a href="https://stillbench.onrender.com/integrations" rel="noopener noreferrer"&gt;https://stillbench.onrender.com/integrations&lt;/a&gt; — shows which partner APIs are on, set, or broken on production.&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/smriad" rel="noopener noreferrer"&gt;
        smriad
      &lt;/a&gt; / &lt;a href="https://github.com/smriad/stillbench" rel="noopener noreferrer"&gt;
        stillbench
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &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;Stillbench&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://stillbench.onrender.com" rel="nofollow noopener noreferrer"&gt;stillbench.onrender.com&lt;/a&gt; · &lt;strong&gt;Integrations:&lt;/strong&gt; &lt;a href="https://stillbench.onrender.com/integrations" rel="nofollow noopener noreferrer"&gt;/integrations&lt;/a&gt; · &lt;strong&gt;DEV submission (Week 1 — Touch Grass):&lt;/strong&gt; &lt;a href="https://dev.to/smriad/stillbench-open-gemma-tabpfn-for-twelve-minutes-outside-touch-grass-49l-temp-slug-2358043" rel="nofollow"&gt;draft on DEV&lt;/a&gt; · &lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/smriad/stillbench" rel="noopener noreferrer"&gt;github.com/smriad/stillbench&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Sit outside for &lt;strong&gt;twelve minutes&lt;/strong&gt;. Stillbench picks a nearby bench, speaks a short &lt;strong&gt;Gemma&lt;/strong&gt; brief once, then times your sit while the phone stays in your pocket. It is not a quest app, a streak game, or a garden planner—the screen is the short part; the sit is the product.&lt;/p&gt;
&lt;p&gt;Optional &lt;strong&gt;This sit is for…&lt;/strong&gt; names who the sit is for. TabPFN shows a plain &lt;strong&gt;why this bench&lt;/strong&gt; line (light, last bail, leave probability). &lt;strong&gt;Take me outside&lt;/strong&gt; is twelve minutes. &lt;strong&gt;The street is too much&lt;/strong&gt; is six minutes at the closest bench (the roof counts). &lt;strong&gt;Sit with someone&lt;/strong&gt; adds a line you can play for the person next to you. Check-in text shares a &lt;strong&gt;return time, not GPS&lt;/strong&gt;. Afterward: one noticing prompt, optional debrief for the next…&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/smriad/stillbench" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Start at &lt;code&gt;src/mastra/workflows/depart.ts&lt;/code&gt;, then &lt;code&gt;src/lib/forecast.ts&lt;/code&gt;, &lt;code&gt;src/lib/write-brief.ts&lt;/code&gt;, and &lt;code&gt;src/app/walk-app.tsx&lt;/code&gt;.&lt;/p&gt;

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

&lt;p&gt;Open-source AI is the spine:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Mastra&lt;/strong&gt; workflow &lt;code&gt;depart&lt;/code&gt; — read sky → &lt;strong&gt;TabPFN&lt;/strong&gt; scores benches → pick bench → &lt;strong&gt;Gemma&lt;/strong&gt; writes the brief → save walk → optional ElevenLabs voice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma&lt;/strong&gt; (&lt;code&gt;google/gemma-3-4b-it&lt;/code&gt;) via OpenRouter on Render, or &lt;strong&gt;Ollama&lt;/strong&gt; locally (&lt;code&gt;gemma3:4b&lt;/code&gt;). If inference fails, a built-in composer still gets you outside.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TabPFN&lt;/strong&gt; (Prior Labs) forecasts leave probability per bench from your walk history—hour, distance, light, &lt;strong&gt;whether you bailed last time&lt;/strong&gt;—and picks the farthest bench you are still likely to walk to.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tinker&lt;/strong&gt; (optional): half the briefs can come from a model tuned on sits that actually finished (&lt;code&gt;npm run train:briefs&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SerpApi&lt;/strong&gt; at build time adds real parks near &lt;code&gt;STILLBENCH_HOME&lt;/code&gt; to the bench pool (coordinates never sent per walk).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MongoDB Atlas&lt;/strong&gt; on Render stores walks and integration health; &lt;strong&gt;Tiger Data&lt;/strong&gt; logs sit events; &lt;strong&gt;Backboard&lt;/strong&gt; may echo one debrief line into the next brief.
&lt;/li&gt;
&lt;/ol&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
  tap[Take me outside] --&amp;gt; sky[read-sky]
  sky --&amp;gt; score[forecast-benches TabPFN]
  score --&amp;gt; pick[pick-bench]
  pick --&amp;gt; brief[write-brief Gemma]
  brief --&amp;gt; speak[ElevenLabs voice optional]
  speak --&amp;gt; timer[phone timer]
  timer --&amp;gt; note[one-line notice]
  note -.-&amp;gt; brief&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;&lt;strong&gt;Sentry:&lt;/strong&gt; Mastra runs through &lt;code&gt;@mastra/sentry&lt;/code&gt; with &lt;code&gt;SENTRY_DSN&lt;/code&gt; set. Agent steps, TabPFN, and ElevenLabs calls emit spans into the &lt;code&gt;javascript-nextjs&lt;/code&gt; project (for example &lt;code&gt;AI_APICallError&lt;/code&gt; when OpenRouter auth was misconfigured—fixed with &lt;code&gt;ollama-env.ts&lt;/code&gt; and a real &lt;code&gt;OLLAMA_API_KEY&lt;/code&gt; on Render).&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%2Fpjdmd0547kqea3gicvwt.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%2Fpjdmd0547kqea3gicvwt.png" alt="Sentry exporter on and Mastra on the integrations board" width="799" height="554"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Closed wellness apps could nag you to go outside. They would not let me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Swap the brief model&lt;/strong&gt; (Gemma on OpenRouter, Ollama locally, Tinker-tuned half the time).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Train on my own bails&lt;/strong&gt; so TabPFN learns when I actually leave.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep GPS off the server&lt;/strong&gt; while still personalizing distance and light.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run the departure agent&lt;/strong&gt; on an open harness (Mastra) I can read and change.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Open piece&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Gemma&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Spoken departure brief on open weights&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TabPFN&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Bench choice from tabular walk history&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mastra&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Five-step &lt;code&gt;depart&lt;/code&gt; workflow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tinker&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Briefs tuned on sits that finished&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MongoDB Atlas&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Walks off ephemeral Render disk&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;ElevenLabs is deliberately optional closed voice on top; the open stack still works without it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I used outside
&lt;/h2&gt;

&lt;p&gt;On production (&lt;strong&gt;stillbench.onrender.com&lt;/strong&gt;) I ran a &lt;strong&gt;full twelve-minute sit&lt;/strong&gt; (not practice): &lt;strong&gt;Take me outside&lt;/strong&gt;, dedication &lt;em&gt;Hacktoberfest Week 1&lt;/em&gt;, TabPFN to &lt;strong&gt;a shaded bench&lt;/strong&gt; in &lt;strong&gt;Banani Block C Park&lt;/strong&gt; (SerpApi park in the pool), pocketed the phone until the timer finished, then one debrief line.&lt;/p&gt;

&lt;p&gt;Bench and timer screenshots are from the &lt;strong&gt;same app&lt;/strong&gt; the same evening (TabPFN often offered &lt;strong&gt;the lakeside step&lt;/strong&gt; at Dhanmondi Lake when I captured UI). The &lt;strong&gt;debrief is from the Banani sit&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stillbench sit
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Where:&lt;/strong&gt; a shaded bench (Banani Block C Park, Banani Youngstars Club), about 7 minutes away&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sit:&lt;/strong&gt; twelve-minute sit (12 minutes on the timer)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;For:&lt;/strong&gt; Hacktoberfest Week 1&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why this bench:&lt;/strong&gt; Not much light left, so the walk stays short.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open stack:&lt;/strong&gt; brief from &lt;code&gt;google/gemma-3-4b-it&lt;/code&gt;, bench scored with tabpfn&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Location:&lt;/strong&gt; not tracked—check-in uses a time, not GPS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Noticed:&lt;/strong&gt; Generator hum from the club wall and someone washing a car two streets over.&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%2F53qb1g37vyk619u57j1v.jpg" 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%2F53qb1g37vyk619u57j1v.jpg" alt="Banani, Dhaka — near where I sat (CC BY 2.0, ASaber91 via Wikimedia Commons)" width="800" height="481"&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%2Fyzgdspfb9e7sb1prhrf4.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%2Fyzgdspfb9e7sb1prhrf4.png" alt="Your bench with a plain why-this-bench line (production UI)" width="799" height="554"&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%2Fgarhzojp16pkqzln95yg.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%2Fgarhzojp16pkqzln95yg.png" alt="Twelve-minute timer while the phone stays pocketed" width="799" height="554"&gt;&lt;/a&gt;&lt;/p&gt;

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


&lt;div class="ltag-agent-session"&gt;
  &lt;div class="agent-session-header"&gt;
    
    &lt;span class="agent-session-tool-icon-badge" title="Codex"&gt;
&lt;/span&gt;
    &lt;span class="agent-session-title"&gt;Stillbench — Touch Grass HF26 (Gemma, TabPFN, Render deploy)&lt;/span&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-scroll"&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Build Stillbench for Hacktoberfest Week 1 Touch Grass: open Gemma brief, TabPFN bench pick, twelve minutes outside, phone in pocket, no GPS.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Scoped meaning layer (dedication, why this bench, sit story), Mastra depart workflow, doorstep/together paths, and integrations page for judges.&lt;/p&gt;

                &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-edit"&gt;edit&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;src/mastra/workflows/depart.ts, write-brief.ts, walk-app.tsx&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;src/mastra/workflows/depart.ts, write-brief.ts, walk-app.tsx&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Threaded need, dedication, benchReason, formatSitStory on done screen.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Deploy to Render and write the DEV submission post.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Fixed production TypeScript, OpenRouter Gemma id in render.yaml, Mongo walks, live demo at stillbench.onrender.com.&lt;/p&gt;

                &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-deploy"&gt;deploy&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;render.yaml + GitHub push&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;render.yaml + GitHub push&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Health check OK; integrations board for partner status.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Fix Sentry AI_APICallError Missing Authentication header on OpenRouter.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Root cause: empty OLLAMA_API_KEY on Render with OpenRouter base URL. Added ollama-env.ts to treat blank keys as unset, skip Gemma when remote key missing, and use explicit OpenAI-compatible Mastra model config.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Align DEV post with a real twelve-minute sit and submission template.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Completed 12-minute production sit at Banani Block C Park; updated DEV draft with template sections, repo embed, prize categories; Mongo-backed integration health and live probes on /integrations.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-footer"&gt;
    &lt;span class="agent-session-meta"&gt;
        8 of 8 messages
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://dev.to/agent_sessions/stillbench-touch-grass-hf26-gemma-tabpfn-render-deploy-s3xzgs"&gt;Full session on DEV&lt;/a&gt; — curated build log (Touch Grass scope, Render deploy, OpenRouter auth fix, submission polish). Publish the session on DEV if the embed is blank.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render&lt;/strong&gt; — &lt;a href="https://stillbench.onrender.com" rel="noopener noreferrer"&gt;https://stillbench.onrender.com&lt;/a&gt; from &lt;code&gt;render.yaml&lt;/code&gt;; MongoDB for durable walks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma&lt;/strong&gt; — open-weight &lt;code&gt;google/gemma-3-4b-it&lt;/code&gt; briefs; local Ollama path in README.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of TabPFN&lt;/strong&gt; — scores every eligible bench from CSV/Atlas attempt rows; picks farthest reachable bench.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Tinker&lt;/strong&gt; — tuned brief model on exportable sits; ~50% of briefs on production.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Mastra&lt;/strong&gt; — &lt;code&gt;depart&lt;/code&gt; workflow with five registered steps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of MongoDB Atlas&lt;/strong&gt; — walks, attempts, integration health on Render.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of SerpApi&lt;/strong&gt; — real Dhaka parks merged at build via &lt;code&gt;npm run benches:find&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of ElevenLabs&lt;/strong&gt; — production integrations show &lt;strong&gt;Voice: works&lt;/strong&gt; after syncing &lt;code&gt;ELEVENLABS_API_KEY&lt;/code&gt; on Render (TTS + Scribe path).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Backboard&lt;/strong&gt; — remembers debriefs; may suggest one line for the next brief.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Tiger Data&lt;/strong&gt; — &lt;code&gt;sit_events&lt;/code&gt; in Timescale for analytics.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Sentry Agent Tracing&lt;/strong&gt; — &lt;code&gt;@mastra/sentry&lt;/code&gt; exporter on production; screenshot above.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Arduino&lt;/strong&gt; — optional UNO R4 WiFi pebble in &lt;code&gt;hardware/&lt;/code&gt; polls &lt;code&gt;/api/device&lt;/code&gt; and buzzes at sit end.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Built for &lt;strong&gt;Hacktoberfest 2026 — Week 1: Touch Grass&lt;/strong&gt;. &lt;code&gt;#hf26challenge&lt;/code&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>House Pot: Amma's kitchen in Dhaka — approve first, then listen</title>
      <dc:creator>S. M. Riad</dc:creator>
      <pubDate>Sat, 03 Oct 2026 23:05:34 +0000</pubDate>
      <link>https://dev.to/smriad/house-pot-ammas-kitchen-in-dhaka-approve-first-then-listen-2mi9</link>
      <guid>https://dev.to/smriad/house-pot-ammas-kitchen-in-dhaka-approve-first-then-listen-2mi9</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;blockquote&gt;
&lt;p&gt;“The dal was right—use a little less cumin next time. And I will not listen to the voice until I tap approve.”&lt;br&gt;
— Amma&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;&lt;strong&gt;House Pot&lt;/strong&gt; is one weeknight dinner for &lt;strong&gt;Amma&lt;/strong&gt;, who runs the stove in our Dhaka flat.&lt;/p&gt;

&lt;p&gt;The pantry is whatever came back from the market. A cousin cannot eat peanuts or shellfish. She wants &lt;strong&gt;one dish&lt;/strong&gt;, not a feed. Voice is welcome &lt;strong&gt;after&lt;/strong&gt; she has accepted the exact card on screen — not before, and not as a disclaimer the model wrote.&lt;/p&gt;

&lt;p&gt;So the app does three jobs, in that order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Gemma&lt;/strong&gt; proposes one JSON recipe from tonight’s pantry and the household allergy list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;pantry-check.ts&lt;/code&gt;&lt;/strong&gt; marks in-kitchen vs missing and &lt;strong&gt;blocks Approve&lt;/strong&gt; on allergens. Shrimp counts as shellfish. The model does not get a vote.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ElevenLabs&lt;/strong&gt; reads the approved card aloud. It never sees the pantry voice note.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Defaults on the live site: cook Amma, allergies peanuts and shellfish, pantry &lt;code&gt;red lentils, onion, garlic, rice, cumin, spinach, yogurt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I handed her the dal. She ate it. The quote above is the spec.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Live:&lt;/strong&gt; &lt;a href="https://house-pot.onrender.com/" rel="noopener noreferrer"&gt;https://house-pot.onrender.com/&lt;/a&gt; (free-tier cold start ~60s)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sixty seconds:&lt;/strong&gt; leave the defaults → &lt;strong&gt;Propose tonight’s pot&lt;/strong&gt; → read the marks → &lt;strong&gt;Approve &amp;amp; read aloud&lt;/strong&gt;. Then tap &lt;strong&gt;If shrimp slipped in&lt;/strong&gt;. That last click does not call Gemma or ElevenLabs. It adds shrimp to the same card and runs &lt;code&gt;pantry-check.ts&lt;/code&gt; so you can see Approve stay off.&lt;/p&gt;

&lt;p&gt;The live narrated card is &lt;strong&gt;Mild Eggplant and Potato Comfort Curry&lt;/strong&gt; — Sunday-market eggplant, potato, eggs, mustard oil; four diners; peanuts and shellfish blocked. Gemma ~51s, critic ~23s, then ElevenLabs after approve.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://house-pot.onrender.com/?run=8073cda3-1865-4542-871b-5cba6afc9b4d" rel="noopener noreferrer"&gt;Amma’s narrated run&lt;/a&gt; · &lt;a href="https://house-pot.onrender.com/history/all" rel="noopener noreferrer"&gt;all pots&lt;/a&gt; · &lt;a href="https://house-pot.onrender.com/demo.mp4" rel="noopener noreferrer"&gt;video&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;Live stills (same order as the video)&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%2Fmg2j990ykcybpm2edxy2.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%2Fmg2j990ykcybpm2edxy2.png" alt="Kitchen hero" 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%2Fek1yqk0uh9ahavk3y8w6.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%2Fek1yqk0uh9ahavk3y8w6.png" alt="Sunday-market pantry" 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%2Fg7pcr2n8f68d88nscp51.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%2Fg7pcr2n8f68d88nscp51.png" alt="Shrimp-slip gate + ElevenLabs" 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%2F0poc4nd8xxx8x84i2564.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%2F0poc4nd8xxx8x84i2564.png" alt="Kitchen services" 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%2Fpjmlh2t8gm03sx6c0syi.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%2Fpjmlh2t8gm03sx6c0syi.png" alt="All pots" 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%2Fwsgfn7amz82tm7iw7nn8.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%2Fwsgfn7amz82tm7iw7nn8.png" alt="Amma household history" width="800" height="450"&gt;&lt;/a&gt;&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/smriad" rel="noopener noreferrer"&gt;
        smriad
      &lt;/a&gt; / &lt;a href="https://github.com/smriad/house-pot" rel="noopener noreferrer"&gt;
        house-pot
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Voice-friendly kitchen agent for a friend — pantry in, approve, narrate.
    &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;House Pot&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;One recipe from tonight’s pantry. Allergies enforced in code. ElevenLabs speaks only after the cook taps approve.&lt;/p&gt;
&lt;p&gt;Built for &lt;strong&gt;Amma&lt;/strong&gt; in Dhaka — Hacktoberfest “Build for a Friend.” Challenge write-up: &lt;a href="https://github.com/smriad/house-pot/./SUBMISSION.md" rel="noopener noreferrer"&gt;&lt;code&gt;SUBMISSION.md&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/smriad/house-pot/public/demo-screenshots/01-kitchen-top.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%2Fsmriad%2Fhouse-pot%2FHEAD%2Fpublic%2Fdemo-screenshots%2F01-kitchen-top.png" alt="House Pot kitchen — Mild Eggplant and Potato Comfort Curry"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://house-pot.onrender.com/" rel="nofollow noopener noreferrer"&gt;Live demo&lt;/a&gt;&lt;/strong&gt; · &lt;strong&gt;&lt;a href="https://house-pot.onrender.com/?run=8073cda3-1865-4542-871b-5cba6afc9b4d" rel="nofollow noopener noreferrer"&gt;Narrated run&lt;/a&gt;&lt;/strong&gt; · &lt;strong&gt;&lt;a href="https://house-pot.onrender.com/demo.mp4" rel="nofollow noopener noreferrer"&gt;Video&lt;/a&gt;&lt;/strong&gt; · &lt;strong&gt;&lt;a href="https://dev.to/smriad/house-pot-ammas-kitchen-in-dhaka-approve-first-then-listen-2mi9" rel="nofollow"&gt;DEV post&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Quick start&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git clone https://github.com/smriad/house-pot.git
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; house-pot
npm ci
cp .env.example .env.local
npm run dev&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Open &lt;a href="http://localhost:3000" rel="nofollow noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt;. Node 20+. Without &lt;code&gt;GEMMA_*&lt;/code&gt; the kitchen UI still loads; propose needs an OpenAI-compatible Gemma endpoint (Ollama locally, or hosted keys — see &lt;a href="https://github.com/smriad/house-pot#configuration" rel="noopener noreferrer"&gt;Configuration&lt;/a&gt;).&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Contents&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/smriad/house-pot#about" rel="noopener noreferrer"&gt;About&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/smriad/house-pot#features" rel="noopener noreferrer"&gt;Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/smriad/house-pot#tech-stack" rel="noopener noreferrer"&gt;Tech stack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/smriad/house-pot#getting-started" rel="noopener noreferrer"&gt;Getting started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/smriad/house-pot#architecture" rel="noopener noreferrer"&gt;Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/smriad/house-pot#project-structure" rel="noopener noreferrer"&gt;Project structure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/smriad/house-pot#http-api" rel="noopener noreferrer"&gt;HTTP API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/smriad/house-pot#deployment-render" rel="noopener noreferrer"&gt;Deployment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/smriad/house-pot#contributing" rel="noopener noreferrer"&gt;Contributing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/smriad/house-pot#license" rel="noopener noreferrer"&gt;License&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/smriad/house-pot#acknowledgements" rel="noopener noreferrer"&gt;Acknowledgements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/smriad/house-pot#author" rel="noopener noreferrer"&gt;Author&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;About&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Weeknight dinner is &lt;strong&gt;what is already in the kitchen&lt;/strong&gt;, &lt;strong&gt;who is eating&lt;/strong&gt;, and &lt;strong&gt;who cannot eat peanuts or shellfish&lt;/strong&gt; — not a trending shopping list. Generic meal apps trust prompt-only “allergy safe” claims and dump ten recipes while rice is on the stove.&lt;/p&gt;
&lt;p&gt;House…&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/smriad/house-pot" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Start at &lt;code&gt;pantry-check.ts&lt;/code&gt;, then &lt;code&gt;orchestrator.ts&lt;/code&gt;, &lt;code&gt;approve/route.ts&lt;/code&gt;, &lt;code&gt;narrate/route.ts&lt;/code&gt;, &lt;code&gt;HousePotApp.tsx&lt;/code&gt;.&lt;/p&gt;

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

&lt;p&gt;Open-weight &lt;strong&gt;Gemma&lt;/strong&gt; is good at a dal from lentils and spinach. It is not a doctor. Competitors in this challenge put allergies in the prompt and hope. I put them in TypeScript and &lt;strong&gt;re-run the same check on approve and on narrate&lt;/strong&gt;, so a stale “yes” cannot speak a changed ingredient list.&lt;/p&gt;

&lt;p&gt;The human gate is one executable action: &lt;em&gt;speak this recipe&lt;/em&gt;. Not a transcript. Not “the model said it was fine.” &lt;a href="https://dev.to/draganristicrsjpg/the-approval-queue-pattern-putting-a-human-in-the-loop-without-putting-them-in-the-way-3ldl"&gt;The approval-queue pattern&lt;/a&gt; is spend the human only where the action is irreversible; &lt;a href="https://dev.to/hiroshi_takamura_c851fe71/tie-human-approval-to-the-exact-version-an-ai-agent-delivered-b6e"&gt;tie approval to the exact artifact&lt;/a&gt; so “approved” cannot drift. House Pot binds approve to &lt;strong&gt;this&lt;/strong&gt; &lt;code&gt;proposal&lt;/code&gt; and &lt;strong&gt;this&lt;/strong&gt; &lt;code&gt;pantryReview&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;ElevenLabs is the closed piece on purpose. It sits &lt;strong&gt;behind&lt;/strong&gt; the gate and receives &lt;strong&gt;recipe text only&lt;/strong&gt;. MongoDB keeps the household, the run, and “less cumin next time” so tomorrow’s propose is not a lecture.&lt;/p&gt;

&lt;p&gt;Locally, the same repo talks to Ollama (&lt;code&gt;gemma3:4b&lt;/code&gt;), Whisper, and optional TabPFN. Render uses hosted &lt;code&gt;GEMMA_*&lt;/code&gt; so a judge on a phone can click without installing anything. I say that plainly rather than pretending the public URL is air-gapped.&lt;/p&gt;

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

&lt;p&gt;In this kitchen the sensitive data is not “inspiration.” It is &lt;strong&gt;who reacts to peanuts&lt;/strong&gt;, what Amma bought before the rain, and what we will not ship to a closed meal API abroad.&lt;/p&gt;

&lt;p&gt;Open-weight Gemma can plan on a machine we run. Validation stays in our repo. The Render demo is hosted so you can try it — the policy layer is still the TypeScript you can read. Swapping the planner is an env var; swapping the allergen rules is a pull request.&lt;/p&gt;

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

&lt;p&gt;Three public sessions on DEV, oldest first.&lt;/p&gt;

&lt;h3&gt;
  
  
  Demo video, tech voiceover, and DEV submission sync
&lt;/h3&gt;


&lt;div class="ltag-agent-session"&gt;
  &lt;div class="agent-session-header"&gt;
    
    &lt;span class="agent-session-tool-icon-badge" title="Codex"&gt;
&lt;/span&gt;
    &lt;span class="agent-session-title"&gt;House Pot — demo video, tech voiceover, and DEV submission sync&lt;/span&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-scroll"&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Prepare House Pot for Hacktoberfest Weekend submission: live demo on Render, DEV draft, and a judge-friendly demo video.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Expanded README/SUBMISSION with BRD traceability, plan→policy→deliver architecture, and honest tech tables tied to GET /api/health. Fixed Render propose latency (TABPFN_DISABLE), Mastra probe, and smoke-test run IDs for judges.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Record demo.mp4 locally with visible cursor and voice that explains each feature.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Added npm run demo:record: Playwright 1920×1080 capture, chapter voiceovers via ElevenLabs, ffmpeg mux. Scripts live under scripts/record-demo.mjs and scripts/lib/demo-voice.mjs.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Narration should cover which technology is used, where in the UI/API, and how it is used — Bangladesh male accent.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Rewrote tour chapters (Next.js, health strip, MongoDB profile, STT input, Gemma orchestrator, pantry-check policy, ElevenLabs gate, run history, recipe TTS). Default demo voice: Aashish (South Asian male). Re-recorded public/demo.mp4 (~5 min).&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Update the DEV submission draft and agent session embed.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-footer"&gt;
    &lt;span class="agent-session-meta"&gt;
        7 of 7 messages
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://dev.to/agent_sessions/house-pot-demo-video-tech-voiceover-and-dev-submission-sync-xuczlj"&gt;Session 422&lt;/a&gt; — 7 curated turns.&lt;/p&gt;

&lt;h3&gt;
  
  
  Full HF26 build log (demo, ML, submission sync)
&lt;/h3&gt;


&lt;div class="ltag-agent-session"&gt;
  &lt;div class="agent-session-header"&gt;
    
    &lt;span class="agent-session-tool-icon-badge" title="Codex"&gt;
&lt;/span&gt;
    &lt;span class="agent-session-title"&gt;House Pot — full HF26 build log (demo, ML, submission sync)&lt;/span&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-scroll"&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Prepare House Pot for Hacktoberfest Weekend: live Render demo, DEV submission, and a judge-friendly walkthrough.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Expanded README/SUBMISSION with BRD traceability and plan→policy→deliver architecture. Wired honest integration probes to GET /api/health. Tuned Render (TABPFN_DISABLE, Mastra probe) and smoke scripts for production.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Improve the DEV draft submission and keep it unpublished until I review.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Polished SUBMISSION.md for judge skimmability (demo steps, safety narrative, prize categories). Created unpublished DEV draft with #hf26challenge tags via DevRelay.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Embed My Agent Session in the post and explain the section.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Saved curated agent session 422 on DEV and added {% agent_session 422 %} to SUBMISSION. Separated the Amma closing quote from the technical session embed.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Record demo.mp4 with cursor, chapter voiceover (technology / where / how), Bangladesh male accent.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Added npm run demo:record (Playwright 1920×1080, ElevenLabs TOUR_CHAPTERS, ffmpeg mux). Re-recorded ~6 min public/demo.mp4 with integrations chapter and live recipe narration on Render.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Fix CI lint and keep main green.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Fixed IntegrationsPanel react-hooks/set-state-in-effect with useSyncExternalStore for local Temporal link. Removed unused vars in tabpfn/predict.ts. CI passed on main.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Add ML features: multi-propose, training export, pantry extract, semantic allergen hints.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Shipped propose-rank (PROPOSE_CANDIDATES), meal_fit_training rows + export:training, Gemma pantry-extract on transcribe, allergen-semantics hints (non-blocking). Updated orchestrator and README.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;/history/all is slow on live MongoDB — fix it.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Batched household lookups, Mongo projection for list view, summarizeRunForList, short cache on /api/pots. AllPotHistoryPage shows Refreshing only when rows already exist.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Remove DigitalOcean from footer and integrations — I deploy on Render only.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Removed .do/app.yaml, DigitalOcean probe card, and footer credit. Updated demo voice script and docs for 17 sponsor integrations.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Simplify demo screenshots to one integrations image; build voiced demo.mp4 from five PNGs.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;capture-demo-screenshots.mjs → 5 PNGs. build-demo-from-screenshots.mjs + SLIDESHOW_CHAPTERS ElevenLabs narration (~50s). Fixed ffmpeg segment timing so integrations slide stays on screen with matching voice.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Add GitHub community standards and sync README/SUBMISSION.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Added LICENSE (MIT), CODE_OF_CONDUCT, CONTRIBUTING, .github/SECURITY.md. README demo table documents screenshots → from-screenshots workflow.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Update my full agent session for the DEV submission embed.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Publishing this expanded curated session on DEV. Judges: &lt;a href="https://house-pot.onrender.com/" rel="noopener noreferrer"&gt;https://house-pot.onrender.com/&lt;/a&gt; · &lt;a href="https://github.com/smriad/house-pot" rel="noopener noreferrer"&gt;https://github.com/smriad/house-pot&lt;/a&gt; · voiced demo.mp4 from live screenshots.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-footer"&gt;
    &lt;span class="agent-session-meta"&gt;
        22 of 22 messages
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://dev.to/agent_sessions/house-pot-full-hf26-build-log-demo-ml-submission-sync-eezqug"&gt;Session 432&lt;/a&gt; — 22 curated turns.&lt;/p&gt;

&lt;h3&gt;
  
  
  Submission polish, shrimp-slip gate, eggplant curry demo
&lt;/h3&gt;


&lt;div class="ltag-agent-session"&gt;
  &lt;div class="agent-session-header"&gt;
    
    &lt;span class="agent-session-tool-icon-badge" title="Codex"&gt;
&lt;/span&gt;
    &lt;span class="agent-session-title"&gt;House Pot — submission polish, shrimp-slip gate, eggplant curry demo&lt;/span&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-scroll"&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Rewrite the DEV submission around Amma’s quote and a real Sunday-market dinner — eggplant curry, not generic AI chef copy.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Restructured SUBMISSION and the live DEV post: Amma quote up front, three-job story (Gemma → pantry-check → ElevenLabs), 60-second judge path. Featured live narrated run Mild Eggplant and Potato Comfort Curry (run 8073cda3-1865-4542-871b-5cba6afc9b4d). GitHub embed + prize order emphasizing ElevenLabs gate.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Judges need to see allergy enforcement without another LLM call — shrimp on the same card should block approve.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Added slipIngredient in pantry-check.ts and “If shrimp slipped in (no model call)” in HousePotApp — mutates the displayed recipe client-side, re-runs PantryReview, keeps Approve off. Unit tests for shrimp → shellfish and slip path. No Gemma or ElevenLabs on that button.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Update demo.mp4 and screenshots for the new story: kitchen, Sunday pantry, approved card with gate, integrations, history.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Refreshed demo-screenshots (6 PNGs including 03-approved-recipe.png). Voiced slideshow via demo:screenshots + demo:from-screenshots (SLIDESHOW_CHAPTERS). README demo table documents the six-slide order and shrimp-slip judge step.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Add a third agent session on DEV so the build log covers everything after session 432.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Publishing this curated session (433) on DEV alongside 422 (early demo tour) and 432 (full HF26 build). Embed all three under My Agent Session on the submission post. Live: &lt;a href="https://house-pot.onrender.com/" rel="noopener noreferrer"&gt;https://house-pot.onrender.com/&lt;/a&gt; · repo &lt;a href="https://github.com/smriad/house-pot" rel="noopener noreferrer"&gt;https://github.com/smriad/house-pot&lt;/a&gt;.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-footer"&gt;
    &lt;span class="agent-session-meta"&gt;
        8 of 8 messages
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://dev.to/agent_sessions/house-pot-submission-polish-shrimp-slip-gate-eggplant-curry-demo-3iotrv"&gt;Session 443&lt;/a&gt; — 8 curated turns (Amma-led post, &lt;code&gt;slipIngredient&lt;/code&gt; demo, six-slide &lt;code&gt;demo.mp4&lt;/code&gt;). &lt;strong&gt;Make Public&lt;/strong&gt; on DEV if the embed is blank.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of ElevenLabs&lt;/strong&gt; — TTS only after approve; pantry audio never sent; the live “If shrimp slipped in” path never reaches TTS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma&lt;/strong&gt; — one pantry-constrained JSON recipe, optional critic, never the safety authority.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of MongoDB Atlas&lt;/strong&gt; — household + runs + cook feedback (&lt;code&gt;meal_fit_training&lt;/code&gt;) on the live URL.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render&lt;/strong&gt; — &lt;a href="https://house-pot.onrender.com/" rel="noopener noreferrer"&gt;https://house-pot.onrender.com/&lt;/a&gt; from &lt;code&gt;render.yaml&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Hacktoberfest Weekend 2026 — Build for a Friend.&lt;/em&gt;&lt;/p&gt;

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