Tuesday, October 14, 2014

Meet the Engineers Behind Polyvore: Esha Pathak

Get to know the Polyvore engineering team! Here, Esha talks about how she works with big data, our tech stack and what makes up our engineering culture.


What do you do every day?

I’m on the infrastructure team, so I help maintain our backend infrastructure in our Data Center and Cloud on AWS. In addition to my day job, I love getting updates on all the latest fashion trends from our creative community. It’s pretty cool that I’m able to help build a platform that empowers people all over the world to express their style.

How does Polyvore’s scale affect your daily work?

As our Polyvore community grows, my team continues to scale our backend systems. With new features built on our data, I help create new Cassandra clusters, and scale the existing Cassandra clusters by adding more nodes to accommodate our growing data. Cassandra is our backend for storing our unique outfit data for our newly launched Style Graph, which provides users with personalized product recommendations.

Tuesday, October 7, 2014

Software Engineers Wanted....For Style Advice

"Software Engineers Wanted...For Style Advice" - not two things that you'd necessarily expect in the same sentence. But that’s what we do here at Polyvore, using machine learning and data science.

Today we’re excited to announce the launch of personalized recommendations on Polyvore for iPhone. You can download the app here!

Although the user experience of a personalized feed is simple and delightful, what goes on under the hood is quite complex. Personalization is no easy feat, but we were able to create hyper-personalized recommendations at scale that produce a 4x increase in product likes (one of our key measures of engagement).

Over the next few months, we’ll be doing a series of blog posts about how it all works. To get started, here's a quick infographic explaining the problem, our approach, and the results:


So, why is style such a hard problem?

Style is complex and nebulous. It's intangible, highly personal, and constantly evolving. Think about how you would try to go about describing your style or the kind of image you want to project. Think about all the details that need to be taken into account: the occasion (wedding vs. vacation), time of year (winter vs summer), situation (work vs. weekend), all the way through to tiny details that you love or hate (rhinestones and fringe, anyone?). It's not a straightforward problem with clear rules that you can encode.



Our goal is to quickly understand (and constantly learn about) our users' style, and provide a large number of real-time recommendations that match that style. We use hardcore data science to help shoppers get inspired, and find great products, through personalizing their experiences in our applications.

Big data = big value

Polyvore is uniquely positioned to build a personalized experience around style because of the kinds of data we have:
  • User-generated content (UGC) - 'sets' representing outfits/style/fashion where the combination of items is human and individual
  • Structured product catalog - rich metadata that allows us to have a detailed understanding of the items in the UGC 
  • Shopper behavior information - likes, outbound clicks, engagement (looking at what, and for how long)
  • Editorial content - representing years of curation experience, providing fashion-aware content discovery
These kinds of data, combined with the volume of that data, from years of active community and members (~3M sets/month) enables us to apply machine learning and data-mining to understand something as nebulous as 'style'.



To make the problem even more interesting, our notional 'Style Graph' is much more dynamic than other 'Graphs' as we also need to take into account things like seasonality and trends that can come and go within days or weeks.  Our focused dataset means that we can get robust results from our algorithms without having to wade through noise and uncertainty.

Constructing the Style Graph




In future blog posts we'll go into details about the systems and algorithms that run at large scale to provide personalized, real-time recommendations. We'll talk about:
  • Platforms: Mahout, EMR, neo4j, AWS and Cassandra
  • Mathematical techniques: collaborative filtering, associative rule discovery, principal component analysis
  • Statistical experiments: what valuable and interesting insights have we gained so far?

Post a comment if you'd like us to consider covering something specific or answer questions you have. Make sure you subscribe to this blog and watch for our follow-on posts! And for more information on our team, check out our About page.

Wednesday, August 20, 2014

The 10 Biggest Surprises of My Polyvore Internship

Hi, my name is Julia Alvarez and I am a junior at Brown University, pursuing a degree in computer science. You should know that I am not one of those programmers who has been coding since I was in diapers. In fact, I switched from psychology to international relations to English and finally to computer science.

I "discovered" computer science after stepping into the opening day skit of Brown’s legendary CS15, an "Introduction to Object-Oriented Programing" course, and was hooked. I found that the beauty of CS was that I could actually make something useful, all while sitting at my desk. I wanted to learn more and to practice this magical "making" process, so I started hunting down a summer internship.

I had a mentor who did not work at a tech company, but knew many people who did. When she told me she knew some people who worked at Polyvore, I got really excited, because I had not only used Polyvore before, but I really liked it, and really believed (and still do) they had huge potential for growth. When they called me and told me they would like to interview me, I of course freaked out and said yes right away.

It has been ten weeks since I began my internship, and I would like to share the 10 most surprising things I have learned during my time here.

Friday, August 8, 2014

Diversity and Meritocracy at Polyvore

Nine months ago, a female engineer named Tracy Chou posed the question: Where are the numbers? Since then, over 170 companies have released their diversity numbers. Today we’re releasing Polyvore’s.



Many companies focus on increasing diversity at the front of the hiring pipeline. I think it’s equally important to think about what happens *after* people join a company. I believe one of the best ways to cultivate diversity in tech is to cultivate meritocracy. Simply put, people should be rewarded based on the merit of their work, regardless of their gender, race, age or tenure. This is fairer for everyone, period.

To achieve meritocracy at Polyvore, we try to be thoughtful about our processes and cultural norms. We use objective measures of success, like clear team goals and metrics. We use Scrum retrospectives and departmental email updates to ensure transparency around what’s being worked on, by who, and why it matters. We encourage a culture of explaining and asking why, to ensure that decisions are made based on the merit of people’s arguments, not on seniority or social clout. As CEO, I take the time to explain how we arrived at our strategy, versus just telling people to march in a particular direction. Although we have many fun social events (offsites at the beach, scotch o’ clock, doffle tastings), we ensure that important work decisions happen at work during work hours, not at events where some people might be absent. This prevents the formation of an “inner circle” (often a “boy’s club” at other companies) that excludes people from important decision-making.

No company is perfect. We’re certainly not as ethnically diverse as we could be. But as a female Computer Science grad whose 2005 department t-shirt was a drawing of 6 male stick figures and 1 female stick figure (a joke about the gender ratio), I’m proud that Polyvore’s engineering team is 26% female, well above the industry standard of 10-15%. I’m looking forward to seeing even more female engineers join us!

Most of all, I’m proud that our engineers work together every day on solving interesting technical problems, from crawler automation to image masking to mobile growth hacking, with the shared goal of being great engineers, regardless of gender, race, age or tenure.

To learn more, check out our team in action and find out about their hidden superpowers...



(And if you’re interested in joining us, check out our Jobs page! ;-)

Tuesday, May 6, 2014

Optimizing Upsells: How We Drove Millions of App Installs

It’s pretty tough to get people to download your app, and relying on App Store SEO can be unpredictable. However, one of the few levers you do have control over is the web traffic you already own. It’s now common practice to direct mobile web visitors into the App Store via some kind of promotion.

But ... what works the best? How much does the UI matter? How about the copy?

Optimizations like this are great opportunities to use A/B testing and data-driven decisions. Over the past year or so, we’ve run several experiments to see what works the best for us. Read on and see if you can guess the outcomes correctly!


Experiment 1: Straightforward vs. Promo

We had originally launched the Polyvore iPhone app with a straightforward “Get the app!” message and a screenshot of the editor. But, since then, the app has done consistently well in its downloads and ratings, and we wondered whether conveying that would help. We also knew that not all of our users are interested in the editor, so perhaps focusing on a different part of the app experience would be better.



L: Straightforward + editor message / R: Promo + shopping message

Wednesday, April 2, 2014

6 Simple Steps to Mobile-Friendly Email

Why Mobile Emails Matter

While our mobile website is becoming a larger and larger portion of our traffic, we still see more users on our desktop website. So when we pulled data around our emails (and we love data), we were surprised to learn that most of the emails we send are actually opened on mobile devices.

Just as our mobile site is designed and built to be a great experience on the phone, our emails needed the same special thought and treatment. It sucks to open an email on your phone with tiny text, or images that stretch off the page, or links that are too tiny to click on a touchscreen.


We set out to ensure our emails, whether opened on a desktop client or a mobile phone, were as delightful as the rest of our site. Along the way, we found many guides and blog posts on the Internet, but nothing that laid out the whole process. We also ran into several pitfalls during development that we had to work around, so we've gathered them here in hopes of saving you the pain of having to discover them yourself!

Tuesday, February 25, 2014

Squash Bugs While You Sleep: Automating JIRA

We've got issues. Oh boy, do we have issues. To keep Polyvore's databases filled with up-to-date information about the best and latest products you want to see and buy, we crawl hundreds of partner websites (with their permission, of course) and load feed files from dozens more. Every time one of those retailers changes their website design, our crawler configuration has to change. Every time one of those sites adds a "New Summer 2014 Collection" section, our crawler needs to know about it. And every time one of those stores has a website problem, our crawler has a problem. With hundreds of websites to crawl, we run into 5-10 errors a day, plus a bunch of warnings. Somebody should really fix all of those things...

Over the past couple of years, Polyvore's approach to issue tracking has evolved from countless hours of human labor into an indispensable tool that multiplies our attention tenfold. I'd like to walk you through our process, in the hopes that you see something that looks familiar and maybe even enlightening.