This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
What I Built
An outdoor-break app has an awkward design problem: if it keeps you tapping, it has failed at getting you away from a screen.
Touch Grass Planner takes three inputs—time, energy and nearby surroundings—and returns one gentle plan. 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.
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.
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.
Demo
Try it: https://parteek-yadav.github.io/touch-grass-planner/
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.
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.
That is software verification, not an outdoor trial. 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.
Code
Public MIT repository: https://github.com/Parteek-yadav/touch-grass-planner
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.
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:
python verify.py
python evaluate.py
How I Built It
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.
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.
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. 112 actual Node/Python comparisons passed: 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.
The complete suite passed 16 unit tests, five CLI scenarios and five loopback HTTP checks. Real GitHub Actions verification and parity-gated deployment both succeeded:
- Verification: https://github.com/Parteek-yadav/touch-grass-planner/actions/runs/38039114209
- Deployment: https://github.com/Parteek-yadav/touch-grass-planner/actions/runs/38039114195
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.
What the numbers do—and do not—mean
All 81 training rows are hand-authored synthetic preference votes. Three votes per context express a design preference, not independent human observations.
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, not real-world accuracy, safety or usefulness.
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.
Why Does Open Innovation Matter?
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.
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.
My Agent Session
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.
Prize Categories
Best Use of GitHub Copilot, through the challenge's explicitly allowed GitHub Actions automation route. 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.
No paid partner service was used. Category consideration and winning are not guaranteed.
Top comments (0)