This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
What I Built
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 Expedition Loop
The whole product is built around one idea: AI creates the mission, you leave the screen, and you come back with a discovery.
Key features
- ๐ฏ Tailored expeditions: choose duration, difficulty, and interest, and get a fresh mission list
- ๐ง Local AI via Ollama: missions are generated on your own machine, with no cloud AI account needed
- ๐ถ One mission at a time: a focused, phone-light flow with a progress indicator
- ๐ Refresh-proof runs: your active expedition survives an accidental refresh (it lives in the tab's
sessionStorage) - ๐ Review What I Discovered: revisit your completed missions once you're back
- ๐ก๏ธ Safety-aware output: every expedition includes a safety note, and unsafe model output is rejected
- ๐ Private by design: no accounts, no database, no uploads, and closing the tab clears everything
Demo
Youtube demo video : 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.
Code
Shikha18Shukla
/
nature-saathi
An open-source AI companion that turns outdoor walks into fun nature exploration missions.
๐ฟ Nature Saathi
Your phone is the map. The world is the classroom.
An AI-powered outdoor learning companion that turns an ordinary walk into a real-world nature expedition.
Quick Start ยท How It Works ยท API ยท Tests ยท Roadmap
๐งญ What is Nature Saathi?
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.
๐ฑ The screen should be the shortest part of the experience.
๐ฎ The Expedition Loop
โโโโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโโโโโโ
โ 1. PICK โ โโโถ โ 2. READ โ โโโถ โ 3. EXPLOREโ โโโถ โ 4. RETURNโฆThe README covers setup, Ollama configuration, the API, tests, and a roadmap.
How I Built It
The stack
| 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 |
Architecture
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.
Never trust the model
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.
The challenge: local AI isn't always fast
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:
- Increased the Ollama timeout to match real local inference times
- Handled generation failures gracefully, with clear 503/502 errors and friendly messages instead of a broken page
- Kept the loading moment short and calm, since the whole point is that the screen time is brief
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.
Testing
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
I Took Nature Saathi Outside ๐ฟ
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.
Why Does Open Innovation Matter?
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:
-
๐ Privacy is real, not a promise. A nature app for kids and families shouldn't ship their interests to a third party. Because inference happens on the user's machine, nothing leaves it. Combined with no accounts, no database, and a server bound to
127.0.0.1, the privacy story is simple to verify. -
๐ No API key, no signup. The core experience works with just
ollama pull gemma3:4b. That matters for classrooms, community groups, and anyone who can't or won't hand over a credit card. - ๐ธ No per-request cost. A mission generator is the sort of thing people want to run again and again. With local inference, a hundred expeditions cost the same as one: nothing.
-
๐ Swappable models. The model is one environment variable (
OLLAMA_MODEL). If a better open-weight model arrives next month, Nature Saathi can adopt it without rewriting the app. - ๐ฑ No lock-in. The project can keep evolving without depending on one provider's pricing, policies, or availability.
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.
What's Next
- ๐ธ Photo discovery: bring your finding back, identify it with a local vision model, and get interesting facts
- ๐จ๏ธ Printable expedition cards, so you can leave the phone at home entirely
- ๐ณ More themes: trees, insects, clouds, night sky
- ๐จโ๐ฉโ๐ง Group and family expedition mode
- ๐ Multilingual missions (English, เคนเคฟเคจเฅเคฆเฅ, and more)
Contributions and ideas are welcome. Open an issue and say hello!






Top comments (1)
Hey ๐ I am interested in doing a collab project interested I am full stack developer or let say in phase of learning,interested?