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

What I Built

Walk Bingo creates a printable nature bingo card for your next walk!

You pick where you go (park, woods, countryside, beach, etc), how long you've got and who's coming. Just you, kids, dog or friends. Gemma, running on my own computer, makes a card of things to find on that walk, matched to the season. It's 3x3. Now in October. So that means things like conkers or a robin singing or the smell of wet leaves or a single leaf that’s red and yellow.

The middle square is always free: **you went out.

Then you tap Print, put your phone away, and head out. The theme said the best projects keep the screen the smallest part of the experience. I tried to make the screen part about ten seconds long. The rest is done with a piece of paper and a pen.

A few touches –

  • It mixes the senses, so there's always something to hear, something to smell and something to touch, not just things to look at. That's what actually makes you slow down.
  • Each card has a "slow down" challenge, like standing still for a minute and counting the different sounds.
  • If you type in your town, it looks up today's weather and sunset time, and adds a "before you go" tip, e.g. "light rain and sunset at 18:31, so take a coat and head back by six."
  • The squares adapt to who's coming. With kids it keeps things simple and safe, and with the dog there's a square or two the dog can help with.
  • It never asks you to pick wild flowers, disturb animals or eat anything.

Demo

Code

GitHub logo Segeco / walk-bingo

Walk Bingo: a local AI that gives you a reason to leave your phone in your pocket

One Python file using only the standard library, plus Ollama. No pip installs, no accounts, no API keys.

How I Built It

The model: Google's open-weight Gemma 3 (4B), running locally through Ollama. It's small enough to run on an ordinary PC and good at short, friendly writing, which is all a bingo card needs.

The app: a small Python web server (standard library http.server) serving one page: four dropdowns, a button, and the card. There's a print stylesheet that hides everything except the card, so it prints as a clean sheet.

Getting a reliable card out of a small model:

  • I use Ollama's JSON mode ("format": "json") and give Gemma the exact shape I want: a title, 8 squares each with a short "thing" and a one-line hint, a slow-down challenge and a tip. The app checks the answer, keeps exactly 8 squares, and strips any stray markdown. If Gemma ever returns a broken card, you get a friendly "press the button again" instead of a crash.
  • The free middle square is added by the app, not the model, so Gemma only has to come up with 8 things, and the card always looks right.
  • The prompt asks for a mix of difficulty (3 easy, 3 medium, 2 that need a sharp eye), so kids get early wins but there's still something to hunt for at the end.
  • The app works out the season from today's date and tells Gemma, so you don't get bluebells in October.
  • I turned the temperature up and use a random seed, so "Make another card" gives you a genuinely different card each time. Same park, new walk.

Weather: if you type a town, the app gets today's conditions and sunset time from Open-Meteo, which is free and needs no API key, and passes them to Gemma. It's optional, and if you're offline it just skips it.

Why Does Open Innovation Matter?

It works without the internet. Once Gemma is downloaded, card-making runs completely offline. The weather lookup is the only online bit, and it's optional. Fittingly for a project about getting outside, it doesn't care if your Wi-Fi's down.

It costs nothing. No API key, no subscription, no per-request bill. You can press "Make another card" twenty times until you get one you like, and it costs nothing. That matters for something a family might use every weekend.

It's private by default. Your walking habits, where you live and when you go out are nobody's business. Nothing leaves your computer except, optionally, a town name for the weather.

I can change how it behaves. The whole personality of the card is a prompt I control, running on a model I can swap with one line. On a stronger PC, gemma3:12b gives richer cards. If I wanted a version for a specific country, or one that only ever talks about birds, I can change it without asking anyone's permission or worrying about an API being deprecated.

Where closed would have been "better": a big hosted model would probably know more obscure species and write slightly snappier hints. But nobody on a walk needs an obscure species. They need eight good reasons to look up, and a 4B model running on a home PC does that well.

Prize Categories

  • Best Use of Gemma