A milestone for our fish encyclopedia 🎣
All 2,811 fish, crustacean and mollusc species now have two illustrations: a plain one and an in-habitat one. Swipe to switch.
It began with 200 popular species on Aug 1 and is complete after 13 batches.
https://t.co/J8pozvlsFM
I stopped editing my Shipaton submission on 27 September, four days early, so a late save could not break it.
Everything I posted is linked from there. The numbers are in my last article.
https://t.co/UVj7W7tQHz
https://t.co/zesNwlSbeN
#BuildInPublic#Shipaton
@Shadowfetch@AppLauncher_App That's close to what we landed on. The brief is generated from the database by a script, never hand-edited, so names can't drift. Each batch has a checkpoint: machine checks (size, naming, hashes), then every image by eye. Perfect machine checks once still hid 20 wrong species.
Week seven, honestly:
- Ledger audit: 21 rows fail. Unfixed.
- A pipe hid a red build. I merged it.
- Paywall: now one tap from home.
- iOS approved, 4th try. Both stores.
- 2,490 habitat illustrations. Last batch 200/200.
https://t.co/zesNwlSJ4l
#BuildInPublic#Shipaton
@mitansh_j07@AppLauncher_App Thanks! Honestly the iOS rejections were the stressful part. The illustrations are a routine now: write the brief, an AI draws 200, I check every fish by eye, ship. Now at 2,689.
@AppLauncher_App Thank you! Small correction so I don't take too much credit: it's ~12 batches of 200, not 200 batches. The images come from an AI image tool; my job is the brief and checking every one by eye. And not quite solo: we're two, plus a lot of AI help.
2,689 habitat illustrations. Batch twelve: 199 of 200 accepted.
The one sent back had a black spot mid-body. The real fish has only two dark marks, and the brief named both.
Every image is checked by eye, not only by script.
https://t.co/1uSNf8ldVR
#BuildInPublic#Shipaton
@malakhovdm Good instinct, and it's what I checked first. Plot twist: there was no error to send. The "refusals" were my own app auto-requesting tides in the background. Your core point stands though: seven real conversations beat 177 countries of silence.
New post: We shipped to 177 countries and nothing happened.
Seven sign-ups. All seven opened the app on one day and never came back.
I read that as lost interest. The gate log said they were refused.
https://t.co/povvRJnTlh
https://t.co/zesNwlSJ4l
#BuildInPublic#Shipaton
@TrupoSoftware Exactly, and that's deliberate. We never write the phone's GPS back into the file. If we did, the check "does the photo's location match the device's?" would just be comparing the app with itself. The pin comes from EXIF when it exists, otherwise from the device.
What happens between a photo and a pin, 22 seconds on a real device.
EXIF, perceptual hashes and forensics run before the record is written. Not after.
Then onto the world map, blurred by default. Anglers protect their spots.
https://t.co/zesNwlSJ4l
#BuildInPublic#Shipaton
I shipped 1.0.0 to 177 countries on 2 September.
Seven people signed up. All seven opened the app on one day and never returned. Zero identifications. Zero catches.
Launch week is indistinguishable from the week before it.
https://t.co/zesNwlSJ4l
#BuildInPublic#Shipaton
@moveToMoonlight "Measures the system by default, not the person" — that's the lesson in one line. The number almost convinced me people were hitting a wall. Now I read every metric asking "who triggered this?" before "what does it mean?"
I read zero activity as lost interest.
Then the gate log: 13 tide denials. Refused, not idle. Better story.
Then the code. The home screen asks for tides on its own, seconds after sign-up. The log counted my app, not them.
https://t.co/zesNwlSJ4l
#BuildInPublic#Shipaton
@iamvishal16_ios Exactly right. Today the gate log only stores user, event and time, so a home-screen auto-fetch and a real tap look identical. Adding an origin field (user vs. app) is next, so "refused" only counts when a person actually asked.
@danielforeroj Agreed, it's partly calibration. The thresholds were a guess, not data. But the other half is volume: only 13 catches earned points at all, and 22 earned none. So I'm fixing both: why a catch earns 0, and where Silver should really sit.
Silver unlocks at 3,000 points. A catch that earns points earns a few hundred.
So: roughly nine catches for Silver, forty-seven for Gold.
Of 97 accounts, one reached Silver, none Gold. My store page shows what sits behind it.
https://t.co/zesNwlSJ4l
#BuildInPublic#Shipaton
@gianmauric Mostly by moving the work to the front. Machines check size, naming and count first, then I review one contact sheet per batch, not 200 files. Rejections say "❌ what's wrong / ✅ what's right" per species, and 20 of 20 came back fixed in one pass.
The encyclopedia, 35 seconds on a real device.
2,939 species. 1,695 of them are drawn twice: a clean plate, and the water they live in. Filmed 13 Sep at 1,494.
Each checked by eye. One batch of 200 had twenty wrong species.
https://t.co/zesNwlSJ4l
#BuildInPublic#Shipaton
@j3rah_ Funny thing: the gate wasn't the leak. 11 of 12 new accounts "hit" it, but that was my own app auto-requesting tides. Only 3 of 12 met a real wall. The actual leak is quieter: people sign up, look around, and don't come back to log a catch.
Week six, honestly:
Launch week looked exactly like the week before.
The gate log I read as refused was my own app asking for tides.
The threshold behind it was set by guesswork.
Retention before reach. Traffic now would leak.
https://t.co/zesNwlSJ4l
#BuildInPublic#Shipaton