<?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: parteek yadav</title>
    <description>The latest articles on DEV Community by parteek yadav (@parteekyadav).</description>
    <link>https://dev.to/parteekyadav</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%2F3872181%2Fb244d233-27d8-45c8-a4bf-053bd293dd51.jpeg</url>
      <title>DEV Community: parteek yadav</title>
      <link>https://dev.to/parteekyadav</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/parteekyadav"/>
    <language>en</language>
    <item>
      <title>Touch Grass Planner: the most useful feature is the exit</title>
      <dc:creator>parteek yadav</dc:creator>
      <pubDate>Sat, 10 Oct 2026 09:07:43 +0000</pubDate>
      <link>https://dev.to/parteekyadav/touch-grass-planner-the-most-useful-feature-is-the-exit-5h6h</link>
      <guid>https://dev.to/parteekyadav/touch-grass-planner-the-most-useful-feature-is-the-exit-5h6h</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;An outdoor-break app has an awkward design problem: if it keeps you tapping, it has failed at getting you away from a screen.&lt;/p&gt;

&lt;p&gt;Touch Grass Planner takes three inputs—time, energy and nearby surroundings—and returns &lt;strong&gt;one gentle plan&lt;/strong&gt;. Then it hides the form and says: “You have your prompt. Close this tab and go at your own pace.” No streak. No feed. No countdown. No mandatory check-in.&lt;/p&gt;

&lt;p&gt;It is for someone who wants a small suggestion, not another productivity system. A sensory pause or nature-noticing prompt can be done sitting down. A familiar walk or roll is optional. Stationary-only is an explicit choice, not a guess about somebody's body. If conditions are unsafe, the AI is bypassed: staying inside is a valid result.&lt;/p&gt;

&lt;p&gt;The project was created on October 10, 2026. It is free, MIT licensed and local-first. The public demo needs no login or installation. Once its own static assets load, inference happens inside the browser—there is no prediction API, remote model service or telemetry.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://parteek-yadav.github.io/touch-grass-planner/" rel="noopener noreferrer"&gt;https://parteek-yadav.github.io/touch-grass-planner/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Choose your inputs and press “Show my one plan.” The result includes a short prompt you can remember without carrying the app. “Why this plan?” exposes the model's limits rather than pretending the suggestion is certain.&lt;/p&gt;

&lt;p&gt;The deployed browser form was actually tested for ordinary ranking, stationary-only and unsafe conditions. With 15 minutes, medium energy and a park, it suggested a gentle wander. Stationary-only changed that to nature noticing. Unsafe conditions produced “No model inference was used.” No new inference requests appeared in the browser resource list after the two same-origin model scripts loaded.&lt;/p&gt;

&lt;p&gt;That is software verification, &lt;strong&gt;not an outdoor trial&lt;/strong&gt;. I have not tested whether people take more breaks or find these recommendations useful. A fresh offline page load is also not promised; the initial static asset download requires internet access.&lt;/p&gt;

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

&lt;p&gt;Public MIT repository: &lt;a href="https://github.com/Parteek-yadav/touch-grass-planner" rel="noopener noreferrer"&gt;https://github.com/Parteek-yadav/touch-grass-planner&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source includes the Python training implementation, all synthetic examples, saved parameters, browser implementation, offline prompt cards, parity tests and verification/deployment workflows. There are no npm dependencies, paid APIs or embedded credentials.&lt;/p&gt;

&lt;p&gt;Python CLI and optional local server use only the standard library. The full test suite also needs Node.js because it executes the JavaScript model rather than merely comparing source text:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python verify.py
python evaluate.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;The AI is intentionally small: a categorical Naive Bayes classifier implemented from scratch and released under MIT. Training learns class priors and feature likelihoods from an inspectable CSV. Laplace smoothing handles sparse categories; log-space calculations keep inference numerically stable.&lt;/p&gt;

&lt;p&gt;The model ranks activities. Ordinary code handles hard time limits, park requirements and stationary-only filtering. An unsafe-conditions choice overrides learned ranking entirely. A regression test changes training labels and verifies that the actual selected activity changes: this is not a fixed advice table with an AI badge.&lt;/p&gt;

&lt;p&gt;For the browser demo, a build script exports the actual saved Python parameters and activity definitions. The JavaScript implementation uses those same values and calculations. &lt;strong&gt;112 actual Node/Python comparisons passed&lt;/strong&gt;: all 27 input contexts with every unsafe/stationary combination (108 valid cases), plus four invalid inputs. Every recommendation field, explanation, safety outcome, ranking and raw probability was compared, with numeric tolerance of 1e-12.&lt;/p&gt;

&lt;p&gt;The complete suite passed &lt;strong&gt;16 unit tests&lt;/strong&gt;, five CLI scenarios and five loopback HTTP checks. Real GitHub Actions verification and parity-gated deployment both succeeded:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Verification: &lt;a href="https://github.com/Parteek-yadav/touch-grass-planner/actions/runs/38039114209" rel="noopener noreferrer"&gt;https://github.com/Parteek-yadav/touch-grass-planner/actions/runs/38039114209&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Deployment: &lt;a href="https://github.com/Parteek-yadav/touch-grass-planner/actions/runs/38039114195" rel="noopener noreferrer"&gt;https://github.com/Parteek-yadav/touch-grass-planner/actions/runs/38039114195&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The workflows preserve inspectable evidence and refuse deployment if tests or exact learned-model/browser-bundle reproducibility fail. Earlier packaging and Windows/Linux newline failures were repaired, not hidden by disabling checks. Only the deployment job receives Pages and identity-token write permissions; code access otherwise stays read-only.&lt;/p&gt;

&lt;h3&gt;
  
  
  What the numbers do—and do not—mean
&lt;/h3&gt;

&lt;p&gt;All 81 training rows are hand-authored synthetic preference votes. Three votes per context express a design preference, not independent human observations.&lt;/p&gt;

&lt;p&gt;On a fixed, context-disjoint synthetic holdout, the model matched 16 of 27 author labels; a majority-label baseline matched 12. Identical input contexts do not cross the split, but the same designer generated both sets. This is a limited diagnostic, &lt;strong&gt;not real-world accuracy, safety or usefulness&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Displayed scores are uncalibrated. Explanations show exact synthetic feature-match counts, not causal reasons. A small ranking margin triggers a close-call notice. No weather, air-quality, daylight, GPS, route-accessibility or medical check is performed. Those decisions stay with the person using it.&lt;/p&gt;

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

&lt;p&gt;Openness makes the recommendation contestable. You can see every example, inspect the learned frequencies, disagree with the preferences and retrain. The safety boundary is readable code, not a hidden prompt. A contributor can improve stationary prompts, accessibility or translations without paying an inference bill.&lt;/p&gt;

&lt;p&gt;A closed API could produce more fluent advice, but another paragraph is not this project's main requirement. For a small nudge away from the screen, understandable behavior, local privacy and an easy exit matter more. MIT licensing extends that control to the implementation, synthetic data and learned parameters.&lt;/p&gt;

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

&lt;p&gt;Built with Strawberry's Pupil Pete AI assistance, including code, synthetic examples, browser adaptation, verification and this initial write-up. No GitHub Copilot coding-agent use is claimed. No DevRelay session was recorded, and no session link has been invented. No outdoor field trial or real-user effectiveness result is claimed.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Best Use of GitHub Copilot, through the challenge's explicitly allowed GitHub Actions automation route.&lt;/strong&gt; The public workflows genuinely train, test, evaluate, check reproducibility, preserve evidence and deploy only after the gates pass. The linked successful runs are the evidence—not a claim that Copilot wrote the app.&lt;/p&gt;

&lt;p&gt;No paid partner service was used. Category consideration and winning are not guaranteed.&lt;/p&gt;

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