{"slug": "nature-saathi-an-ai-companion-that-sends-you-outside", "title": "Nature Saathi: An AI Companion That Sends You Outside", "summary": "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.", "body_md": "*This is a submission for the [Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass](https://dev.to/challenges/hacktoberfest-week1-2026-10-05)*\n\nWe 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.\n\nSo I asked myself: **what if AI didn't give us another reason to stare at a screen?**\n\n**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.\n\nYou 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.\n\n📱 **The screen should be the shortest part of the experience.**\n\n**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.\n\nThe whole product is built around one idea: AI creates the mission, you leave the screen, and you come back with a discovery.\n\n`sessionStorage`)\n**Youtube demo video** : [https://youtu.be/5P2vqBBz-FI](https://youtu.be/5P2vqBBz-FI)\n\n**Expedition setup**: choosing time, difficulty, and an interest like 🌿 Leaves\n\n**Mission generation**: Gemma writes the outdoor challenge\n\n**Active expedition**: the key moment. The app literally tells you to put your phone away.\n\n**An AI-powered outdoor learning companion that turns an ordinary walk into a real-world nature expedition.**\n\n[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)\n\n*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**.\n\nPick 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.\n\n```\n   ┌───────────┐     ┌───────────┐     ┌───────────┐     ┌───────────┐\n   │  1. PICK  │ ──▶ │  2. READ  │ ──▶ │ 3. EXPLORE│ ──▶ │ 4. RETURN\n```\n\n…\nThe README covers setup, Ollama configuration, the API, tests, and a roadmap.\n\n| Layer | Tech | \n|---|---|\n| Frontend | HTML, CSS, vanilla JavaScript | \n| Backend | Python, Flask | \n| AI | **Ollama** running**Gemma 3 4B** locally | \n| Tests | Python `unittest` + a Node test for frontend logic | \n\n```\n        Nature Saathi\n             │\n      Browser / UI\n             │\n          Flask\n             │\n     Mission Service\n             │\n          Ollama\n             │\n        Gemma 3 4B\n             │\n     Generated Mission\n             │\n          Browser\n```\n\nThe browser sends your choices to a single endpoint:\n\n```\nPOST /api/missions/generate\n{\n  \"duration_minutes\": 45,\n  \"difficulty\": \"Explorer\",\n  \"interest\": \"Birds\"\n}\n```\n\nFlask 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`.\n\nThe 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:\n\n```\n{ \"error\": { \"code\": \"...\", \"message\": \"...\" } }\n```\n\n| Status | Meaning | \n|---|---|\n| 400 | Invalid request | \n| 503 | Ollama is unavailable | \n| 502 | Model output was malformed, incomplete, or unsafe | \n\nWhen your product tells people to walk outside, \"the AI said so\" isn't good enough. Every expedition has to carry a safety note.\n\nI'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.\n\nSo I:\n\nThat 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.\n\nThe test suite is deliberately dependency-light:\n\n```\npython -m unittest discover -s tests -v   # mission service checks\nnode tests/test_frontend_render.js        # navigation, progress, refresh recovery, bad data\n```\n\n**The mission I got:**  Find different types of flowers around you\n\n**Where I went:** A park near my hostel.\n\n**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.\n\nThere 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.\n\nThe 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.\n\nWhile completing the missions, I felt calm. Doing it with a friend made it even better, because we kept pointing things out to each other.\n\nI loved this experience, and we both enjoyed it a lot.\n\nNature 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:\n\n`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.\nThere'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.\n\nContributions and ideas are welcome. Open an issue and say hello!", "url": "https://wpnews.pro/news/nature-saathi-an-ai-companion-that-sends-you-outside", "canonical_source": "https://dev.to/shikha_shukla_2469c41a94e/nature-saathi-an-ai-companion-that-sends-you-outside-3e80", "published_at": "2026-10-07 16:37:49+00:00", "updated_at": "2026-10-07 16:47:20.335569+00:00", "lang": "en", "topics": ["artificial-intelligence", "large-language-models", "generative-ai", "ai-tools", "developer-tools"], "entities": ["Nature Saathi", "Ollama", "Gemma 3 4B", "Flask", "Hacktoberfest", "Shikha18Shukla"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/nature-saathi-an-ai-companion-that-sends-you-outside", "markdown": "https://wpnews.pro/news/nature-saathi-an-ai-companion-that-sends-you-outside.md", "text": "https://wpnews.pro/news/nature-saathi-an-ai-companion-that-sends-you-outside.txt", "jsonld": "https://wpnews.pro/news/nature-saathi-an-ai-companion-that-sends-you-outside.jsonld"}}