GoodDog iOS App: Who’s a Good Dog?

A couple months ago I released GoodDog in the iOS App store and just today realized I never made a post about it!

It’s a fun little app built in Xcode with Swift that tells you whether or not a dog is a good dog. Spoiler alert: all dogs are good dogs!

Users can take a photo in the app or select from their photo library and the app, using CoreML + the MobileNet ML model, will analyze the photo. The model is pretty great at identifying animals, but really poor at identifying non-animals so the non-dog error messages tend to be funny. I originally built the app using Google’s Inception V3 model, which is much more accurate for many many things, but the file size is massive. The app is pretty simple so I felt that a smaller download size made more sense. The MobileNet model is much lighter weight and still great at identifying animals, which was all I needed.

The model is actually more accurate with dogs that I needed it to be. I needed it to just identify if the photo was a dog or not, but the results were giving specific breed names. So I created a JSON file on my server that contains an array of dog breeds. On app startup, the app will ping the server and save the latest array into core data, then when a photo is analyzed, it cross checks the array to see if the breed is included. I did it this way rather than hard coding the array into the app so that I can easily add more breeds to the JSON file and not need to push out app updates any time I want to add another breed I may have missed. The success messages are handled the same way so I can add more whenever I want and not have to push app updates. And by only pinging the server once, the app still runs very quickly since it doesn’t need to ping the server each time a photo is analyzed (and because the data is saved to core data, if the phone is offline, it’ll still work just fine).

Anywho – it’s a fun app that I had a great time putting together, and people seem to be enjoying it! Check it out if you feel so inclined:

Also a shout out to my wife, Edith, who whipped up the branding and app design in like 1 hour because she loves me and my original app worked but looked TERRIBLE.