Nature Saathi: An AI Companion That Sends You Outside A developer built Nature Saathi, an open-source AI outdoor learning companion that uses a locally run Gemma 3 4B model via Ollama to generate custom nature expeditions based on a user's available time, difficulty preference, and curiosity. The Flask-backed app returns structured missions with tasks, observation cues, learning notes, and safety notes, and includes a validation layer that blocks malformed, incomplete, or unsafe model output before it reaches the page. This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass https://dev.to/challenges/hacktoberfest-week1-2026-10-05 We keep using our phones to learn about the world instead of looking at the world around us. We'll open an app to identify a bird while the bird is sitting ten feet away, ignored. So I asked myself: what if AI didn't give us another reason to stare at a screen? Nature Saathi is an AI-powered outdoor learning companion that turns an ordinary walk into a real-world nature expedition. Saathi ΰ€Έΰ€Ύΰ€₯ΰ₯€ means "companion" in Hindi. Most apps want your eyes on the screen. Nature Saathi wants them on the sky, the soil, and the sparrow on the wall. You tell it three things: how much time you have, how adventurous you feel, and what you're curious about leaves, birds, and so on . A local AI model writes a custom expedition just for you. You read one mission, put the phone away , go explore, come back, and tap complete. πŸ“± The screen should be the shortest part of the experience. Who is it for? Curious kids, families, students, and anyone who wants a nudge to notice the world. It also suits anyone who has caught themselves "going for a walk" while scrolling. The whole product is built around one idea: AI creates the mission, you leave the screen, and you come back with a discovery. sessionStorage Youtube demo video : https://youtu.be/5P2vqBBz-FI https://youtu.be/5P2vqBBz-FI Expedition setup : choosing time, difficulty, and an interest like 🌿 Leaves Mission generation : Gemma writes the outdoor challenge Active expedition : the key moment. The app literally tells you to put your phone away. An AI-powered outdoor learning companion that turns an ordinary walk into a real-world nature expedition. Quick Start https://github.com/Shikha18Shukla/nature-saathi -quick-start Β· How It Works https://github.com/Shikha18Shukla/nature-saathi -how-it-works Β· API https://github.com/Shikha18Shukla/nature-saathi -mission-generation-api Β· Tests https://github.com/Shikha18Shukla/nature-saathi -tests Β· Roadmap https://github.com/Shikha18Shukla/nature-saathi -roadmap Saathi ΰ€Έΰ€Ύΰ€₯ΰ₯€ means companion . Most apps want your eyes on the screen. Nature Saathi wants them on the sky, the soil, and the sparrow on the wall . Pick how long you have, how adventurous you feel, and what you're curious about. A local AI model writes a custom expedition for you. You read one mission, put the phone away, go explore, come back , and tap complete. β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ 1. PICK β”‚ ──▢ β”‚ 2. READ β”‚ ──▢ β”‚ 3. EXPLOREβ”‚ ──▢ β”‚ 4. RETURN … The README covers setup, Ollama configuration, the API, tests, and a roadmap. | Layer | Tech | |---|---| | Frontend | HTML, CSS, vanilla JavaScript | | Backend | Python, Flask | | AI | Ollama running Gemma 3 4B locally | | Tests | Python unittest + a Node test for frontend logic | Nature Saathi β”‚ Browser / UI β”‚ Flask β”‚ Mission Service β”‚ Ollama β”‚ Gemma 3 4B β”‚ Generated Mission β”‚ Browser The browser sends your choices to a single endpoint: POST /api/missions/generate { "duration minutes": 45, "difficulty": "Explorer", "interest": "Birds" } Flask hands the request to a mission service , which fills a prompt template and asks Gemma through Ollama for an expedition. The response contains a title, theme, intro, a safety note, and a list of missions. Each mission has a task , an observation cue what to look, listen, or feel for , a learning note the "aha" fact , and an evidence type . The part I'm proudest of is the validation layer. The mission service checks everything the model returns. Malformed, incomplete, or unsafe output never reaches the page. Errors always share one shape, so the frontend can respond predictably: { "error": { "code": "...", "message": "..." } } | Status | Meaning | |---|---| | 400 | Invalid request | | 503 | Ollama is unavailable | | 502 | Model output was malformed, incomplete, or unsafe | When your product tells people to walk outside, "the AI said so" isn't good enough. Every expedition has to carry a safety note. I'll be honest: running a model locally is slower than calling a hosted API. My first Gemma generations took significantly longer than a typical API call, and the default timeouts failed before the model finished. So I: That trade-off shaped the design. Because generation takes a moment, Nature Saathi generates the whole expedition once , up front. Then you put the phone away and never wait on the AI mid-walk. The test suite is deliberately dependency-light: python -m unittest discover -s tests -v mission service checks node tests/test frontend render.js navigation, progress, refresh recovery, bad data The mission I got: Find different types of flowers around you Where I went: A park near my hostel. What happened: I chose 45 minutes and flowers , and Nature Saathi gave me five field notes: Color Spectrum , Shape Seekers , Silent Observation , Flower Count , and Floral Sounds .I took it to a park near my hostel, and my friend came along. We did the flower activity together. There were so many flowers: yellow, pink, purple, and white, plus some wild flowers growing on their own. I expected to find a few flowers. I didn't expect how much beauty I had been walking past. The best part wasn't only the flowers. Once we stopped and really looked, we saw butterflies, honeybees, and other tiny insects moving from flower to flower. We also noticed how strong and different the fragrance was from each one. While completing the missions, I felt calm. Doing it with a friend made it even better, because we kept pointing things out to each other. I loved this experience, and we both enjoyed it a lot. Nature Saathi uses Ollama to run Gemma 3 locally instead of sending every interaction to a hosted AI API. For this particular project, that open approach was better than a closed one in several ways: 127.0.0.1 , the privacy story is simple to verify. ollama pull gemma3:4b . That matters for classrooms, community groups, and anyone who can't or won't hand over a credit card. OLLAMA MODEL . If a better open-weight model arrives next month, Nature Saathi can adopt it without rewriting the app. There's also a philosophical fit. An app about noticing the world around you is stronger when the technology behind it is something you can inspect, run, and change yourself. Contributions and ideas are welcome. Open an issue and say hello