This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
What I Built 👾
Photography started off as a hobby, which soon became my job. I still enjoy it, just not as much. I wanted an app that could be fun, and learning in the same way. Something to bring the light back to photography for me because I really do enjoy it a ton. So I built ShutterHunt. A photography quest game that gets you out of the house and moving around. It's a native Kotlin Android first application that runs Gemma 3n for image and text judging.
This visually cyberpunk photography quest game has you doing photo quests like taking a mirrored image. Once the image is taken, you give it to the judge, Gemma 3n, to judge the image based on the quest prompt. It judges based on 3 different categories in each quest. For example, the symmetry / mirrored photo it judges based on this criteria:
- Centered framing
- mirrored sides
- clear structure
This gives clear structure for the AI to look at a photo and understand what it must look at in terms of judging a photo. Not only does it judge, but it also gives constructive criticism on each photo as well giving us learning points in how we create our photos and how we can get the next photo to be a little better!
Demo
Below is a link to the .APK for the official demo. Once installed, the first step is to go into the Status tab, and there will be a section under Step 2 that links you to the Gemma 3n model on Hugging Face, which you need to download locally (this will be updated very soon to be done in the application, the time to make it happen for the challenge just wasn't there yet). Once downloaded, on the same tab you will point the model. Once pointed, the game is fully available to play and judge at will. Give the judge time, he can be slow some of the time, especially one start.
Demo APK: https://drive.google.com/file/d/19T0-pqdtWSMGN4SDc78_xseoISk3GDc_/view?usp=sharing
How I Built It 🔧🪛
Fighting with Github Copilot, I started with an idea of wanting a photography game that you could do photo quests with that uses Gemma to judge the photos. Were talking about localized AI on a native Kotlin Android application. So the first issue was honestly finding the right quantized Gemma model that would work with the phone locally and still run without crashing.
Using GitHub Copilot, it helped with suggesting and integrating Gemma 3n int4 LiteRT-LM for android. This is a light 3gb model that runs locally on android phones from Samsung Galaxy Ultra S23 up. I have a Google Pixel 10 myself, so that's the testing platform we are using today.
Funny story.... I started out testing the application the hard way. Pushing the APK through email to find out it had security issues, not understanding the best way to get it on my phone... Then after thinking a little, I plugged my phone directly into my PC and started transferring the files that way haha.
This application went through several iterations. The first iteration / phase was getting a localized application working without Gemma on the phone to start with, pulling the camera up correctly, and taking the photos correct on the phone.
I had trouble with the photo orientation to start with so that was the first update. When a photo was taken, it would always turn sideways and never stay vertical. I wouldn't realize until Gemma got added, but this issue caused judging issues with Gemma seeing only the 2nd photo that got oriented wrong.
After phase one was working, the camera was functioning proper, and the journal was saving photos, I moved on to integrating Gemma. This would be the hardest part honestly of the application process.
First, trying to figure out the file to download was fun in itself, so I integrated the link into the application to make the process more friendly. You have to download the model locally, then point the application to that model file.
Now it's pointed! Let's get to judging! Fired up a quest, took a photo of my awesome Under Armour logo on my water bottle, and waited. And waited more. And waited more. It's not the fastest judge, let's be honest, it's local AI xD The first time through it came back with an error. That wasn't only non readable by me, but also the AI.
So the AI created our first update, a JSON debugger application that should show all the issues AI was giving at the time. This gave us an update APK to just easily update the application versus reinstalling it this time. I ran the judgment again and now got a much larger output. I'm not seeing the issue is malformed JSON and the length is part of that issue.
Giving this to Copilot, and explaining the issue in detail in the prompt, it was able to one shot the issue and after, we started seeing what real judgement looked like. Below is my judgement, FINALLY, working. I was actually relieved to see Gemma finally judging this correctly.
Orientation is fixed, Gemma is now judging correctly, but the style isn't me. This light version, sorta simple to say, is not the style I imagined. So i wanted to be sure I could one shot this next prompt. Below is was Gemini came up with when it came to the style based on previous websites I have created and I have to say, I was quite pleased.
As cool as this turned out, I was hoping it would translate when moving into Kotlin and on the application. So giving the image / images to Copilot, I hoped for the best outcome! I can say I'm happy with it, but it could have matched better. Below are a could images of the results. This is the full demo build of the application.
There are 2 more phases still in development. Phase 3 will be hidden geolocation events where a photo can be taken at a certain location and give hidden badges. Also badges and trophy's integration. Phase 4 will be a polished release that has extended levels, more challenges, and something for a full release beta.
I spent the week doing this for the hackathon because photography is something that means a lot to me. As someone who does school photography and sports photography professionally, I wanted a way to enjoy photos again, and give a way for people who wanted to learn photography an easier way through AI. Gemma 3n provided the grounds to do this and to make the experience fun on a local and single player mode where no wifi or internet is needed. This to me is big because it's usually in the worst signal areas we find the most beautiful photos.
Why Does Open Innovation Matter? ✒️📡
Why this innovation / game matters is because it gives a reason for someone to take a photo, helps innovate the process, and teaches them photography while judging. It's an easy way to jump into photography and understand better ideas, and better photos if photography is something you enjoy. Most of all though, it brings AI into the mix and allows users to have more reasons for taking photos and learning about photography in the process!
Discussion: What reasons do you take photos? How else do you think local AI can be integrated into a photography sense? Go touch some grass, play around with ShutterHunt!
My Agent Session
So along with Github Copilot, I have it it built into a Hermes Harness. The session was written to a google document with Google Copilot inside Hermes and the link is: https://docs.google.com/document/d/1_FpA64o3zGGdcAtS3_NzMoQTUtNkgqLmQz3J4jPWCBI/edit?usp=sharing
🏆🏆 Prize Categories 🏆🏆
1. Best Use of Gemma: Gemma 3n E2B Ent4 runs fully offline on an Android phone, judging / validating photos, based on schema-constrained JSON criteria, and giving informative feedback about the photo to the user.
2. Best Use of Github CoPilot: Github Copilot really took my idea from a native photography phone quest game app to a reality. It helped give me the best model for this use case and wrote a structured application using GPT-6-Sol Model for deep thought process and integrated Gemma with structured prompts.









Top comments (1)
I like that you made this to work on mobile, and that you made it a constructive learning experience as well! There is definitely real value there. Offering tips to users for taking better photos offers real feedback to learn tricks of photography.