The launch of the iPhone App Store with the iPhone 3G in July 2008 created a huge opportunity for independent developers to reach a large and rapidly expanding audience of consumers hungry to try out (and in many cases pay for) the latest and greatest apps. When Windows Phone launched a few years later, I hoped to take advantage of what I saw to be a similar opportunity by using facial recognition provided by the Israeli startup Face.com to create a fun and experimental app that estimated the user’s age from a photo, this idea became VizAge.
In these heady early years of the iPhone the apps people were downloading in droves ranged from the amusing and the useful to the pointless. One of these indie apps that proved incredibly popular despite its gimmicky nature was Fit or Fugly, created by a UK-based developer, Ted Nash. The app used draggable markers to tag facial features and then calculated the distance between them to score how closely your face matched the “golden ratio” of attractiveness, finally declaring you “fit” or “fugly”. Although simple – and sometimes highly offensive – this certainly didn’t hold the app back and by November 2009 it had racked up an impressive number of paid (!) downloads, allegedly £85,000 in one day after Apple had taken its 30% cut.
Embracing Early Image Recognition
Windows Phone and its version of the App Store launched in October 2010, and shortly afterwards I started coding and developed my first two apps for the platform, Travelnapp and YuleTile. After reading Ed’s story and how he built Fit or Fugly, I was seduced by the idea of a simple yet fun app making me, a poor student, a lot of money. While the Windows store was sparsely populated I began to look at ideas I could bring to the platform that might emulate Fit or Fugly’s success. Researching, I discovered an Israeli facial recognition startup called Face.com. Their goal was to create the most powerful suite of tools for image and facial recognition, and the technology they’d created was well beyond any of the other services available at the time. Developers could use their representational state transfer Rest API to recognise faces or detect expressions in photos, and, the feature that piqued my interest, estimate the age of a subject. After trying their demo, I was blown away by the accuracy of their algorithms.
Over the course of a few days, and having discussed the idea with some friends and tried out Face.com’s features, I decided to create an app that guessed how old you are from a photo. There were no other apps I could find on Windows Phone, or anywhere else, doing anything similar, which was exciting, and I thought I could surpass any potential competitors with a bonus feature: after the API had made a guess, you could enter your real age and compare its look-alike age to those of celebrities of a similar age.
Building the Product
I knew upfront that creating VizAge would prove a massive challenge, as up to that point both apps I’d created for Windows Phone had no backend component (i.e. no servers or databases). For this app I’d need to build an API to accept these uploads, save them to an online file storage service, send them to Face.com and then return results to the user. I would also need a database to store information about my chosen celebrities with an image, their real age and their estimated age. Being involved in the Microsoft ecosystem and .NET, using Microsoft Azure to host all of these parts was the obvious choice. Once the backend was built I had an ASP.NET Web API endpoint, to service image uploads and age estimation requests and return four randomly selected celebrities; an Azure Storage account whose Blob storage I used to save the user uploads; and Table Storage, which I used to store the basic celebrity information – no need to overcomplicate things by setting up a relational database. To create my dataset of celebrities, I created a Windows Presentation Foundation (WPF) application which I could run on my PC, search Wikipedia for a celebrity by name, extract their date of birth and then save their copyright-free image and estimated age to my datastore.
With a functioning API I then began developing the mobile app. I wanted to create an interface to suit the whimsical nature of the app, and I came up with something that stood out from the other Windows apps. At the time many of them religiously stuck to Microsoft’s Metro design language. I also made use of the built-in animation framework to create custom transitions for the menu items (shown below) and to add small touches like a flash that every now and again appeared on the camera icon.
Choosing a price is never easy when creating a product, and for a Windows Phone developer the choices weren’t quite as straightforward as they had been for early iPhone developers. From the very early days of the platform Microsoft allowed developers to build a trial mode in their app so users could try before they bought. While incredibly consumer friendly in helping users avoid the issues of scam paid apps, it made users suspicious of paid apps that didn’t have a free plan and downloads suffered as a result. Because of this, I decided that a straight free app wouldn’t work on Windows Phone and I included a trial mode whereby users could try the app with three images free before they had to pay £0.79.
A Release and An Unexpected Hurdle
With all components complete, pricing set and plenty of testing done, I pencilled in a release date and began contacting publications that might be interested. Coverage was lined up and all was looking great when some unexpected news struck: on the morning of the launch day for the app Face.com announced they were being acquired by Facebook and their technology would be used inside Facebook to power its image recognition and auto-tagging features. As a result, Face.com would be shutting down their API! Thinking about all the effort I’d put into creating a product that would never see the light of day was pretty demoralising. Thankfully though, after talking to Face.com there was some good news – they were going to allow developers who had already started using an account with them to continue using the API for three months. This transition period would give me confidence to launch as planned and time to look for another service to replace them. VizAge went live to the world!
We received some great coverage from Windows Phone-specific publications and a stream of largely positive reviews started to come in, something I had hoped for but that surprised me somewhat, given the potential for the app to cause offence. A large amount of credit for these positive reviews has to go to the team at Face.com, who provided the magic, but many also complimented the app’s user interface.
“Blown away by the Accuracy, not gonna lie , was a sceptic till I did everyone in the office and it proved correct 7/8 times!”
“One of the best designed apps on Windows Phone! Excited to see what else this team comes up with!”
Keen to sustain the app after the buzz of the launch wore off, I began looking into alternative services that offered similar face recognition APIs to replace Face.com. Orbeus ReKognition (now owned by Amazon) was far and away the closest competitor that featured age recognition. It was easy to integrate into the existing workflow, but it was quite apparent why Facebook had acquired Face.com: their tech and the results it produced were head and shoulders above the competition. As the end of the three-month transition window drew near I made the tough decision that I would switch providers, but ensure no new users could buy the app by removing it from the store and then would shut down the service after a few months.
A Wealth of Experience (but very little money!)
As you might guess, my grand plan for this app to make me thousands of pounds didn’t play out quite the way I imagined. However, dreams of riches aside, VizAge was downloaded over 10,000 times (my biggest app at the time), received 200+ reviews with an average rating of 4/5, and even netted a couple of hundred paid downloads. At the time I was disappointed it hadn’t worked out, but on reflection it was a valuable experience. I created an API, worked with online file storage systems and communicated with a third-party API – all for the very first time, and all skills I would put to use building Foundbite a year or so later.
My experiences building a product around a third-party service have certainly shown me the risks of such an approach and have shaped how I’ve gone about future products involving external APIs. A few years later in 2016, Microsoft launched a site, How-Old.net, allowing anyone to upload a photo for it to guess how old they looked. Although essentially an advert for their new Azure Machine Learning tools, it proved a wild success – 50 million people used the site in its first seven days. Although I can take absolutely zero credit for inspiring its creation, it was fantastic to get the validation that the idea behind VizAge had the potential I imagined!