Gift Finding: Matching People to Gifts Sucked, So I Started Matching People to… Other People
About a year and a half ago I set out to solve a painful problem I face several times a year: A close friend or a family member’s birthday is approaching — what gift do I buy them? I always wished I had this magic tool to suggest the perfect gift, a gift tailored specifically for that person. So I thought, why not hack it myself?
So I did. After some thinking I decided on the following approach: I’ll connect the user (gifter) via Facebook, ask for as many permissions as possible so I can get as much information about their friend (giftee), and semantically analyze the giftee’s profile (Thanks, Zemanta API). As a result I’ll have a set of themes (semantic entities), ordered by importance, that should represent the giftee’s personality. I will then use the semantic analysis to query against a gift catalogue and find the most suitable gift personally matched for the giftee. This should work like a charm, shouldn’t it?
I picked Amazon as the gift catalogue off course. It has a huge inventory of products, a very useful API, and… an affiliate program.
So I launched the 1st version of Gnift, and I immediately got very lucky. My submission to KillerStartups has been picked by someone from UrbanDaddy and a story about newly launched Gnift has landed in the mailboxes of several thousands UrbanDaddy subscribers, resulting in several hundreds new Gnift users — Exactly the playground I needed to test and tune the magic algorithm.
After some time and some algorithm enhancements I could very clearly see what was happening: The personal analysis seemed to work extremely well. Much better than I expected. For example, I have a friend who is going to Yoga classes, raising two dogs, and trekking in the weekends. Gnift analysed his Facebook profile as [Yoga, Dogs, Trekking]. In many cases Gnift even managed to order the semantic themes significance in accordance with the person’s real life preferences. So far so good.
However, the second part, the gift matching against the catalouge, well… to that same friend mentioned above Gnift suggested [Yoga Mat, Dog Training Book, Camping Tent]. At first glance that looks fine isn’t it? I mean, it’s suitable right? contextually in place, semantically positioned, isn’t it? or maybe just a bit superficial?
So the person is practicing Yoga alright, but is a Yoga Mat really a good gift for them? Can you imagine someone unwrapping a package and joyfully discover a Yoga Mat? a Dog Training Book just because he’s raising dogs? Isn’t that a little forced? A Camping Tent? Is it possible that the gift matching process was missing something? Maybe it lacked… a soul?
It so happens that when I wanted to actually buy a gift to that friend of mine, I brainstormed with another friend and we both got original and finally bought him a Beer Machine. And… he simply loved it! How come Gnift couldn’t come up with that suggestion based on the person semantic analysis?
At that point I realized that you simply can’t get the right gift by querying a gift catalouge API with the top semantic themes representing a person’s interests. It just doesn’t work.
But there must be a right way. So if it’s not matching people’s analysis to gifts, what can it be? Maybe matching people’s analysis to… other people’s analysis? I mean, let’s say I stumble upon a person with a very similar semantic analysis as my friend’s, this means they must have at least somewhat similar personalities. Does this mean that other person would love a Beer Machine as well?
This was something I really wanted to experiment with. Now I didn’t need the gift catalogue no more, but instead I needed to know what a subset of the users in my database consider a perfect gift for themselves. When I have that information I will be able to match any person’s semantic analysis against that subset, find the ones who are the closest and suggest the gifts they want to that that person to whom a gift suggestion is being searched for.
At first I thought Amazon wishlist will do. Those contain information of what people actually want, what they wished they had, and in practice, what they want their friends to buy them for their birthdays. If I can uniquely connect an Amazon wishlist to a Facebook account in my database… I can’t.
My second idea was Pinterest. Pinning something is like adding it to a wishlist sort of thing. If I pin something and you are similar to me in personality, wouldn’t you like to get what I’ve pinned as a gift? But Pinterest doesn’t have an API…
So what could I do?
Having nothing else in mind, I decided I might as well try simply to ask people to provide the information voluntarily. Or almost so… So I revived Gnift, and right now if you want to search for the perfect gift for any of your friends there’s something you’re asked to give in return. You’re being asked to let Gnift know what you liked as a gift or would have liked. Then your profile is analyzed, and added to the pool of people Gnift can match against. When a similar person to you is searched on Gnift, they are suggested the same gifts you liked.
Does it work better? Truly, I can’t tell yet. I’d be happy if you can give it a shot and maybe write some comments.