Inspiration

You walked past a dozen wild animals today. You probably didn't notice a single one.

When I was a kid, I noticed all of them. I knew every species by heart: the books, the documentaries, the facts I'd recite to anyone who'd listen.

And at recess, I lived for trading cards. Tearing open a pack. Tilting the shiny one under the light. Running across the playground to show everyone the rare I'd just pulled.

Then I grew up. The cards ended up in a drawer, and my eyes ended up on a screen. The animals were still there, on the balcony, by the river, in the park. I just stopped seeing them.

SafaRoll is my way of bringing both back.

Point your phone at any real animal. It trembles on screen for a second, then a holographic card flips in, and you feel it land in your hand. A pigeon, a heron, the neighbour's cat, a lynx at the zoo. Every one becomes a card that's yours alone.

It's the rush of pulling a rare card at recess, except this time you had to go outside and actually find it.

I've been playing my own game ever since. My collection is at 84 species now, from the pigeons outside my window to a red panda at the zoo, and I still get that little rush every time a new card lands.

How it started

The first version worked. That was the problem.

I pointed my phone at a pigeon, the app named it, and a card appeared: a flat rectangle with a photo on it. Technically perfect. Emotionally, nothing. A kid at recess would never run across the playground to show this to anyone.

So I became obsessed with one question: what makes a card feel precious?

I spent weeks on it, mostly late at night, between my apprenticeship and my classes. Holographic foil that follows your finger. The animal cut out of your own photo, so the card could only ever be yours. A reveal that makes you wait just long enough.

And then one evening I tested it on a pigeon again. Same pigeon, same street. The card trembled, flipped, and landed with that little shine.

That's when I knew it was working.

What it does

Snap a real animal → it's identified in about a second → a unique holographic card is revealed.

  • Real identification: a specialist species model, not a chatbot (more below).
  • Only real animals count: point it at a mug or a houseplant and nothing happens. The app checks there's an actual animal in the frame before it ever calls the model.
  • Your photo becomes the art: the animal is cut out on-device and set as a sticker on a painted habitat. The card takes its color from your photo, so no two cards look the same.
  • Cards that feel physical: 8 rarity tiers (Common → Legendary), each with its own holographic foil that follows your finger and its own haptic pattern at the reveal. Delete a card and it burns away like paper (it's weirdly satisfying, but you'll regret it).
  • A reason to come back: meet a species again on a different day and its card gains a star (5 levels), plus monthly quests, badges, decks, and Photo Safaris with friends, tracked live on your lock screen.
  • Notifications that follow nature, not metrics: a dawn chorus at sunrise, amphibians after rain, a real birdsong from your region to guess, and a "World first" alert when you find a species no player has found before. At most one nudge a day, and they mute themselves when they stop being useful.
  • Free to play: 10 captures a day. SafaRoll+ unlocks unlimited captures, the Guide (an AI naturalist you can ask about the animal you just caught) and the map of your encounters. No ads, no trackers.

Not a chatbot guessing: a model built for the tree of life

Most apps that "identify animals" send your photo to a general-purpose AI chatbot and ask it what it sees. SafaRoll doesn't.

Every photo goes to BioCLIP 2, a research model from the Imageomics Institute, trained specifically on the tree of life: over 200 million images of living organisms, from mammals and birds to insects, reptiles and fish. It doesn't describe a picture. It places your animal among hundreds of thousands of species, the way a naturalist would, and answers in about a second.

It runs on my own server, not on a third-party chatbot. Before it's even called, the app checks on-device that there's a real animal in the frame, and cuts it out of your photo right on your phone.

How I built it

  • Expo / React Native, with native Swift where it matters: Apple Vision for the on-device cut-out, Core Haptics for the reveal, and WidgetKit for Live Activities.
  • Skia and WebGPU for the cards: the holographic foils are GPU shaders driven by spring physics, and the burning card is a real-time fire simulation, so everything stays smooth at 60 fps.
  • BioCLIP 2: a research model built for species, not a generic chatbot, kept warm on a server so identification takes about a second.
  • OneSignal and RevenueCat: every OneSignal campaign is driven by real seasonal wildlife data and real weather, and RevenueCat handles SafaRoll+ with entitlements checked on the server.

Challenges I ran into

  • The capture is a latency budget. Between the shutter and the card, you're staring at a trembling animal. I allow exactly one small upload before identification starts; the heavy full-resolution cut-out uploads afterwards, in the background.
  • Making a generated card feel like a real one. A flat image on a screen doesn't feel precious. The holographic foils run as GPU shaders with spring physics, tuned until the shine lagged behind your finger just like a real card does. (I lost count of how many evenings I spent tilting my phone under a desk lamp.)

Accomplishments that I'm proud of

  • Turning a research-grade species model into a one-second moment of delight: from the shutter to a card in your hand, built solo, end to end.
  • Cards that people want to tilt and show around, even though they're generated rather than printed.
  • A notification system that is useful before it is engaging: it knows when the sun rises, when it rained, and when to be quiet.

What I learned

  • Engagement is strongest when it respects reality: real animals, real places, real timing, no fake urgency.
  • "Feel" is engineering: a haptic pattern or a spring constant changes how precious a card feels.

What's next

Community decks, a printed field book of your year, and Android. And one question for you: which animal should be the first Legendary you find? 🦉

Built With

Share this project:

Updates

Submission history