Improving Pinning with a predictive board picker

Pinterest Engineering
Pinterest Engineering Blog
5 min readApr 24, 2015

Yuchen Liu | Pinterest engineer, Discovery

Every day, tens of millions of people discover and save Pins on Pinterest, making the Pinning flow one of the most important features. It’s so important that we’re constantly and carefully making updates to it to ensure ease-of-use and fast load times.

As an active Pinner, I have more than 20 boards where I’m curating collections of Pins. Before, I often found myself scrolling through the drop down list of my many boards trying to find the right board for each pin. This was especially challenging on mobile where only a few boards appeared on the screen at a time. The data showed I wasn’t the only one having this frustrating experience, because active Pinners have 24 boards on average.

As a former Pinterest intern (class of 2013), I started building a smart board picker for iOS and Android in the Pinning flow during a Make-a-thon (our version of a hack-a-thon). The goal was to provide suggested boards based on the match of the content of the Pin and a Pinner’s boards to make Pinning easier.

The magic

We have a rich collection of metadata for the content on our service. For most Pins, we know exactly what they’re about, such as category (like travel), and which keywords are most important based on descriptions written by tens of thousands of Pinners. The same applies to boards. Using these rich data we maintain, we concluded we could predict which board a Pinner intends to save to.

When a Pinner repins, we run a scoring algorithm using the Pin against all the Pinner’s boards and return the best-scored board(s) based on content match. The scoring algorithm uses a linear combination of the following features:

  • Category match: whether the Pin’s category is matched with the board’s category. The Pin and board’s category information is represented as a unit vector, where each dimension tells the probability of the Pin or the board falling in this category. The match is represented as the dot product of the two category vectors.
  • Keyword match: we use keywords to describe a Pin or board. These textual terms place each object in a high dimensional space. We measure closeness in that space by inner product of the two sparse vectors of keywords from the Pin and the board.
  • Activeness of the board: how frequent new Pins are added to the board is also considered in the scoring algorithm. A board that has been abandoned for a long time should be penalized in favor of more active boards.

Figure 1: Smart board picker behind the scenes

Tuning the user experience

Accuracy isn’t the only factor that makes a predictive feature successful. Getting the right user experience is even more important, especially for a feature embedded in the essential Pinning flow. A small mistake could ruin the Pinning experience for millions. Given we were introducing a small latency for fetching board suggestions in the Pinning flow, we needed to keep the impact of the additional latency as low as possible in order to make the repin experience better.

Unfortunately, we didn’t get it right the first try. Our first version on iOS showed the original board picker first (with the three most recently picked boards in the Quick Picks section) while fetching the board suggestions, and then swapped them in the Quick Picks section after they were fetched. Although the numbers showed Pinners were spending less time on the repin flow and quickly picking up this feature, we noticed there was a strange increase in the number of Pinners who edited or deleted Pins. We learned the swapping of boards in Quick Picks was providing a bad user experience (see in the animation below). Those who were trying to Pin to the recent boards would accidentally save to the wrong board when the swapping happened right before they tapped on the board.

Figure 2: First try of smart board picker

To make a better user experience, we added a small spinning circle, blocked the area reserved for suggested boards while fetching them and kept the Pinning flow active. We still show the most recently picked board at the first slot before the two predictions, and Pinners can scroll down a list of all their boards if they don’t want to wait for suggestions. Putting Pinners first is always our priority, and this design successfully reduced the accidental Pinning to wrong boards while still achieving our goal for this feature.

Figure 3: Improved version of smart board picker

Insights

There are several interesting insights from the experiment:

  • Making the Pinning flow easier to use increases repins and repinners: our tests show the smart board picker reduces abandons on the Pinning flow by 4 percent and increases overall repinners by 1 percent.
  • Suggesting correct boards in the Pinning flow reduces the efforts of re-organizing Pins later: our data confirms that the smart board picker reduces the number of Pinners who create boards by 2 percent, who edit Pins by 4 percent and who delete pins by 3 percent. In other words, Pinners are Pinning to the correct boards!
  • The smart board picker is helpful in the core Pinning flow: this feature increased the number of Pinners using boards in Quick Picks by 15 percent and reduced the average time spent on the Pinning flow by 10 percent.

Come try the smart board picker on the latest iOS or Android apps if you haven’t already!

Yuchen Liu is a software engineer on Recommendations team at Pinterest.

Acknowledgements: Smart board picker was built in collaboration with Bin Liu on iOS platform and with Nikki Shah on Android platform.

For Pinterest engineering news and updates, follow our engineering Pinterest, Facebook and Twitter. Interested in joining the team? Check out our Careers site.

--

--