Find the perfect outfit and create the style that represents you the best with just a few friendly questions.
Finding clothes that match your own style requires some skills and time browsing online stores. Filtering among various categories, searching between old and new apparel, and making sure they what you like in your size takes time. What if you could have a personal assistant at the tip of your fingers? Someone who is always online, ready to talk to on Facebook Messenger. Just like an endless walk-in closet, Personal Shopper offers your a diverse catalog in the form of conversation. It doesn’t matter whether you want to buy an item or create your own style, Personal Shopper makes it easier and fun to discover new clothes. Just like that Kristen Stewart movie!
What it does
Personal Shopper suggests all sorts of clothing items for you, from external online retail shops. With just a few questions, and reinforced with the graphic interface of Facebook Messenger, a brief conversation allows Personal Shopper to suggest products based on a customized set of questions. You can add the items to a personal wishlist, share it with your friends, or buy them (by being redirected to an external web).
How I built it
We built it using Amazon Web Services and have a EC2 instance that is in charge of running the database and the admin application. The bot itself works with Lex and Lambda. The Database that we use is MongoDB, since it allows us to run complex queries required for filtering huge quantities of items. The admin is done using the MERN stack (Mongo, Express, React & Node): On the backend we use Express with Mongoose as ODM. They all run using aEC2 instance. On the frontend, we use React, Redux, and Redux-Saga. The bot itself runs with Lambda and Lex and is connected onto our EC2 instance which stores the database. For some custom iteractions, we use SNS to fire custom messages. We use CloudFormation to deploy our infrastructure.
Challenges I ran into
- Rethink the online shopping experience, to build something simple and friendly, that inside a messenger phone chat.
- Some requirements that are implicit on the platform are hard to find on the documentations (like the length of the words on cards).
- Some useful features related to the platform that currently are not supported by Lex could be useful for these kind of bots, like the sharing button or open a link on the browser button, what made us directly post into Facebook using their API when we need to use them.
- The lack of a way to notify the user when the session has expired makes the conversations somewhat weird, could be fixed by implementing some infrastructure for caching the state by us but it would be nice if instead we could say "Bye" to the user.
- The lack of a way to put a custom userId on the lex testing panel, that would have allowed us to do more accurate and quick debugging, instead, we had to deploy a version with a Facebook id harcoded to being able to test it. ## What's next for Personal Shopper We want to make our Personal Shopper a smarter assistant:
- To recommend clothes according the products that users loved.
- To suggest some items that match the clothes users bought.
To send alerts when an item on the user list is on Sale, or when some new product that user might love is on sale.
We want Personal Shopper not only think to of our style, but also in our pocket. That means, to recommend clothes according to a price range.
We want the conversations to be more natural. Start them with versatile questions that might include filters on them.
This project depends on this other two repositories: