DEV Community

Vaidehi
Vaidehi

Posted on AI-assisted

Trail Journal: an offline nature walk companion built on Gemma

Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass Submission 🌿

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass

What I Built

Trail Journal is a small two-script tool that puts the screen at the start and end of a walk instead of the middle.

  1. Before the walk, hunt.py asks a local Gemma model for a short scavenger hunt that fits my place, weather and walk length.
  2. During the walk, the laptop stays at home. I carry only my phone, take photos of what I find, and otherwise keep it in my pocket.
  3. After the walk, journal.py sends the photos to a vision-capable Gemma model, which describes each one and writes a short nature journal entry as a Markdown file.

It's for anyone who wants a reason to step outside and a small keepsake afterwards. You don't need to be a nature expert, and you don't need an internet connection once it's set up.

Demo

I generated a hunt for a street in Pune, India, then went for a 30-minute evening walk with a short list of things to photograph: a flower, a tree, a leaf and something blue. I heard crows and horns and saw lots of pink flowers. Back at my desk, I ran the journal on the four photos.

PowerShell window showing the scavenger hunt generated by Gemma for a street in Pune
The hunt Gemma generated locally for a street in Pune.

Journal output next to my photo of a pink flower held in my hand
The journal entry next to my flower photo. The model guessed chrysanthemum, which looks right.

Journal output next to my photo of a tall tree with long narrow leaves
The model called this tree a neem, but it looks closer to eucalyptus to me.

The walk left me relaxed, peaceful and calm, which is exactly what I hoped a "touch grass" project would do. The tool did its work before and after, and the walk itself was just me, my phone in my pocket, and the street.

Code

https://github.com/VaidehiThaware/trail-journal

How I Built It

  • Model: Gemma 3 (4B), an open-weight model with vision support, run locally through Ollama.
  • Glue: two small Python scripts using the ollama client library. hunt.py builds a prompt from the place, weather and duration. journal.py works in two stages: first it asks the model to describe each photo with a confidence level, then it writes a short entry from those descriptions and my own notes.
  • Tools: I used an AI assistant (Claude) to help write the scripts and draft this post. I ran, tested and debugged everything myself on my own laptop.

My first runs had problems, and I fixed each one by tightening the prompts:

  • The hunt assumed autumn leaves in India, left a [Name of Park] placeholder, and asked me to record a sound for a photo-based journal. I rewrote the rules and the output improved.
  • The journal invented a date, made up species names, and added smells I never mentioned. I banned new species names, added rules against inventing details, and lowered the temperature to 0.2 and 0.3.
  • A safety slip: one hunt told me to "close your eyes" and listen next to traffic. I ignored it and listened with my eyes open, away from the road edge. A tool like this shouldn't be trusted blindly.

How well did it work?

I checked each description against my own photos:

Photo What the model said Verdict
Pink flower Chrysanthemum with layered petals Looks right
Tree Neem Probably wrong (long narrow leaves, looks closer to eucalyptus)
Blue car Blue hatchback, white SUV behind it Right
Leaf Guava with serrated edges Wrong (the edges are smooth, species doubtful)

It got 2 of 4 right. It was reliable on colors, objects and the overall scene, and weak on precise plant species. It also ignored part of my notes: it wrote that it saw no other plants or animals, even though I'd mentioned crows and lots of flowers.

So a 4B model is a companion that describes and suggests, not an expert. The README warns never to eat or touch anything based on its output.

Why Does Open Innovation Matter?

  • My photos and location stay on my laptop. Nothing is uploaded, and there's no account or API key. For a tool that looks at the streets near my home, that matters to me.
  • It costs nothing to run. That let me rerun and rewrite the prompts as many times as I liked while fixing the problems above. Doing that against a paid API would have made me hesitate.
  • I can change the model. Both scripts take a --model flag, so a bigger or more accurate open model is a one-word change as better ones come out.
  • It works without signal once set up. After the one-time model download nothing needs the internet, which suits walks where coverage is poor.

I'm not claiming open beats closed on accuracy. A larger closed model might well name the tree correctly. What the open route gave me was privacy, control and zero cost, and for a hobby tool I think that's the better trade.

What I'd Do Next

  • Mark every species guess as "unverified" by default.
  • Pair Gemma with a small local plant-ID model for species, and let Gemma only write the journal.
  • Add a voice-note option, so I can say what I heard instead of typing it.

Prize Categories

  • Best Use of Gemma: Gemma 3 4B runs locally through Ollama for both the text and the vision parts of the project.

Top comments (0)