·4 min read

Challenging Bokudjin

Bokudjin is almost always right about what he sees. Almost. Here's why I built a way to challenge him, and what happens when you do.

featuredev diary

He's not a lookup table. He's making a call. And when he gets it wrong, I wanted a way to fix it without losing what makes him interesting.

It started with a cricket

I kept photographing the same alpine dark bush cricket and Bokudjin kept coming back with field cricket. Sometimes wasp. I knew it was wrong. I tried a bunch of different models and they all gave varying results depending on the angle and lighting. A reverse image search eventually gave me the answer I was after, but there's no API for that in a mobile app.

A lot of apps and communities solve misidentification by letting users tell each other what something is. That works well at scale. At the scale Bokuju is at right now, you'd be waiting a long time for an answer.

Then I went to the zoo.

The signpost moment

Zoo enclosures have signs next to them. Species name, region, conservation status. When Bokudjin identified a Philippine crocodile as a spectacled caiman (the croc was half submerged, genuinely a difficult shot) I was standing right next to a sign telling me exactly what it was. I had the evidence. I just had no way to use it.

Philippine crocodile, half submerged

That's when the feature became obvious. Users aren't always guessing. Sometimes they know. They're at a zoo, or they're a naturalist, or they've just looked it up. They should be able to provide that evidence and have Bokudjin reconsider.

How challenging Bokudjin works

Go to the card you want to dispute. Open the FAB menu and start a challenge. If it's your first time, you get a walkthrough explaining how it works.

Starting a challenge in Bokuju Submitting evidence to Bokudjin

Then you make your case. You can type what you believe the creature actually is, upload an image as evidence (a zoo sign, a field guide page, a clearer photo), or both. That evidence goes back to Bokudjin alongside the original photograph, and he re-examines the identification with your input as a hint.

If he agrees, the card regenerates with the correct species, fresh art and corrected stats. If he disagrees, the original identification stands and he tells you why.

The first challenge on any card is free, because if Bokudjin got it wrong, that's on him. Repeat challenges on the same card require Daku, to protect against people submitting a crow photo and claiming it's a lion for the fun of it. Outrageous hints get rejected. The system is looking for plausible corrections, not creative ones.

Why he doesn't always concede

This is the part that matters most to me. Bokudjin is not a manual override. He's not going to accept every challenge just because a user submitted one. The re-identification runs the same flow as the original, just with a hint. If your hint is plausible and the evidence supports it, he'll accept it. If it's implausible given the original photo, he won't.

Challenge outcome

That keeps the character intact. He's fallible, he listens to evidence, but he makes the final call. The collection stays honest.

What identifying animals accurately actually means for your collection

Part of why I was so determined to build this is that the whole point of Bokuju is a factual collection. The stats on your cards are derived from real species data. A Philippine crocodile card should have Philippine crocodile stats, not caiman stats. Getting the identification right isn't just about accuracy for its own sake: it changes the card you end up with.

There are fewer than 100 Philippine crocodiles left in the wild. That croc deserved a Legendary, and the correct one at that.

If you've had a card that doesn't look right to you, challenge him. Even if you're not certain, you can type your best guess and let him decide. That's what the feature is for.

Philippine crocodile — Legendary