Mino
Photograph the animals you spot and collect them in your own field guide.
The Idea
Spotting an animal is a small event, and it usually ends with a blurry photo somewhere in your camera roll. You don't know what it was, you won't remember where you saw it, and nothing ties it to the other times you saw the same kind of animal.
Mino turns that photo into an entry in your own Dex. Take a picture, and Mino tells you what the animal is, along with a short write-up of the kind you'd find in a field guide. Every sighting keeps its date and place, and sightings of the same kind of animal collect in one entry, so your Dex grows as you explore.
What It Does
Identify From a Photo
- Snap or pick a photo — use the camera, choose from your library, or share photos to Mino from any app.
- A Dex entry, not just a name — common and scientific name, a description, habitat, diet, size and conservation status, written by Claude.
- Breeds count — a golden retriever and a dalmatian get their own entries.
Your Own Dex
- Grouped automatically — a new sighting of an animal you've already found joins its existing entry.
- On a map — every sighting is pinned where you saw it.
- Yours to annotate — nicknames, notes and your own tags.
Works Offline Too
No signal on the trail? Mino keeps the photo, date and place, and identifies the animal when you're back online.
Privacy
- Your Dex stays on your iPhone. There is no account, and your sightings, notes and locations are never uploaded.
- Only the photos you identify leave the device, with their location and other metadata removed, and they aren't stored after the answer comes back.
- No analytics, advertising or tracking.
Tech Stack
| Layer | Technology |
|---|---|
| UI | SwiftUI, targeting iOS 26 |
| Persistence | SwiftData |
| Identification | Claude, through a Firebase Cloud Function |
| App integrity | Firebase App Check with App Attest |
| Rate limits | Postgres on Neon |
| Maps | MapKit |
Architecture
The app does everything locally except one thing: asking Claude what's in the photo. That call goes through a small Cloud Function instead of straight to the Claude API, so no API key ships in the app and users never have to bring their own. The function holds the key and the prompt, so the wording of a Dex entry can change without an app update.
An open endpoint that calls a large model is an invitation to abuse, so the function only answers the real app: App Check with App Attest proves each request comes from a genuine install, and each token works once, so a captured request can't be replayed. Daily limits per device and overall cap the bill.
Grouping sightings is a collaboration between the model and the app. Each request carries the names of the entries already in your Dex, so Claude reuses the same species key when it sees the same kind of animal again, and the app normalizes the key so small formatting differences still match.