Grass Bingo
A daily 4x4 nature bingo card: photograph what you find outside and an on-device open-weight model checks it — no account, no upload.
Project intro
Grass Bingo is a daily 4x4 nature bingo card that gives you a small reason to go for a walk. Everyone gets the same card on the same day, seeded by the date, drawn from 45 outdoor items filtered by season: a pinecone, a red leaf, moss, a snail, a cloud shaped like something. You tap a square, photograph what you found, and an open-weight CLIP model running in your browser decides whether the photo matches. Four in a row is a bingo, and a text-only summary can be shared at the end.
The check never leaves your phone. The model is Xenova/clip-vit-base-patch32, an ONNX export of OpenAI's open-weight CLIP, run with transformers.js on WebAssembly. Instead of asking only whether the photo is the target, the app scores the target label against distractor labels taken from other squares on the card; a photo counts if the target is the top label or scores at least 0.35. Photos are read locally, resized in memory, scored on the device and discarded, and nothing is uploaded or stored except which squares you found, when today's card started, and the season.
The app has no backend and no account. The model downloads once and is cached in the browser, and a small service worker caches the app shell, so after the first visit it keeps working where there is no signal. There are 32 Vitest tests across card generation, bingo lines, the verify decision, storage and the share summary. Vibe-coded evidence, in the author's own words on DEV (10 October 2026): "I built it with Cursor's agent and then checked it myself in headless Chromium." A disclosure on the same post adds: "I used AI assistance (Cursor's agent) to build the code and help draft this post. I tested, reviewed, and edited all of it." GitHub stars: 0 at the 28 October 2026 check.
Honest limits: the first real check takes about 25 to 30 seconds on the author's machine while the model downloads and loads, then about 2 seconds per check; adding ?demo=1 tries the app at a desk, where demo mode accepts any photo and skips the model download, so a demo-mode bingo is not a model verdict. The CLIP verdict is a zero-shot similarity score, not a human identification, and the app is a game, not a nature guide.
Actions
Tech stack
Project info
- Project category
- Entertainment
- Project status
- Online
- Collaboration intent
- None