This is a submission for the Hacktoberfest Open-Source AI Challenge. Week 1: Touch Grass
What if AI encouraged us to spend less time online and more time experiencing the real world?
That question inspired me to build TouchGrass AI β an AI-powered outdoor mission generator designed to help people take breaks from their screens and reconnect with the world around them.
As students and developers, we can easily spend hours sitting in front of our laptops. Between coding, studying, debugging, and scrolling, sometimes we need a little push to step outside.
Instead of building another AI tool that keeps users engaged with a screen, I wanted to explore a different idea: using AI to help people step away from technology.
TouchGrass AI turns the simple intention of going outside into a personalised, achievable mission.
Users can customise their experience based on:
The application uses these preferences to generate an outdoor mission. Users can then complete the activity and track their progress through the app's gamified experience.
The idea is simple: make taking a break feel less like another task and more like a small adventure.
TouchGrass AI is for students, developers, remote workers, and anyone who spends a lot of time online and wants a gentle reminder to move, explore, and experience life beyond a screen.
My guiding philosophy:
Less screen. More world. π
π Live application:
π₯ Video demonstration:
π» GitHub repository:
AI that gives you a reason to leave the screen.
TouchGrass AI is a local-first outdoor activity companion that uses AI to generate personalized, real-world missions based on your available time, energy, interests, and company.
Instead of keeping users inside another chatbot, TouchGrass AI encourages them to go outside, move, observe, explore, and interact with the physical world.
π Live Demo: https://touchgrass-ai-fq0a.onrender.com
Tell TouchGrass AI:
The AI generates an outdoor mission tailored to your preferences.
Each mission includes:
Quiet Campus Explorer
Turn an ordinary walk into a deliberate exploration by observing environmental details, noticing patterns in nature, and experiencing your surroundingsβ¦
The project is publicly available, and the repository contains the application code and project documentation.
TouchGrass AI evolved from a simple concept into a full-stack application involving frontend development, backend APIs, AI integration, memory experiments, local inference, and cloud deployment.
I used React and Vite to build the user interface, with CSS to create a minimal, nature-inspired visual identity. The interface lets users select their preferences, request a mission, and interact with their progress without demanding constant attention like a productivity dashboard.
The Node.js and Express backend handles requests from the frontend and provides the API layer for mission generation.
The intended workflow is:
Building this flow taught me that an AI application is not just a single prompt; the frontend, backend, model runtime, API configuration, and error handling must all work together.
One of the most educational parts of this project was experimenting with Gemma 3 4B through Ollama. Running the model locally helped me understand how open-weight models can be integrated without relying exclusively on a hosted inference API.
Debugging local model configuration and backend integration errors helped me understand the deeper connection between model runtimes and Express APIs.
I also experimented with Backboard to explore how an AI application could retain useful context about a user. In the backend, I implemented preference-saving functionality that records details such as selected time, energy, interests, and company preferences.
Alongside local Gemma and Ollama experiments, I worked on a Gemini API integration for hosted AI generation and explored Tinker separately for model fine-tuning and evaluation workflows.
I deployed the application using Render, making the project accessible through a public URL. Deployment introduced a great lesson: a site successfully doesn't mean every backend integration works out-of-the-box; AI generation must always be tested end-to-end in production.
For me, open innovation is about having the freedom to experiment, learn, adapt, and build beyond the boundaries of a single closed service. Working with open-source tools and open-weight models provides:
Turn an ordinary walk into a deliberate exploration by observing environmental details, noticing patterns in nature, and experiencing your surroundings without digital distractions.
| Feature | Description |
|---|---|
| Personalised missions | Generate outdoor activities from user-selected preferences. |
| Local AI inference | Run missions locally using Ollama and Gemma 3 4B. |
| Cloud AI generation | Use Gemini through the deployed backend. |
| Memory-powered personalisation | Backboard stores and retrieves outdoor preference memories. |
| Outside Mode | A distraction-free experience designed around completing the mission. |
| Mission history | Review previously generated missions. |
| TouchGrass Score | Earn points for completing missions. |
| Streaks and milestones | Track progress and encourage consistent outdoor activity. |
| Local persistence | Save progress in the browser using localStorage . |
The local setup supports inference on the user's machine after the required model has been downloaded. Mission history and score are stored separately in browser localStorage.
The deployed application uses Gemini for cloud-based mission generation. The local Ollama setup is used for local development and testing; it is not automatically available to the cloud deployment.
| Component | Technology |
|---|---|
| Frontend | React, Vite, CSS |
| Backend | Node.js, Express |
| Local inference | Ollama |
| Local model | Gemma 3 4B |
| Cloud inference | Gemini API |
| Preference memory | Backboard |
| Fine-tuning experiment | Tinker, LoRA |
| Deployment | Render |
| Browser persistence | localStorage |
TouchGrass AI also includes a domain-specific fine-tuning experiment using Tinker.
Qwen/Qwen3.5-4B
touchgrass-v1
The training examples were designed to encourage the behavior required by TouchGrass AI:
A general-purpose model can suggest outdoor activities, but TouchGrass AI has a more specific goal: generate practical missions that encourage users to disconnect from their screens.
The experiment explored whether a small, domain-specific dataset could encourage more consistent adherence to these requirements.
AI should create a reason to leave the screen, not another reason to stay on it.
The fine-tuned model was compared with base-model generations using the same prompts.
In the observed examples, the fine-tuned model showed stronger adherence to some screen-free and outdoor-activity constraints. However, the results were not consistently better across every dimension, including creativity and specificity.
The experiment is preliminary. With only eight training examples and ten training steps, it does not establish a general performance improvement. A larger dataset, repeatable evaluation set, and quantitative measurements would be needed to support stronger conclusions.
The fine-tuned checkpoint is a separate experiment and is not the model currently serving missions in the live application.
TouchGrass AI explores how locally run AI can support a more privacy-conscious, accessible experience.
Ollama provides the local inference tooling, while Gemma 3 is an open-weight model distributed under its applicable license. These are distinct from the separate cloud Gemini integration.
git clone https://github.com/rasikachavan13/-TouchGrass-AI.git
cd -TouchGrass-AI
ollama pull gemma3:4b
Make sure Ollama is running before generating missions locally.
cd backend
npm install
Create a .env file using .env.example as a reference.
Configure the local model and, if desired, your Backboard credentials:
PORT=5000
FRONTEND_URL=http://localhost:5173
OLLAMA_HOST=http://127.0.0.1:11434
OLLAMA_MODEL=gemma3:4b
BACKBOARD_API_KEY=
BACKBOARD_ASSISTANT_ID=
GEMINI_API_KEY=
GEMINI_MODEL=gemini-3.8-flash
Start the backend:
npm start
Open a second terminal:
cd frontend
npm install
Create frontend/.env with:
VITE_API_URL=http://localhost:5000
Start the frontend:
npm run dev
Open the local URL printed by Vite, usually http://localhost:5173.
My project explored open-weight AI through Gemma 3 4B and Ollama, and I used Render to host the application. I will only claim specific partner prize categories if the implementation meets their official requirements.
TouchGrass AI began with a small question: could technology help us become more intentional about using technology itself?
Not every experiment became part of the production application, and not every integration worked on the first try, but those challenges formed the core of the learning process.
What would you build if AI's purpose were to help people reconnect with the real world? Let me know in the comments below! π