DEV Community

Cover image for WILDLOG
Shreya C H
Shreya C H

Posted on

WILDLOG

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

What I Built

WildLog is a pocket field journal for walks. You photograph a plant, tree, bird or insect, and a local Gemma model tells you what it is and gives you one short fact. It can read the answer aloud so you can look up instead of down. You add a note about where you were, and it saves to a journal on your device. There's also a daily "find three things" quest, to give a walk a reason.

The idea came from going outside to test it. What grabbed me wasn't the app, it was the ferns.

That's what the app is for: take one photo, learn one thing, put the phone away. It's for anyone who walks past plants every day without knowing what they are, like me.

Demo

Live demo: https://wildlog.onrender.com

The hosted version is a demo mode. It shows photos and answers recorded during my tests, because the real identification runs on my laptop (more on that below).
SCREENSHOT 1
SCREENSHOT 2

Code

How I Built It

  • Model: gemma3:4b, an open-weight model, running locally through Ollama on a laptop with no GPU. I use its image understanding to identify what's in the photo.
  • Backend: Express, which takes the photo and sends it to Ollama. It asks for a JSON answer with a name, one fact and a confidence level.
  • Frontend: React with Vite. The browser shrinks each photo to about 800px and converts it to JPEG before upload, which keeps identification at about 3 to 4 seconds on CPU.
  • Journal: entries are stored in the browser's local storage, so there's no account and no database.
  • Read-aloud: the browser's built-in speech voice.
  • Hosting: the demo is a static site on Render.

What I tested, including where it failed

I took it outside and photographed real things:

What it was What Gemma said Confidence Time Result
Mango tree Mango tree high 3.2s Correct
Holy basil Holy basil (Tulsi) high 2.8s Correct
Fern Boston fern medium 4.1s [Correct / partly right / wrong: check the species first]
Concrete wall (first prompt) Grey rock high 20.1s Wrong
Same wall (fixed prompt) Stone wall [confidence] [time] Correct

The wall is my favourite result. My first prompt told the model to identify a plant, tree or bird, and gave it no way to say "this is none of those", so it named a rock with high confidence. I changed the prompt so it could say when a photo wasn't a plant or animal, and to name the broader group when it wasn't sure of the species. After that it answered "stone wall", which was right.

Two things I learned:

  1. The model's confidence isn't a measure of whether it's right. It said "high" for a wrong answer and only "medium" for the fern.
  2. Exact species is hard. A 4B model can often tell you the group from one photo, but not always the species. Ferns are a good example.

Where Render fits, honestly

I wrote a Docker setup to run Gemma on a Render private service, but I didn't deploy it. A service big enough for the model needs a payment card on file, and I chose not to add one. So the Render site is a front-end demo, and I'm not claiming live inference there.

Why Does Open Innovation Matter?

  • It runs offline on a CPU-only laptop. For something you use on a trail with no signal, that's the whole point.
  • My photos stay on my own network. The phone is just the camera, and the laptop does the thinking. Nothing goes to someone else's server.
  • It costs nothing to run. No API key and no per-photo fee.
  • I could change its behaviour myself. When the model confidently called a wall a rock, I fixed it by rewriting the prompt that controls it, and I could swap the model or tune it further if I wanted.

A closed API could have identified more species more accurately, but it would have needed internet, an account and a bill, which is the opposite of what a "touch grass" tool should require.

Prize Categories

  • Best Use of Gemma: the app is built around gemma3:4b running locally through Ollama, including its image understanding.
  • Best Use of Render: the demo is hosted as a static site on Render, and the repo includes a Docker setup for running Ollama on a Render private service (written but not deployed).

Top comments (0)