DEV Community

Sergi Villagrasa
Sergi Villagrasa

Posted on

SnapHunt: Let AI Host the Game. Go Outside and Play.

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

SnapHunt is a real-world multiplayer scavenger hunt where your surroundings become the game board.

Gather some friends, secretly photograph nearby objects, and let an AI moderator turn them into clues. Then stop looking at the screen and start looking around.

When you think you've found your target, take a photo. The AI compares it with the original: finding another object of the same kind isn't enough—you're hunting for that particular object.

A successful discovery can unlock a generated visual clue for another target, putting you in a race against its original hunter. Find it first, and you can eliminate your rival from the round.

The idea is simple: AI handles the clues and photo comparisons so everyone gets to play. Nobody has to sit out to prepare the hunt or act as referee.

And yes, your host is a cheerful pug.

Game Starts

Image Clue

Demo

Please try the actual game

Play SnapHunt →

This is the playable application, not just a landing page or a recorded walkthrough. I'd especially love judges to try a round: the experience makes more sense when you're searching for something a friend secretly photographed.

What you need: 2–6 people in the same physical area, one phone each, and an internet connection. No account registration or API keys are needed to play.

For a quick judging session:

  1. Open SnapHunt on your phones.
  2. One person selects Create a room, enters a nickname, and chooses the 10-minute option.
  3. Everyone else selects Join with a code and enters the host's room code.
  4. Each player secretly photographs a different nearby object. Keep it accessible and leave it where it is.
  5. Once everyone's target is accepted, the host starts the game.
  6. Listen to your clue, search the area, and photograph the object you think matches.
  7. Watch the score update after an accepted discovery—and, with enough players, follow the visual clues into a race for another target.

Two players are enough to try the basic hunt; three or more are recommended to experience the competitive visual-clue mechanic. Allow camera access and turn up your volume for the voice clues. Clue text is also displayed.

Please play somewhere safe, respect other people's privacy, and don't enter restricted areas to chase an object.

Watch the video

Watch the SnapHunt video demo →

Watch the video for a preview, then try the live game with your own objects and surroundings.

End of Game

What I tested

I first tested SnapHunt with three people at home, using common household objects.

We also tried a real case outdoors with some objects, to check that the hunt works beyond the living room: photographing targets outside, listening to the clues, and walking around to find and capture them.

That's the experience I want to encourage for the Touch Grass theme: listen to a clue, put the phone down, explore your surroundings, and return to the screen to capture your discovery. The phone is a tool for the hunt, not the place where the hunt happens.

Code

View the source on GitHub →

SnapHunt is a TypeScript monorepo with a Next.js frontend, an Express API, and shared packages for game rules, contracts, and infrastructure.

How I Built It

The AI is central to the game, but it doesn't get unrestricted control over the rules.

  • Qwen3.8-27B through Nebius is the default vision model for understanding target photos, writing clues, and comparing a discovery photo with its reference.
  • Mastra provides the agent integration and structured responses.
  • ElevenLabs turns written clues into speech, so players can listen and return their attention to the physical world.
  • fal.ai transforms target photos into indirect visual hints, creating a second way to hunt rather than merely decorating the interface.
  • PostgreSQL and Supabase Storage hold game state and photographs.
  • Server-Sent Events keep players updated as the round progresses.

SnapHunt architecture: phones talk to an Express API; core game rules call adapters for the Mastra vision agent, ElevenLabs, fal, Drizzle/PostgreSQL and Supabase Storage, and push live room state over SSE

The backend owns assignments, scoring, elimination, and whether a target can still be claimed. The model supplies structured evidence; the application applies the rules.

Original target photos are not handed to other hunters as clues. Service credentials stay on the backend.

Why Does Open Innovation Matter?

SnapHunt's central mechanic relies on an open-weight vision model and an open-source agent framework—not just a proprietary API added around the edges.

Keeping the model integration separate from the game rules matters. I can change the vision provider without rewriting how rooms, assignments, scores, or eliminations work. Gemma is also available as a configurable alternative.

That separation makes the project easier to inspect and extend. Someone can experiment with different models or clue styles while keeping the same multiplayer game.

Open-weight does not mean this deployment runs offline or costs nothing. The live demo uses hosted inference and complementary services. The benefit here is keeping the core understandable and replaceable, rather than tying the entire game to one model.

Prize Categories

  • Best Use of ElevenLabs: spoken clues make voice part of the gameplay, helping players look away from their screens.
  • Best Use of Mastra: the vision integration uses Mastra over an open-weight model for target understanding, clue generation, and photo comparison.

Built with AI coding assistance; this write-up was also drafted with AI assistance.

Top comments (0)