This is a submission for Weekend Challenge: Dog Days Edition
What if your dog's normal walk wasn't just a walk?
What if it was a tiny adventure?
That's the idea behind Sniffari β an AI-powered scavenger hunt that turns everyday dog walks into personalized missions, real-world discoveries, collectible paw stamps, and a narrated adventure story told from the dog's point of view.
Sniffari = Sniff + Safari. ππΏ
πΎ Create a dog.
πΊοΈ Go on an adventure.
πΈ Prove your discoveries.
πΎ Collect paw stamps.
π Let your dog tell the story.
What I Built
I built Sniffari, a mobile-first web experience designed to make an ordinary dog walk feel like a tiny AI-powered expedition.
Instead of simply telling someone:
Take your dog for a walk.
Sniffari gives the dog a personalized set of real-world missions such as:
- π³ Investigate a big tree
- π Discover something yellow
- πΈ Find a flower
- πͺ Locate a park bench
- π¨ Find something bright red
- π Take a victory photo
But the missions aren't hardcoded.
Google Gemini generates the adventure dynamically based on the dog's:
- Name
- Energy level
- Personality
- Walk duration
Then the owner takes or uploads a real photo to prove each mission.
Gemini examines the image and decides whether the discovery actually satisfies the mission.
If it does:
πΎ PAW APPROVED
The dog earns a collectible stamp.
If it doesn't:
πΎ NOT QUITE YET
Gemini explains what it actually saw and lets the player try again.
After all five missions are completed, Gemini turns the verified discoveries into an Adventure Report written from the dog's point of view.
Finally, ElevenLabs gives the dog a voice, turning that report into expressive narration.
Demo
π₯ Watch the Full Demo
The video below shows one complete Sniffari adventure with Mochi β from creating a dog passport to Gemini validating real photos and ElevenLabs narrating the final story.
π Try Sniffari
π Launch Sniffari
No account is required.
Create a dog passport, generate an adventure, and start collecting paw stamps.
πΎ The Sniffari Journey
The complete experience follows one simple loop:
Create β Explore β Prove β Collect β Report β Listen
πΆ 01 β Create a Dog Passport
Every Sniffari begins with a small adventure passport.
The owner enters the dog's name and chooses:
- πΆ Dog name
- π· Optional photo
- β‘ Energy level
- π Personality
- β±οΈ Walk duration
For example:
Mochi
β‘ Playful
π₯ Chaos
β±οΈ 20-minute walk
The app also includes quick demo profiles such as:
- β‘ Mochi β Chaos
- π Luna β Princess
- π Waffles β Foodie
The personality isn't only decorative.
Gemini uses it when generating missions, writing mission verdicts, and creating the final story.
πΈ Create Dog Passport
Creating Mochi's passport before Gemini builds the adventure.
β
π§ 02 β Gemini Creates the Adventure
Sniffari sends the dog's profile to Gemini.
Gemini generates exactly five personalized missions that can realistically be completed during the selected walk duration.
A mission might look like:
π¨ The Shiny Red Target of Chaos
Find a bright red object worthy of Mochi's inspection.
Or:
πͺ The Throne of Unspeakable Mayhem
Locate a park or street bench.
Each mission contains:
- π― Mission title
- π Description
- π‘ Hint
- π Visual validation criteria
That final piece is important.
The validation criteria is later sent back to Gemini when the player submits a photo.
So Gemini isn't simply describing an image.
It knows what the player was supposed to find.
β
πΈ 03 β Prove the Mission
The player chooses a mission and takes or uploads a real photograph.
Sniffari sends Gemini:
π· The uploaded image
π― The current mission
β What counts as success
πΆ Dog name
π Dog personality
Gemini then examines the photograph using multimodal image understanding.
Now the adventure can go in two directions.
β Path A β PAW APPROVED
Imagine Mochi receives this mission:
π¨ The Shiny Red Target of Chaos
Find a bright red object.
The player uploads a photograph showing Mochi next to a bright red fire hydrant.
Gemini analyzes the photo and decides that the mission requirement has been satisfied.
πΎ PAW APPROVED
Mission Completed!
πΈ Successful Validation
Gemini recognized the red fire hydrant and approved Mochi's mission.
Instead of returning only true or false, Gemini also provides structured evidence.
For example:
β¨ What Google Gemini Noticed
β Small dog on leash
β Bright red fire hydrant
β Artificial grass
β Mochi standing beside the hydrant
β Mission requirement satisfied
Sniffari also shows Gemini's confidence score.
For example:
Confidence: 72%
I wanted this information to be visible because it makes the AI interaction transparent.
The player β and the challenge judges β can actually see why Gemini made its decision.
Gemini also responds using the dog's personality.
Because Mochi has the Chaos personality:
"This red giant is clearly my new kingdom to conquer. Prepare for immediate chaos!"
The player can then press:
πΎ Collect Paw Stamp β
And the mission becomes part of Mochi's completed passport.
β Path B β NOT QUITE YET
Gemini can reject a mission too.
I specifically wanted this because automatically approving every upload would make the AI validation meaningless.
Imagine the mission is:
πͺ The Throne of Unspeakable Mayhem
Find a park or street bench.
But the player submits the same photo of Mochi beside the red fire hydrant.
Gemini examines the photograph.
It recognizes:
β Small brown and white dog
β Red fire hydrant
β Green artificial turf
But:
β No park or street bench detected
Sniffari responds with:
πΎ NOT QUITE YET
This discovery doesn't match the current mission.
πΈ Failed Validation
The exact same image correctly fails a different mission because Gemini cannot find the required bench.
Gemini still keeps the response in character:
"That isn't a throne, human! That's a prime target for mayhem! How am I supposed to dramatically pose when there's a giant red hydrant begging for chaos?"
Sniffari then gives the player a helpful hint and lets them:
β» Try Another Photo
This approval/rejection loop is one of the most important parts of the project.
Gemini isn't being used as a decorative chatbot.
It acts as the actual mission judge.
πΎ 04 β Collect Paw Stamps
Every successfully verified mission adds another stamp to the dog's passport.
Adventure progress looks like:
πΎ 1 / 5 β First discovery
πΎ 2 / 5 β Expedition underway
πΎ 3 / 5 β Certified adventurer
πΎ 4 / 5 β Almost there
πΎ 5 / 5 β SNIFFARI COMPLETE!
Each stamp represents something Gemini actually verified from a submitted photograph.
The stamps are styled like little passport stamps rather than simple checkboxes.
Examples include:
π³ TREE SNIFFED
π YELLOW FOUND
πΈ FLOWER SPOTTED
πͺ BENCH CHECKED
π MISSION COMPLETE
The slightly rotated passport-style stamps became part of Sniffari's visual identity.
β
π 05 β Complete All Five Missions
Once the fifth mission is verified:
π SNIFFARI COMPLETE!
Mochi collected all 5 paw stamps.
At this point, Sniffari has more than just a completed checklist.
It now has a record of what Gemini actually observed during the walk.
That includes:
- πΆ Dog profile
- π Personality
- πΊοΈ Completed missions
- πΈ Submitted discoveries
- π Gemini's detected evidence
- β Validation results
That information becomes the input for the final story.
β
π 06 β Gemini Creates the Adventure Report
After all five missions are completed, Sniffari sends the verified adventure results back to Gemini.
Gemini then creates a short report written primarily from the dog's point of view.
The report doesn't simply invent random details.
It uses discoveries that were actually validated during the adventure.
An example might look like:
Mochi's Great Chaos Expedition
Today I led my human into the wilderness for an extremely important field operation.
First, I discovered a magnificent red hydrant.
Obviously, I claimed it.
We continued our investigation, uncovered several suspicious landmarks, and successfully completed five important missions.
Somehow, my human managed to keep up.
Human Performance: 8.7/10
Would cause chaos again. πΎ
The Adventure Report includes things such as:
- π Adventure title
- πΆ Dog's narration
- β€οΈ Favorite discovery
- β Human rating
- πΎ Final verdict
- ποΈ Collected stamps
I especially liked reversing the usual relationship.
Instead of the human rating the dog...
the dog rates the human.
β
π 07 β ElevenLabs Gives the Dog a Voice
Reading Mochi's report was fun.
But I wanted the final moment to feel more memorable.
That's where ElevenLabs comes in.
The Adventure Report includes:
π Hear Mochi Tell the Story
When the player presses the button, Sniffari sends the Gemini-generated narration to ElevenLabs.
ElevenLabs converts the adventure into expressive speech.
The narration direction also follows the dog's personality.
β‘ Chaos
Energetic, dramatic, and unnecessarily serious about completely normal dog discoveries.
π Princess
Elegant, slightly judgmental, and convinced the human is an assistant.
π§ Explorer
Confident adventure-documentary narration.
π Curious
Investigative and detective-like.
πΈ Shy
Warm, wholesome, and gentle.
π Foodie
Excited whenever something can somehow be compared to snacks.
So the final experience becomes:
π§ Gemini understands what happened.
π ElevenLabs lets the dog tell you about it.
β¨ From Walk to Story
πΆ Create Dog Passport
β
π§ Gemini Generates 5 Personalized Missions
β
πΈ Upload a Real Mission Photo
β
π Gemini Analyzes the Image
β
| β Mission Matches | β Mission Doesn't Match |
|---|---|
| PAW APPROVED | NOT QUITE YET |
| Gemini explains what it saw | Gemini explains what's missing |
| Collect a paw stamp | Try another photo |
β
πΎ Collect Paw Stamp
β
π Complete All 5 Missions
β
π Gemini Creates the Adventure Report
β
π ElevenLabs Gives the Dog a Voice
β
πΎ Every walk becomes a story.
Code
The source code is available here:
Tech Stack
Sniffari was built with:
- βοΈ React
- TypeScript
- Tailwind CSS
- Google Gemini API
- ElevenLabs API
- localStorage
- Google AI Studio
I intentionally kept the architecture lightweight.
Sniffari does not require:
- User accounts
- Authentication
- A cloud database
- An admin dashboard
- Payments
- Complicated backend infrastructure
This was a weekend challenge, so I wanted most of my time to go toward the experience and AI integrations rather than infrastructure that wasn't necessary for the core idea.
How I Built It
One principle guided the project:
AI should be part of the experience, not just a chatbot placed beside it.
That decision shaped how I used Gemini.
Instead of adding one generic AI chat feature, Gemini became part of the actual game loop.
Gemini has four responsibilities inside Sniffari:
πΊοΈ Plan the adventure
π See the discoveries
β Judge the missions
π Write what happened
ElevenLabs then becomes:
π The dog's voice
π§ Google Gemini β Adventure Generation
When creating an adventure, Sniffari sends Gemini information such as:
Name: Mochi
Energy: Playful
Personality: Chaos
Walk Duration: 20 minutes
Gemini returns five structured missions.
A mission can look like:
{
"title": "The Shiny Red Target of Chaos",
"description": "Find something bright red during Mochi's walk.",
"emoji": "π¨",
"validationCriteria": "A clearly visible bright red object must appear in the image.",
"hint": "Signs, vehicles, flowers, or street objects can count."
}
Using structured output was important because the mission isn't only shown as text.
Its validation criteria is later reused when Gemini examines the mission photo.
π Google Gemini β Multimodal Validation
When a mission photo is submitted, Gemini receives:
- Real uploaded image
- Mission title
- Mission description
- Validation criteria
- Dog personality
Gemini then returns structured information such as:
{
"passed": true,
"confidence": 0.72,
"reason": "A bright red fire hydrant is clearly visible.",
"detectedEvidence": [
"small dog",
"bright red fire hydrant",
"green artificial turf"
],
"playfulMessage": "This red giant is clearly my new kingdom to conquer."
}
The UI uses this response to decide whether the player receives:
πΎ PAW APPROVED
or:
πΎ NOT QUITE YET
This transformed multimodal AI into an actual game mechanic.
πΆ Gemini Personality System
I didn't want every dog's responses to sound identical.
Sniffari includes personality archetypes such as:
- π§ Explorer
- π Curious
- π Princess
- β‘ Chaos
- πΈ Shy
- π Foodie
The selected personality affects:
- Mission names
- Mission descriptions
- Validation reactions
- Adventure report
- Narration direction
For example:
Explorer
"New landmark discovered! Captain Mochi has officially added this location to the expedition log."
Princess
"Acceptable discovery. Mochi has approved it for royal inspection."
Chaos
"π¨ TARGET DETECTED. Immediate investigation and unnecessary drama required."
Foodie
"Investigation complete. Unfortunately, this discovery was not edible. Mochi remains optimistic."
The personality system helped the AI feel connected to the dog instead of sounding like the same assistant every time.
π Google Gemini β Adventure Report
After collecting all five stamps, Sniffari sends Gemini:
- Dog profile
- Completed missions
- Validation results
- Detected objects
- Personality
Gemini then creates the final Adventure Report.
The report can contain:
{
"title": "Mochi's Great Chaos Expedition",
"subtitle": "Five missions. Several suspicious objects. One unstoppable explorer.",
"humanRating": "8.7/10",
"favoriteDiscovery": "The giant red fire hydrant",
"closingLine": "Would cause chaos again."
}
Most importantly, the report uses discoveries that were actually verified during the adventure.
π ElevenLabs β Giving Mochi a Voice
Once Gemini finishes the report, the player can press:
π Hear Mochi Tell the Story
Sniffari sends the narration to ElevenLabs.
ElevenLabs turns the adventure into expressive speech.
I wanted ElevenLabs to complete the experience rather than exist as a separate text-to-speech demo.
The relationship between the two technologies became very simple:
Google Gemini = The Brain π§
It plans, sees, understands, judges, and writes.
ElevenLabs = The Voice π
It brings the final story to life.
π¨ Designing Sniffari
I didn't want Sniffari to look like a generic AI dashboard.
The visual direction is inspired by:
- π Travel passports
- π Adventure journals
- πΊοΈ Field guides
- ποΈ Collectible stamps
- π Dog walking accessories
The UI uses:
- Warm paper-like backgrounds
- Dark brown typography
- Muted green accents
- Warm orange and yellow highlights
- Rounded cards
- Paw prints
- Slightly imperfect passport stamps
- Small playful animations
The goal was:
Cute, playful, and memorable β without becoming overly childish.
Because Sniffari is meant to be used during a walk, I designed the main experience mobile-first.
Why I Built It
Dog walks are already full of tiny adventures.
A completely normal tree can require five minutes of investigation.
A fire hydrant can suddenly become the most important object in the neighborhood.
A random patch of grass apparently contains information that requires extremely serious sniffing.
I wanted to build something that embraced those moments.
Instead of trying to use AI to replace part of the real-world experience, Sniffari uses AI to make that experience more playful.
The important part still happens outside.
The dog still walks.
The human still explores.
The real world is still the playground.
AI simply transforms those discoveries into missions, achievements, and stories.
That's why the name became:
Sniffari = Sniff + Safari
Every walk becomes a tiny expedition.
Prize Categories
I'm submitting Sniffari for two prize categories.
π Best Use of Google AI
Google Gemini is the core intelligence behind Sniffari.
I use Gemini for:
- πΊοΈ Personalized adventure generation
- π§ Structured mission generation
- π Multimodal image understanding
- β Mission photo validation
- π Visual evidence detection
- πΆ Personality-aware responses
- π Final adventure report generation
The part I'm most excited about is using multimodal AI as a game mechanic.
Instead of asking Gemini:
What's in this image?
Sniffari asks:
Here's the player's mission.
Here's what counts as success.
Examine this photograph and decide whether the mission was completed.
That transforms computer vision into part of the gameplay loop.
Gemini effectively becomes Sniffari's:
Adventure Planner + Mission Judge + Storyteller
π Best Use of ElevenLabs
ElevenLabs powers the final storytelling experience.
After Gemini understands what happened during the adventure and writes the dog's report, ElevenLabs turns the written story into expressive narration.
I wanted it to feel like a natural conclusion to the product.
Not:
Here's an AI text-to-speech button.
But:
Your dog just completed an adventure. Now let them tell you about it.
The relationship is:
π§ Gemini understands the adventure.
π ElevenLabs lets the dog tell the story.
What I Learned
One of the biggest things I learned while building Sniffari was how much more interesting multimodal AI becomes when it has a specific purpose.
Image recognition alone is useful.
But this:
Identify the objects in this photograph.
is very different from:
This player's mission is to find a bench. Examine the image and determine whether enough evidence exists to complete that mission.
The second prompt gives the model a role inside the product.
Gemini isn't only analyzing content.
It's participating in the rules of the game.
I also learned that combining multiple AI technologies works better when each technology has a clear responsibility.
For Sniffari:
π§ Gemini = Brain
π ElevenLabs = Voice
Neither technology is included just because there is a prize category.
Both are connected directly to the core experience.
Challenges
One challenge was making AI mission validation feel fair.
Real-world photographs aren't perfect.
Objects can be:
- Partially visible
- Far away
- Poorly framed
- Under unusual lighting
I didn't want Sniffari to require absolute certainty.
So Gemini returns:
- Pass/fail status
- Confidence
- Explanation
- Detected evidence
This lets the application remain understandable and forgiving.
Another challenge was keeping the project small enough for a weekend.
There are many directions Sniffari could go, but I intentionally avoided building:
- Authentication
- User accounts
- Cloud databases
- Social feeds
- Complex maps
- Payments
That gave me more time to focus on what actually makes the project unique.
What's Next?
If I continue developing Sniffari, I'd love to explore:
- πΊοΈ Location-based adventure packs
- π¦οΈ Weather-aware missions
- π Achievement badges
- π₯ Daily adventure streaks
- π Previous Sniffari history
- π Multi-dog adventures
- π¨ More collectible stamp sets
- πΈ Shareable adventure postcards
- π Seasonal mission packs
- π³ Park-specific adventures
- πΆ Puppy-friendly difficulty
- βΏ Accessibility-focused walking modes
- π Additional narration personalities
But for this weekend, I wanted the core experience to stay simple:
πΆ Create a dog.
πΊοΈ Go on an adventure.
πΈ Prove your discoveries.
πΎ Collect five stamps.
π Turn the walk into a story.
π Let your dog tell it.
Thanks for checking out Sniffari. πΎ
Every walk is an adventure.



Top comments (0)