Back in the day, you went to Ikea, sat on the 10 sofas they had and bought one. With the advent of the digital age and online buying, we now simply browse catalogues before ordering sofas. But there are thousands upon thousands of sofas. Unlike many products, there are limited filtering options available on most sofa catalogues to narrow your search. How can you expect to find a sofa that fits you?

What it does

That's where Sofa Search comes in. The web application will present you with sofas, each of which you rate from 0-5 stars. As you rate each one, a convolutional neural network will learn your preferences and suggest sofas that more closely match your tastes. This very quickly narrows your sofa search and will ultimately lead you to your ideal sofa.

How we built it

Our primary task was to design a model that would be able to learn your preferences sufficiently quickly, which was designed using information from online sources and trial and error. Naturally, we chose Python with TensorFlow (+ Keras) to accomplish this task. Using Keras also gave us the security of being able to use TensorFlow as a backup: a library we are more familiar with. In order to collect the set of sofas, we scraped the web using Beautiful Soup. We chose Flask to tie together the back end, due to its simplicity and speed of development. For the front-end, HTML, CSS, and Javascript were sufficient to build the clean interface.

Challenges we ran into

Due to the lack of data, the primary issue with our network was high variance (i.e. overfitting), which we counteracted by keeping the network simple and convoluting the image further.

For data collection, we tried to use Scrapy (a web scraping library for Python), however, it had documented issues with Python 3 + Windows 10. Thus, we had to resort to Beautiful Soup, which accomplished the task as we needed. Another issue with data collection was the zooming and animated image thumbnails and windows on various retailer websites, which took some time to figure out and overcome.

We also had several discrepancies in our javascript functionality between our three computers. On one computer it would work, on another code would disappear, and etc. This issue seemed to solve itself, however, we are continuing to pinpoint the exact problem to prevent it in the future.

Accomplishments that we're proud of

We are quite proud of being able to create a machine learning-based hack in the limited amount of time we had. Our minimum viable product came together and we were able to tweak and refine it before submission.

What we learned

This was our first time scraping data online, so we used Beautiful Soup. This was also our primary Flask developer's first time using Flask. Although we had experience using TensorFlow, it was our first time building a convolutional network. We learned a lot about these specific technologies along with web development in general.

What's next for Sofa Search

Sofa Search has a comfy future ahead of it. In the immediate future, we would like to add a "Shopping Cart" of sorts and other convenience features on the site to improve the user's experience.

This model works well due to the consistency of the images available for sofas in catalogues (constant position, blank background, etc). With slight modifications, this model can be generalized to work on a variety of furniture items as well as other products.

We would also like add accounts with a database for this service in order to save the user's preferences. We can also cross-reference user's tastes and dislikes to help new users more quickly find a sofa that matches their needs.

Share this project: