This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
A rock told me my face was a distraction.
Not a person. A rock. A big granite boulder in Hyderabad, about 2.5 billion years old.
"Do try not to stare so intensely. Your face is a distraction."
To be fair, I did build the app that made it say that. So that one's on me.
What I Built
Adopt-a-Rock is a Tamagotchi, but it's a rock. And it only works if you go outside.
Hyderabad is full of huge, ancient rocks. My college, Gokaraju Rangaraju (GRIET), has them too. I've walked past them for years and never once asked how they were doing.
So now they tell you. Here's how it works:
- Find a rock. Take one photo. The app saves where the rock is.
- Wait. The rock is asleep. It's 2.5 billion years old. It doesn't reply the same day.
- It wakes up. Overnight, a free AI running on my laptop looks at the photo and gives the rock a name, a personality, and a grudge. It even gets its own voice.
- Go back. When you visit the rock again, it talks to you through your earbuds. Each visit unlocks a new bit of its story.
- Stay away, and it texts you. Rocks get lonely. And dramatic.

You can't look after a rock from your bed. You have to go outside.
Demo
{https://youtu.be/4iEtdZJBVfg}
Every rock line in the video comes straight from the app. I didn't write a single one of their insults. They came up with those on their own. (The googly eyes were my idea. The rocks did not consent.)
Meet the Rocks
I tested the app on photos of famous Hyderabad rocks. Here's who woke up.
🪨 Khajanchi (patiently grumpy)
- Wants to be dusted with "a single, perfectly formed sand grain each morning."
- Has a neighbour rock called Prakasan, who is "always trying to get people to mistake him for me."
- On how I photographed it: "It's a poor angle. A very poor angle."
🪨 Katta (grumbling, stoic)
- "I consider all shadows an intrusion."
- Hates construction work nearby: "It's a crime against geological stability."
- Secretly likes the light through the leaves. Even rocks have a soft side.
🪨 Chilakalu (cantankerous)
- Thinks the pebbles around it are arranged wrong. It's been annoyed about this for a long time.
- When I took its photo: "Focus on the boulders, woman."
🪨 Gael (irritated)
- "I've developed a distinct dislike for the colour orange."
- The one that told me my face was a distraction.
🪨 My college rocks (asleep 💤)
Then I went to adopt the rocks at my own college, GRIET.

Me and my rock. Only one of us is 2.5 billion years old. Only one of us has a braid.

This one lives at my college. It has seen more batches graduate than any professor.
These two are wedged between the college buildings. The buildings came later. The rocks have opinions about that.
They haven't said a word yet. They're still asleep, waiting for the laptop to wake them up. They've waited 2.5 billion years for someone to notice them, so they're in no hurry. But I can already tell they're disappointed in me. I've walked past them for years and never said hi.
Skip a Visit, Get a Text
If you don't visit, your rock starts messaging you. These are real messages from Khajanchi:
3 days: "A pigeon has built a nest in one of my larger cracks. Really?"
7 days: "The ORR traffic continues its incessant, grating roar."
14 days: "A particularly aggressive auto-rickshaw nearly clipped my base. The audacity!"
My mom doesn't guilt-trip me this well.
No Proxy Attendance
Every college student knows the trick: get a friend to mark you present. This app doesn't fall for it.
A visit only counts if you're actually standing near the rock and the photo matches. Try to check in with a different rock, and the real one gets offended:
"Prakasan is a fool. He's shaped differently, he's covered in algae, and he constantly tries to block my sunlight. He is not me." — Khajanchi
Stricter than my college's attendance system.
Bloopers
The AI is small, so it gets things wrong. My favourites:
- I asked Gael for one "3 days without a visit" message. It kept going: "Nine days. A pigeon sat on me. I let it." Its 14-day message went all the way to "Thirty-five days. I am parched, utterly depleted."
- Katta finished a story, then kept typing closing quote marks:
” ” ” ” ” ” ” ”. Forever. - Khajanchi wrote a scene where I put a plastic bottle next to it for the photo. There was no bottle. The AI just decided I was that kind of person.
How I Built It
The tricky part: phones can't run a big AI model easily, and there's no signal near most rocks. So I split the work in two.
Rocks are slow. Everything that happens at the rock runs on the phone, with no internet. The heavy AI work happens at home on my laptop, while the rock "sleeps".
PHONE (works offline) LAPTOP (at home) ───────────────────── ──────────────── Camera + GPS Gemma 3 (the rock's brain) Photo matching (CLIP) ⇄ Piper (the rock's voice) Saved stories + voices Wi-Fi Writes new stories overnight - Gemma 3 4B (Google's open model) runs on my laptop through Ollama. It looks at the rock's photo and writes the personality, stories, and nagging texts. Waking up one rock takes about 2 minutes.
- CLIP runs right inside the phone's browser. It checks whether your photo shows the same rock. It works with Wi-Fi and mobile data turned off.
- Piper turns the text into speech. Each rock gets its own voice and talks a little slowly, because rocks are never in a hurry.
- When the phone gets back on home Wi-Fi, it syncs with the laptop and picks up any new stories.
Three things I learned about getting a small AI to be funny:
- It copies examples. If I put one example line in my instructions, every rock repeated it. So I describe the style instead of giving examples.
- Make it look first. I ask the AI to list what it sees in the photo before it writes anything. That way the stories mention real details, like cracks, trees and the building behind the rock.
- Check its work. The code throws out broken answers (like the quote-mark spiral) and asks again, up to 3 times.
Code
{https://github.com/Raga-V/deccan-rocks}
Why Does Open Innovation Matter?
Because a rock on a hill doesn't have Wi-Fi. Neither does most of my college.
| Adopt-a-Rock (open, runs on my devices) | A paid cloud AI | |
|---|---|---|
| Works with no signal | ✅ Yes | ❌ No |
| Where your location goes | Your phone and laptop only | Someone else's server |
| Cost per visit | ₹0 | Pay every time |
| Can I change how the rock thinks? | Yes. Edit it, swap models, retrain it | No |
An app like this knows where you go every day. For a student, that's basically your whole routine: which classes you skip and how long you spend at the canteen. I didn't want that on anyone else's server. With open models, it doesn't have to be.
Also, since every visit is free, your rock can talk to you every day for four years of college. For a rock, four years is about one blink.
The Serious Bit
The rocks have good reason to be grumpy. Hyderabad's ancient rock formations have been disappearing to construction for decades, and people here have fought for years to save them.
I gave the AI a list of things a Hyderabad rock might complain about: peacocks, biryani smell, rain puddles, auto-rickshaws, construction. Almost every rock picked construction or traffic. They know.
I started this as a silly project. Now I notice every rock on my way to class.
Go adopt a rock. It's been waiting since before your college was built. It will complain about that too.
— Raga Gowtami, student at GRIET, now legally responsible for several very disappointed rocks 🪨
P.S. If you build your own and your rock insults you, drop its best line in the comments. Mine called my face a distraction. Beat that.

![Why Object.keys(user) Returns string[], Not (keyof User)[]: TypeScript Means It](https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2q4w48b9bzs43tynyhsf.png)
