Is That What You’re Wearing?
www.itwyw.com
[9/2023: site content needs to be updated!]
Problem: Shows like The Home Edit provide great tips for organizing your stuff. But what if you don’t have a lot of space to get organized in? Most apartments in NYC (and other densely populated areas) don’t come with pantries or walk-in closets. Clothing in particular can be a challenge to store and organize in a way that keeps items accessible & top of mind. When we can’t see what we have, we end up wearing the same things over and over or - worse - buying something we already own but forgot about because it was packed away. When there’s an event to go to that requires something other than jeans and a t shirt, it can be stressful to try to figure out what to wear. Who has time for that?
Solution: a basic CMS for clothing & accessory inventory with a bunch of really useful functionality layered on top for optimal management & utilization. www.itwyw.com. A social aspect is also included for friends to check out each other’s closets to give feedback, and to borrow or exchange clothing.
So far ITWYW has been tested by a handful of users and feedback has been positive!
Implementation Notes
ITWYW was initially built in 2019, but was recently refactored to simplify the rules engine. There are still bugs to be ironed out; and the ML portion, which will generate outfits heuristically based on feedback & metadata is still in development. As of September, 2023 the content needs a refresh!
How it Works
Rules Engine
Rules are created based on temperature range, suitability, style, and - if a specific piece of clothing is on view - subcategory. Each rule defines what to exclude based on subcategories, materials, and colors. Accessories, shoes, and bags are evaluated on suitability & style only.
Rules are user-generated, so there are no baked-in rules except for practical things like not pairing a skirt with a pair of pants...
For "Wear With" users can add occasion and/or temperature conditions to limit suggested outfits, and toggle Rules on or off to see what suggestions are returned. The temperature options always include one for whatever the current weather is.
Outfits
To create outfits, an initial query is made on subcategory exclusions to establish valid parent categories [top, bottom, dress/jumpsuit, pants, skirt]. From there, outfits are constructed from a predefined template of [valid categories] + shoe + bag + coat + accessory. (If the selected top is not a sweater, and there are no temperature exclusions prohibiting it, a cardigan may be included.)
The components of an outfit are built by taking a seed category and building around it. If an item is on view, its category becomes the seed. If not, the seed is randomly selected from [valid categories].
If the seed is a dress, all top & bottom subcategories are automatically excluded. If not, a top and bottom category are selected at random and subcategories from non-selected categories are excluded. Now we have a randomly generated, valid outfit to apply our rules to.
In the event that the random seed & rules result in no valid clothing items returning for a particular category, an alternative [valid category] is selected. The chances of nothing coming back are slim, but it depends on how many rules are in place and how much inventory belongs to each category. Rules should be set up thoughtfully and sparingly. (That said, limited results are a good indication of what the user should look for the next time they’re clothes shopping!)
The more rules a user creates, the less varied the outfit choices will be. The 'Random' option exists as a way to find creative, surprising combinations.
The Future
The app currently allows for multiple users with separate wardrobes. Users can browse and save outfits, and like & comment on them. If users in their circle allow it, friends can suggest outfits for each other.
Currently in development: a "swap" feature where users designate clothes they would be willing to exchange for clothes owned by friends, and a “share” feature where friends can mark specific items they’d be OK lending to each other. Share-able items will show up in other people’s generated outfits (rules permitting).
Machine Learning
The most exciting feature (in development!) is some basic machine learning. The current method for putting outfits together is highly effective, but lacks the personal input you get when you run an outfit by your friends (the name “Is That What You’re Wearing?” sprang from this concept). Incorporating user feedback (likes, suggestions, and comments) into the decision engine will make suggestions more useful.
The Basic Specs
-> ITWYW is built on Rails 5.0.7/Ruby 2.6.3
-> App was originally built in 2019 and refactored in October, 2021
-> Images are stored in S3 and managed via Paperclip
-> Database is MariaDB
-> Caching is brought to you by Redis via Redis Enterprise Cloud on AWS
-> Real-time weather forecasting uses the Open Weather Ruby Client
-> Metrics were implemented (in a rush) using Google Charts
-> Design is responsive (more or less) using standard @media tags
-> Code is managed via git on GitHub
-> Logs are managed by Papertrail
-> DISCO for collaborative filtering/matrix factorization
-> The app runs on Heroku 'hobby' dynos on a tiered plan shared with a custom social media platform called Pixelo. It is likely not scalable beyond a few dozen users.