<?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: Samrat</title>
    <description>The latest articles on DEV Community by Samrat (@masterfloppa).</description>
    <link>https://dev.to/masterfloppa</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%2F4161605%2F4953c857-fee3-469d-9769-0479d85b9b2f.jpg</url>
      <title>DEV Community: Samrat</title>
      <link>https://dev.to/masterfloppa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/masterfloppa"/>
    <language>en</language>
    <item>
      <title>Chore Starter: AI does the preparation. I keep the final say.</title>
      <dc:creator>Samrat</dc:creator>
      <pubDate>Sun, 25 Oct 2026 22:57:36 +0000</pubDate>
      <link>https://dev.to/masterfloppa/chore-starter-ai-does-the-preparation-i-keep-the-final-say-14d2</link>
      <guid>https://dev.to/masterfloppa/chore-starter-ai-does-the-preparation-i-keep-the-final-say-14d2</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week3-2026-10-19"&gt;Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Some tasks aren’t difficult. They’re just annoying to start.&lt;/p&gt;

&lt;p&gt;Ask for a refund. Write an awkward message. Figure out how to tackle the pile on your desk. You know it needs doing, but opening a blank document feels like more work than the task deserves.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chore Starter&lt;/strong&gt; is a minimal AI personal assistant for that first bit of effort.&lt;/p&gt;

&lt;p&gt;Give it the messy version:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“My headphones arrived with a cracked headband. Help me ask for a replacement without sounding rude.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It prepares an editable email, message or practical plan, alongside a short checklist and the details you still need to supply. Missing information stays as a placeholder—not an invented order number or a promise the shop never made.&lt;/p&gt;

&lt;p&gt;The important part: &lt;strong&gt;preparation is not permission.&lt;/strong&gt;&lt;br&gt;
Chore Starter can prepare everything, but copying, downloading or opening an email draft requires a separate preview and confirmation. It never sends email, makes purchases, submits forms or schedules things.&lt;/p&gt;

&lt;p&gt;The interface is deliberately small: one task box, one prepared result, and a few clear next steps. Previously prepared tasks stay on your machine, so you can come back later.&lt;/p&gt;

&lt;p&gt;A simple walkthrough:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Describe a chore, such as asking for a replacement.&lt;/li&gt;
&lt;li&gt;Review the draft and fill in the missing details.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Copy draft&lt;/strong&gt; or &lt;strong&gt;Open email draft&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Inspect the exact content in the confirmation dialog.&lt;/li&gt;
&lt;li&gt;Cancel—or explicitly confirm.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Opening an email draft only hands it to your email app. You still review and send it yourself.&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/MasterFloppa" rel="noopener noreferrer"&gt;
        MasterFloppa
      &lt;/a&gt; / &lt;a href="https://github.com/MasterFloppa/Chore-Starter" rel="noopener noreferrer"&gt;
        Chore-Starter
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A local AI assistant that prepares the chores you put off. Nothing leaves without your confirmation.
    &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;Chore Starter&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Give it the task. Get the first draft. You stay in charge.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A minimal, local-first AI personal assistant for the chores you keep putting off.
It prepares a useful draft and a small checklist from a plain-language task.
Nothing is sent, submitted, purchased or scheduled automatically.&lt;/p&gt;
&lt;p&gt;Built for the Hacktoberfest Open-Source AI Challenge, Week 3: Slow and Steady.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Status&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Initial project scaffold. Application implementation follows this commit.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;License&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;MIT&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/MasterFloppa/Chore-Starter" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;Chore Starter uses a locally installed Ollama model. The default is &lt;code&gt;gemma3:4b&lt;/code&gt;.&lt;/p&gt;

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

&lt;p&gt;The stack is &lt;strong&gt;React + Vite&lt;/strong&gt;, &lt;strong&gt;TypeScript + Hono&lt;/strong&gt;, and &lt;strong&gt;Gemma 3 4B through Ollama&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;There are two deliberately separate parts:&lt;br&gt;
&lt;strong&gt;Preparation:&lt;/strong&gt; Gemma turns the request into a structured response: the draft, a short checklist, and missing information. It has no tools, account credentials or ability to perform the chore. The response is validated before it becomes a saved task.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Permission:&lt;/strong&gt; ordinary application code controls the next step. The model cannot approve its own output.&lt;/p&gt;

&lt;p&gt;For each action, the server creates a short-lived confirmation tied to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the task;&lt;/li&gt;
&lt;li&gt;its current revision;&lt;/li&gt;
&lt;li&gt;the specific action;&lt;/li&gt;
&lt;li&gt;the exact content being reviewed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Edit the draft, and the old approval stops working. Cancel it, and it cannot be used. Confirm once, and it cannot be replayed.&lt;/p&gt;

&lt;p&gt;That matters more than a reassuring “Are you sure?” button. The server—not just the interface—enforces the boundary.&lt;/p&gt;

&lt;p&gt;The available actions are intentionally modest:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Copy draft:&lt;/strong&gt; copies the reviewed text.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Download task:&lt;/strong&gt; downloads a Markdown file with the draft and checklist.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open email draft:&lt;/strong&gt; opens the chosen recipient, subject and body in your email app without sending it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tasks are stored locally. Model failures produce an explicit error rather than a pretend-success response.&lt;/p&gt;

&lt;p&gt;The automated checks cover the important boundaries: missing confirmation, cancellation, expiry, changed drafts, repeated confirmation, stale edits, persistence and failed model calls.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;The task can stay where it started.&lt;/strong&gt; A refund request, personal message or household chore may include information I don’t want to upload to another AI service. Gemma runs locally through Ollama; the app does not need a hosted AI API key.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A small model is enough for a small job.&lt;/strong&gt; I’m not asking it to operate my computer. I’m asking it to turn rough context into a useful first draft. Keeping the scope narrow makes a locally running 4B model a practical choice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The permission boundary is inspectable.&lt;/strong&gt; Anyone can read the application code and see that the model’s output does not trigger a send, payment or background action.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The model is replaceable.&lt;/strong&gt; An installed Ollama model can be selected in Settings. The app’s confirmation rules remain the same regardless of which model prepares the text.&lt;/p&gt;

&lt;p&gt;Open weights provide the language layer. Open application code makes the limits visible.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Lazy Payoff
&lt;/h2&gt;

&lt;p&gt;The payoff is getting past the blank page.&lt;/p&gt;

&lt;p&gt;Instead of thinking through tone, structure, missing details and the next step separately, you describe the task once and review something concrete.&lt;/p&gt;

&lt;p&gt;It does not eliminate your judgment. It eliminates some of the preparation that makes small chores feel bigger than they are.&lt;/p&gt;

&lt;p&gt;I’m not claiming a measured number of minutes saved yet. The intended trade is simple: &lt;strong&gt;less time getting ready to do the thing, while keeping control over actually doing it.&lt;/strong&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma:&lt;/strong&gt; Gemma 3 4B prepares the draft, checklist and missing-information prompts locally through Ollama.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of GitHub Copilot:&lt;/strong&gt; GitHub Copilot was used as the coding agent to build the app and its automated checks.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>gemma</category>
      <category>opensource</category>
    </item>
    <item>
      <title>ConfiDict: A Private AI Vocabulary Coach</title>
      <dc:creator>Samrat</dc:creator>
      <pubDate>Sun, 18 Oct 2026 19:00:35 +0000</pubDate>
      <link>https://dev.to/masterfloppa/confidict-a-private-ai-vocabulary-coach-5911</link>
      <guid>https://dev.to/masterfloppa/confidict-a-private-ai-vocabulary-coach-5911</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built &lt;strong&gt;ConfiDict&lt;/strong&gt;, a local-first vocabulary trainer that helps learners concentrate on the words they understand least.&lt;/p&gt;

&lt;p&gt;Most flashcard applications show an answer and ask the learner to decide whether they were correct. That self-assessment is subjective: an answer may be partially correct, use a valid synonym, or miss one important part of the meaning.&lt;/p&gt;

&lt;p&gt;ConfiDict changes that workflow. The learner sees a word and explains its definition in their own words. A local open-weight Gemma model evaluates the response, identifies whether it is strong, correct, partial, or incorrect, and gives concise feedback.&lt;/p&gt;

&lt;p&gt;Every word has a visible confidence score between 0 and 100. Each day, ConfiDict creates a five-card session from the learner’s 15 lowest-confidence words. Weaker words have a greater chance of appearing, but weighted selection prevents every session from repeating the exact same cards.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The intended users include:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IELTS, TOEFL, GRE, and other exam candidates&lt;/li&gt;
&lt;li&gt;Adults improving their workplace vocabulary&lt;/li&gt;
&lt;li&gt;Students learning subject-specific terminology&lt;/li&gt;
&lt;li&gt;Tutors who want learners to practice a curated word list&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A learner is not paying for another digital deck of cards. They are paying for focused practice, objective feedback, and less time wasted reviewing words they already know.&lt;/p&gt;

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

&lt;p&gt;The project is open source under the MIT License:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/MasterFloppa" rel="noopener noreferrer"&gt;
        MasterFloppa
      &lt;/a&gt; / &lt;a href="https://github.com/MasterFloppa/ConfiDict" rel="noopener noreferrer"&gt;
        ConfiDict
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Local-first AI vocabulary confidence trainer for Hacktoberfest 2026
    &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;ConfiDict&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;ConfiDict is a local-first vocabulary confidence trainer. Learners import the
words they want to remember, define five words in their own language each day
and receive semantic grading from an open-weight model that runs in the browser.&lt;/p&gt;
&lt;p&gt;This project is being built for the
&lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12" rel="nofollow"&gt;Hacktoberfest Open-Source AI Challenge: Week 2 — Side Hustle&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The copy-ready DEV submission draft is in
&lt;a href="https://github.com/MasterFloppa/ConfiDict/docs/dev-submission.md" rel="noopener noreferrer"&gt;&lt;code&gt;docs/dev-submission.md&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The problem&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Traditional flashcards usually ask learners to reveal an answer and grade
themselves. That makes progress subjective and gives learners little help when
their answer is close but incomplete.&lt;/p&gt;
&lt;p&gt;ConfiDict uses open-source AI to compare the learner's free-text definition with
the reference meaning. It then adjusts a transparent confidence score and
prioritizes the words that need the most attention.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;MVP scope&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;The first version deliberately supports one learning task:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;See a word and explain its definition in your own words.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The MVP includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Individual and…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/MasterFloppa/ConfiDict" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Repository: &lt;a href="https://github.com/MasterFloppa/ConfiDict" rel="noopener noreferrer"&gt;github.com/MasterFloppa/ConfiDict&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;ConfiDict uses a deliberately small architecture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;React 19 and TypeScript&lt;/strong&gt; for the responsive web interface&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vite&lt;/strong&gt; for development and production builds&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IndexedDB through Dexie&lt;/strong&gt; for local persistence&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama with Gemma 4B&lt;/strong&gt; for private semantic answer grading&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vitest&lt;/strong&gt; for confidence-selection and import tests&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Local-first storage
&lt;/h3&gt;

&lt;p&gt;The MVP uses IndexedDB rather than a hosted SQL or document database.&lt;/p&gt;

&lt;p&gt;The learner’s word list, definitions, confidence scores, daily sessions, and review history remain in their own browser. There are no accounts, database credentials, or backend storage costs.&lt;/p&gt;

&lt;p&gt;The application stores only the information needed for learning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Word&lt;/li&gt;
&lt;li&gt;Reference definition&lt;/li&gt;
&lt;li&gt;Confidence score&lt;/li&gt;
&lt;li&gt;Number of attempts&lt;/li&gt;
&lt;li&gt;Previous result&lt;/li&gt;
&lt;li&gt;Local review history&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Selecting the daily five
&lt;/h3&gt;

&lt;p&gt;New words begin with a confidence score of 25.&lt;/p&gt;

&lt;p&gt;For each daily session, ConfiDict:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Sorts the library from lowest to highest confidence&lt;/li&gt;
&lt;li&gt;Creates a pool from the 15 weakest words&lt;/li&gt;
&lt;li&gt;Selects five cards using weighted randomness&lt;/li&gt;
&lt;li&gt;Gives lower-confidence cards a greater probability of selection&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The confidence changes are intentionally transparent:&lt;br&gt;
| Result | Confidence change |&lt;br&gt;
| --- | ---: |&lt;br&gt;
| Strong answer | +12 |&lt;br&gt;
| Correct answer | +8 |&lt;br&gt;
| Partially correct | -5 |&lt;br&gt;
| Incorrect answer | -15 |&lt;/p&gt;

&lt;p&gt;Gemma does not secretly choose review dates or directly manipulate scores. It returns a structured assessment, while deterministic application code applies the published confidence rules. The learner can also override an unfair AI assessment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Local Gemma grading
&lt;/h3&gt;

&lt;p&gt;The grading prompt sends Gemma:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The word&lt;/li&gt;
&lt;li&gt;Its reference definition&lt;/li&gt;
&lt;li&gt;The learner’s answer&lt;/li&gt;
&lt;li&gt;A strict grading rubric&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Gemma returns structured JSON containing the grade, a short explanation, and the important detail the learner captured or missed.&lt;/p&gt;

&lt;p&gt;Running Gemma through Ollama keeps the inference pipeline under the learner’s control. No proprietary AI API receives the vocabulary list or answers, and there is no per-card inference bill.&lt;/p&gt;

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

&lt;p&gt;Open innovation is what makes ConfiDict’s side-hustle model practical.&lt;/p&gt;

&lt;p&gt;A vocabulary product may grade thousands of short answers. With a closed API, every practice session creates a recurring inference cost. Those costs either reduce the product’s margin or force the learner into a more expensive subscription.&lt;/p&gt;

&lt;p&gt;An open-weight model changes the economics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Private:&lt;/strong&gt; Personal vocabulary and answers can remain on the learner’s computer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Affordable:&lt;/strong&gt; Local inference removes per-answer API charges.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Replaceable:&lt;/strong&gt; The model can be upgraded or exchanged without redesigning the learning system.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customizable:&lt;/strong&gt; Tutors and schools can change the rubric for a language, exam, or subject.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-hostable:&lt;/strong&gt; Organizations can operate the complete grading pipeline themselves.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Open source also makes the product easier to trust. The confidence formula, selection algorithm, prompt, and storage model can all be inspected instead of being hidden behind a proprietary recommendation system.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Best Use of Gemma&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Best Use of GitHub Copilot&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Go Window: the best time to go outside</title>
      <dc:creator>Samrat</dc:creator>
      <pubDate>Sun, 11 Oct 2026 18:06:13 +0000</pubDate>
      <link>https://dev.to/masterfloppa/go-window-the-best-time-to-go-outside-51hd</link>
      <guid>https://dev.to/masterfloppa/go-window-the-best-time-to-go-outside-51hd</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;I live in Hyderabad, and in October "should I go for a walk?" has a different answer depending on when you ask.&lt;/p&gt;

&lt;p&gt;At 1 PM it feels like 35°C. At 7 AM, the hour every wellness app recommends, PM2.5 is sitting around 45 µg/m³. At 6 PM it's actually pleasant, and that's exactly when I'm in a meeting.&lt;/p&gt;

&lt;p&gt;Weather apps answer &lt;em&gt;"what's the weather?"&lt;/em&gt; None of them answer the question I actually have: &lt;strong&gt;"when, inside the hours I'm free, is it good enough to go outside?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;Go Window&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You tell it when you're really free (say, weekdays 7:00–8:30 and 18:00–20:00). It looks three days ahead at open weather and air-quality forecasts, scores every hour against &lt;em&gt;your&lt;/em&gt; limits, and gives you one answer: your next "go window". A local open-weight model (Gemma 3, running through Ollama on your laptop) explains each day in a sentence. A nudge reaches your phone when the window opens. Afterwards, one tap ("too hot", "air felt bad", "felt great") teaches it what those words mean to &lt;em&gt;you&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;What it does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Plans around your real day.&lt;/strong&gt; It never suggests 3 PM if you're not free at 3 PM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explains the misses.&lt;/strong&gt; "07:00–08:30: PM2.5 47 µg/m³ (your limit 35)." If a clearly better slot sits just outside your free hours, it says so, in case you can move something.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Never a dead end.&lt;/strong&gt; In a hot, smoggy city, sometimes nothing fits all your limits. Instead of an empty screen, it offers the closest slot, marked &lt;strong&gt;best available&lt;/strong&gt;, with exactly what's over: "PM2.5 30 (your limit 25)". You choose how much give there is (strict, a little over, more flexible).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check in by just saying it.&lt;/strong&gt; Write "skipped it, got stuck in a meeting till 8" or "went to the lake but it got muggy" and Gemma turns it into structured feedback.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Phone alerts&lt;/strong&gt; via &lt;a href="https://ntfy.sh" rel="noopener noreferrer"&gt;ntfy&lt;/a&gt;: a morning digest, a nudge 10 minutes before the window, and a one-tap "how was it?" afterwards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A park that fits the window&lt;/strong&gt;, from OpenStreetMap, plus &lt;strong&gt;Add to calendar&lt;/strong&gt; so the slot gets defended like a meeting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The screen time is the point. The plan page is one card and three lines: ten seconds in the morning, one tap afterwards. Everything else happens outside.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; 1. Plan page: the "next go window" card + "Next 3 days"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fmhh1u1kvlpkwftqflwoe.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%2Fmhh1u1kvlpkwftqflwoe.png" alt=" " width="773" height="1018"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; 2. A day opened: Gemma's note, the reasons other free slots don't work, the hour-by-hour strip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fpm2dqkezjkxsylg9cgrb.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%2Fpm2dqkezjkxsylg9cgrb.png" alt=" " width="730" height="552"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; 3. A "best available" day (turn on "Sensitive" in Settings to see one in Hyderabad)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2F7zisygbzr9xfmioymjxn.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%2F7zisygbzr9xfmioymjxn.png" alt=" " width="772" height="473"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; 4. My limits: the learning log 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fnxle3orzjn7gdbqzyhlq.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%2Fnxle3orzjn7gdbqzyhlq.png" alt=" " width="800" height="594"&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/MasterFloppa" rel="noopener noreferrer"&gt;
        MasterFloppa
      &lt;/a&gt; / &lt;a href="https://github.com/MasterFloppa/Go-Window" rel="noopener noreferrer"&gt;
        Go-Window
      &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;Go Window 🌿&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;The best time to go outside, inside the hours you are actually free.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Go Window looks at the next 3 days of weather and air quality, keeps only the slots you said you are free, and tells you
when to step outside. A local open-weight model (Gemma, through Ollama) explains the plan in plain words. Every time you
tell it how a walk felt, it learns your personal heat, humidity, air and rain limits.&lt;/p&gt;
&lt;p&gt;Built for the DEV Hacktoberfest Open-Source AI Challenge, Week 1: &lt;strong&gt;Touch Grass&lt;/strong&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What it does&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Plans around your real day.&lt;/strong&gt; You set free hours (e.g. Mon–Fri 07:00–08:30 and 18:00–20:00). It only suggests time inside them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Never a dead end.&lt;/strong&gt; If nothing fits all your limits (common in a hot, smoggy city), it offers the closest free slot within a tolerance you choose (Strict / Balanced / Relaxed), clearly marked with what is…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/MasterFloppa/Go-Window" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;With &lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt; running and &lt;code&gt;gemma3:4b&lt;/code&gt; pulled: &lt;code&gt;npm install &amp;amp;&amp;amp; npm start&lt;/code&gt;, then open &lt;a href="http://127.0.0.1:8787" rel="noopener noreferrer"&gt;http://127.0.0.1:8787&lt;/a&gt;.&lt;/p&gt;

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



&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
  UI[Browser UI - React] --&amp;gt; API[Local API - Node + Hono]
  API --&amp;gt; OM[Open-Meteo: weather + air quality]
  API --&amp;gt; OSM[OpenStreetMap: parks]
  API --&amp;gt; ENG[Scoring engine: every hour vs YOUR limits, inside free hours]
  ENG --&amp;gt; LLM[Ollama + Gemma 3 4B: narrate days, read check-ins]
  API --&amp;gt; LEARN[Learning: bounded limit changes + plain-English log]
  API --&amp;gt; NTFY[ntfy: scheduled phone alerts]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;&lt;strong&gt;The model narrates; code decides.&lt;/strong&gt; The app picks the good hours, the best window, the reason a slot fails and the park. Gemma gets one day's facts as short sentences and writes three lines: a headline, the why, and an idea. Every number it writes must appear in those facts; if one doesn't, it gets one retry, then that day falls back to template text.&lt;/p&gt;

&lt;p&gt;Running a 4B model on a laptop CPU taught me four things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Sentences beat JSON for small models.&lt;/strong&gt; Given nested JSON, Gemma planned a walk for a day that was already over and turned the park's distance (&lt;code&gt;walk_minutes: 3&lt;/code&gt;) into "walk for 3 minutes." One call per day, with facts written as sentences, fixed both.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make the model quote you.&lt;/strong&gt; Reading "muggy, and the smoke had me coughing", Gemma added &lt;em&gt;too cold&lt;/em&gt;, which moved a limit by 7°C. Now every feeling needs a word-for-word quote from the note, and one check-in can only move a limit a little.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One job at a time.&lt;/strong&gt; Parallel narrations timed each other out on Ollama, so now they queue and outdated ones are skipped.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Learning is lopsided on purpose:&lt;/strong&gt; bad check-ins tighten a limit fast, good ones loosen it slowly, and a "best available" walk that felt fine pulls the limit toward what you handled. That mode came from my own first run: with "sensitive to air" on, Hyderabad never dropped below my 25 µg/m³ limit, so the app showed zero windows for three days. Now it offers the least-bad slot and says exactly what's over.&lt;/p&gt;

&lt;p&gt;Also worth knowing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Alerts are scheduled on the ntfy server, so they still arrive if the laptop sleeps, and they're replaced or cancelled when the forecast changes.&lt;/li&gt;
&lt;li&gt;Open-Meteo counts forecast days from the UTC date, which emptied my third day just after midnight in India.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stack: Node + Hono, React + Vite, Ollama with &lt;code&gt;gemma3:4b&lt;/code&gt;, Open-Meteo, OpenStreetMap, ntfy.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;It runs on the laptop I already have.&lt;/strong&gt; No CUDA here; Ollama runs Gemma 3 4B on the CPU at roughly 15 tokens per second, which works out to about 15 seconds to narrate a day. That would feel slow in a chat, but here it happens in the background while the page shows plain text, and it refreshes every 20 minutes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My routine is private data.&lt;/strong&gt; When I'm free, where I walk and how I felt add up to a detailed picture of someone's day. With a local model, none of that leaves the machine. The only things that go out are a location rounded to about 1 km (to Open-Meteo and OpenStreetMap) and the alert text (to an ntfy topic you can self-host).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zero keys, zero cost.&lt;/strong&gt; Open-Meteo, OpenStreetMap, ntfy and Ollama need no account and no API key. Anyone can clone it and run it tonight.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open data stays the source of truth.&lt;/strong&gt; The model can't make up a forecast, because it never produces one.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma:&lt;/strong&gt; Gemma 3 4B (open weights, running locally via Ollama) is the language layer. It narrates each day under a numeric grounding check, and turns free-text check-ins into quote-verified signals that drive the learning loop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of GitHub Copilot:&lt;/strong&gt; the app was built end to end with GitHub Copilot as a coding agent, from probing the data sources and building the scoring engine to tests, browser end-to-end runs and the UI redesign.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>gemma</category>
    </item>
    <item>
      <title>Cheomil: A Local AI Cooking Companion</title>
      <dc:creator>Samrat</dc:creator>
      <pubDate>Sun, 04 Oct 2026 20:27:23 +0000</pubDate>
      <link>https://dev.to/masterfloppa/cheomil-a-local-ai-cooking-companion-ei4</link>
      <guid>https://dev.to/masterfloppa/cheomil-a-local-ai-cooking-companion-ei4</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;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built Cheomil, a local AI cooking companion for a friend who wanted to know what they could cook with the ingredients already in their kitchen.&lt;/p&gt;

&lt;p&gt;Unlike a generic recipe chatbot, Cheomil starts with a pantry containing actual quantities and units. My friend can ask “What can I make for lunch?” and receive suggestions with ingredient amounts and cooking steps.&lt;/p&gt;

&lt;p&gt;After cooking, they review and confirm the quantities used before anything is deducted. Grocery purchases follow the same review-and-confirm process.&lt;/p&gt;

&lt;p&gt;Chat supports follow-up questions, while New chat clears conversation memory without erasing the pantry. The goal is simple: help one person choose their next meal and keep track of what remains&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%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frlz8bj4kz9rob237gj4j.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%2Frlz8bj4kz9rob237gj4j.png" alt=" " width="800" height="548"&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%2Fkn42ucm84bejbf4tiw8p.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%2Fkn42ucm84bejbf4tiw8p.png" alt=" " width="800" height="440"&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%2Fl0z4y4pwvjhdit44zega.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%2Fl0z4y4pwvjhdit44zega.png" alt=" " width="800" height="393"&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/MasterFloppa" rel="noopener noreferrer"&gt;
        MasterFloppa
      &lt;/a&gt; / &lt;a href="https://github.com/MasterFloppa/Cheomil" rel="noopener noreferrer"&gt;
        Cheomil
      &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;Cheomil&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Good food, already at home.&lt;/strong&gt; A local-first cooking companion built for a friend who wants to turn the ingredients at home into meals, without losing track of what remains.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Run on Windows&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Prerequisites: Node.js 24.12 or newer, Ollama, and the Gemma 3 4B model.&lt;/p&gt;
&lt;div class="highlight highlight-source-powershell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git clone https:&lt;span class="pl-k"&gt;//&lt;/span&gt;&lt;span class="pl-c1"&gt;github.com&lt;/span&gt;&lt;span class="pl-k"&gt;/&lt;/span&gt;MasterFloppa&lt;span class="pl-k"&gt;/&lt;/span&gt;Cheomil.git
&lt;span class="pl-c1"&gt;Set-Location&lt;/span&gt; Cheomil
ollama pull gemma3:4b
npm start&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Open &lt;strong&gt;&lt;a href="http://127.0.0.1:3000" rel="nofollow noopener noreferrer"&gt;http://127.0.0.1:3000&lt;/a&gt;&lt;/strong&gt;. Ollama must be running at &lt;code&gt;http://127.0.0.1:11434&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The production app has &lt;strong&gt;no npm runtime dependencies&lt;/strong&gt;. &lt;code&gt;npm install&lt;/code&gt; is only required for the optional Edge browser test.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The everyday loop&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Enter the ingredients you have, including their quantities. Use &lt;strong&gt;g&lt;/strong&gt;, &lt;strong&gt;ml&lt;/strong&gt;, or &lt;strong&gt;pcs&lt;/strong&gt;. Adding an existing ingredient tops up its stock.&lt;/li&gt;
&lt;li&gt;Ask a question such as "What can I make for lunch?" The local model proposes recipes with pantry ingredient references, quantities, serving counts, and cooking steps.&lt;/li&gt;
&lt;li&gt;Say "I cooked [dish name]" or…&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/MasterFloppa/Cheomil" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


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

&lt;p&gt;Cheomil uses Gemma 3 4B, an open-weight model served locally through Ollama. It interprets cooking requests, generates recipes, and identifies previously suggested dishes.&lt;/p&gt;

&lt;p&gt;The application uses a native Node.js server, SQLite, and vanilla JavaScript, with no npm runtime dependencies.&lt;/p&gt;

&lt;p&gt;The key design decision is separating AI suggestions from inventory changes. Application code validates ingredient references and quantities, and the person confirms every cooking or restocking action.&lt;/p&gt;

&lt;p&gt;One revealing edge case was a recipe treating 2 grams of onion as a meaningful ingredient. I added ingredient-specific quantity checks and explicit rejection of invalid drafts. These safeguards improve reliability but do not replace human judgment or food-safety checks.&lt;/p&gt;

&lt;p&gt;I used GitHub Copilot CLI for implementation, debugging, and regression coverage.&lt;/p&gt;

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

&lt;p&gt;After downloading the model, Cheomil runs without an internet connection or cloud AI API key. Pantry and conversation data stay on the local machine.&lt;/p&gt;

&lt;p&gt;Local inference avoids per-request API charges, although it still uses the computer’s processing power, memory, and electricity. CPU inference can also be slower than a hosted service.&lt;/p&gt;

&lt;p&gt;The model and prompts can be changed without tying the application to one cloud provider. Gemma is open-weight, not fully open-source, and its terms apply; Ollama supplies the open-source runtime.&lt;/p&gt;

&lt;p&gt;For a personal kitchen companion, local control is part of the product—not just a technical choice&lt;/p&gt;

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

&lt;p&gt;Best Use of Gemma: Gemma 3 4B powers local cooking-request interpretation and pantry-grounded recipe generation.&lt;/p&gt;

&lt;p&gt;Best Use of GitHub Copilot: GitHub Copilot CLI assisted with implementation, debugging, and automated regression coverage&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>New to the community</title>
      <dc:creator>Samrat</dc:creator>
      <pubDate>Sun, 04 Oct 2026 13:02:08 +0000</pubDate>
      <link>https://dev.to/masterfloppa/new-to-the-community-3leo</link>
      <guid>https://dev.to/masterfloppa/new-to-the-community-3leo</guid>
      <description>&lt;p&gt;Grittings everyone!&lt;/p&gt;

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