cd /news/ai-tools/fieldcards-a-local-gemma-turns-your-… · home › topics › ai-tools › article
[ARTICLE · art-149048] src=dev.to ↗ pub= topic=ai-tools verified=true sentiment=↑ positive

fieldcards: a local Gemma turns your photos into a printed scavenger hunt

A developer built fieldcards, an open-source command-line tool that uses Gemma 3 running locally via Ollama to turn a folder of photos into a printed scavenger hunt. The tool analyzes each image, generates a riddle-style clue that avoids naming the subject, and renders it as an ASCII card on a print-ready sheet, with a --mode guide option producing a pocket field guide instead. A test run on a brewery photo took about 7 seconds, and the tool writes index.html, cards.txt and deck.json so clues can be edited and reprinted without re-running the model.

by read4 min views1 publishedOct 11, 2026

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

fieldcards is a command-line tool that turns the photos on your laptop into a printed scavenger hunt.

You point it at a folder of photos from a park, a garden or a trail. Gemma 3, running locally through Ollama, looks at each one, works out the most findable thing in it, and writes a clue that doesn't name it. Each clue is drawn as a printed ASCII card. You print the sheet, leave your phone at home, and go find the real things.

The screen is the shortest part: about two minutes to make the sheet, then the rest of the afternoon outside.

+-[ #05 other ]----------------+
|                              |
|    Find a dark, weathered    |
|    giant resting beside a    |
|   rushing, silver stream.    |
|                              |
+------------------------------+
- Green moss covering its
  surface
- Dark, grey wood
- A smooth, water-worn edge
Where: Typically found in damp,
       shaded forest streams.
[ ] found it   time: ______

That card is real gemma3:4b output for a photo of a mossy log lying across a forest waterfall.

It's one command:

ollama pull gemma3:4b
npm install -g github:KunalSiyag/fieldcards
fieldcards ./photos --title "Saturday in the park"

Here's a real run in my terminal. --stdout prints the cards right there, and progress goes to stderr, so fieldcards ./photos --stdout | lp sends them straight to a printer:

Every run writes three files:

index.html: a print-ready sheet, six cards per page, with the answer key on its own page.cards.txt: the same cards as plain text. --cols 32 fits a 58 mm receipt printer.deck.json: everything Gemma said. Fix any mistakes, then reprint with --from without running the model again. --mode guide turns the same photos into a pocket field guide, with names and descriptions instead of riddles.

The run above used the only photo of my own I had on hand while writing this: the bar counter of a brewery I visited recently, taken from the floor above. It isn't an outdoor scene, but it shows the whole pipeline on a real, busy photo.

Gemma took 7 seconds and called it "round, reflective surfaces", with the clue "Find something that mirrors the light and reflects the surroundings around you." That's fair for such a busy scene, but it isn't what I'd want on a card. It's exactly the case deck.json is for: change the subject to "Oval bar counter", run fieldcards --from fieldcards-out/deck.json, and the sheet reprints without calling the model again.

Turn your outdoor photos into a printable scavenger hunt, with an open-weight model running on your own computer.

Each photo goes to Gemma 3, running locally through Ollama. Gemma works out what the photo shows and writes a clue for finding it that doesn't name it. altsvg then replaces every photo with a printed ASCII card holding that clue, the way altsvg turns alt text into a placeholder. You print the sheet, leave your phone at home, and go find the real things.

+-[ #05 other ]----------------+
|                              |
|    Find a dark, weathered    |
|    giant resting beside a    |
|   rushing, silver stream.    |
|                              |
+------------------------------+
- Green moss covering its
  surface
- Dark, grey wood
- A smooth, water-worn edge
Where: Typically found in damp,
       shaded forest streams.
[ ] found it   time: ______

That card came from a real gemma3:4b run on…

POST /api/chat on the local Ollama server, together with a JSON schema in format. Gemma has to answer with subject, category, description, clue, look_for, where and confidence, so a chatty reply can't break the layout.+--[ #01 other ]--+ frame, both as SVG for the printed page and as plain text for the terminal and Photos that were already described are matched by content hash and skipped on reruns, so you can add photos to the folder and run it again.

The prompt took three tries, and two of them taught me something:

On my test photos Gemma reliably recognised common things: a dandelion clock, a maple leaf, a waterfall. Its clues don't give the answer away. It was weaker on specifics: a crow came back as "a sleek, dark bird", a soft pine pollen cone was described as "woody", and the brewery became "round, reflective surfaces". Its self-rated confidence is only a rough signal; it rated all three of those "high". That's why every answer lands in deck.json for you to check before printing, and why every sheet says "look, don't pick".

localhost.--model takes any vision model Ollama can run, and the JSON schema keeps the output the same shape. On my laptop (RTX 3050, 4 GB), the first photo takes about two minutes because it also loads the model. Each photo after that takes 7 to 13 seconds, using about 2.9 GB of GPU memory.

I haven't taken a printed hunt outside yet. That's the next step, and it's the test the whole design depends on. When I do, I want to find out:

I'll add an update to this post with photos of the sheet in use.

Best Use of Gemma. Gemma 3 4B is the core of the project. It reads every photo locally and writes the card content through a JSON schema.

--art mode, which also prints the photo itself in characters.

── more in #ai-tools 4 stories · sorted by recency
── more on @gemma 3 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/fieldcards-a-local-g…] indexed:0 read:4min 2026-10-11 · —