Real architecture · Junior
Chicisimo: vertical ML in fashion
Real production architecture. Key points: data flywheel and domain ontology.
Short answer
Real production architecture. Key points: data flywheel and domain ontology. Chicisimo is a fashion app whose goal was to offer automated outfit advice. When the article was written, the app had more than 4 million women, and the text is the author's account, who presents himself as CEO and cofounder, of how the data and machine learning approach helped growth.
01 · CONTEXT AND THESIS
Advising what to wear, automatically
Chicisimo is a fashion app whose goal was to offer automated outfit advice. When the article was written, the app had more than 4 million women, and the text is the author's account, who presents himself as CEO and cofounder, of how the data and machine learning approach helped growth.
The team's thesis was that outfits and wardrobes are the best assets for understanding people's taste, and that understanding taste would transform online fashion.
To execute the thesis, the author describes an infrastructure with these elements: a consumer app that stores the clothes in the wardrobe, with an interface focused on capturing the right input and delivering the right output; a data platform that automates the interpretation of what comes in; a dataset that reflects what people wear, what they have in their wardrobe, and how they think about clothing; and an intellectual property portfolio.
02 · THE APP AS A SENSOR
Learning fast with a small product
The team says it launched an extremely early alpha, with one key feature. This allowed them to iterate with real data and get a lot of qualitative feedback.
To find the retention levers, the team used behavioral cohorts and ran them not only on the actions people performed, but also on the value they received.
03 · DATA PLATFORM
From chaotic data to a graph
All of Chicisimo's content is user-generated, and this imposes challenges: the system needs to automatically classify different types of content, create the right incentives, and understand how to match input and output.
The team says the volume of data, being chaotic, was not actionable. The way out was to give structure to parts of the data, which resulted in the Social Fashion Graph, a compact representation of how needs, outfits, and people relate.
The team treats outfits like playlists: an outfit is a combination of items that make sense to consume together. With collaborative filtering, these relationships enable recommendations in different areas of the app.
The diagram below is a didactic illustration of the roles the article describes; the queue and the classifier are our own design choices, not details from the source.
In this design, the app sends the API what people create and express: outfits and needs.
The API publishes the new content to a queue to be classified later.
The classifier consumes the queue and consults the ontology to frame the content.
The result becomes relationships in the graph between needs, outfits, and people.
The recommendation service reads the graph and returns the response to the app through the API; what the person does next feeds back into the cycle.
The article summarizes the effect: the data platform creates a high-quality dataset tied to the app, which improves with each new expression of taste. At the same time, as people give input and respond to the output, the experience encourages them to give more input, which feeds the team with feedback and accumulates data. This loop between product and data is what is usually called a data flywheel, a term that is not from the article.
04 · ONTOLOGY
Giving structure without stifling expression
The app was built for people to express a what-to-wear need. There was noise in the data, and one of the biggest difficulties was understanding how people expressed the same fashion need in different ways: someone who needs ideas for going to school can say so in many different ways. To capture and structure this diversity, the team built what it calls a fashion ontology.
The ontology is described as a multi-level list of all the descriptors needed to define a fashion product or an outfit, plus the relationships between them. According to the text, it allows content to be classified automatically by many factors, makes it easy to match different catalogs, and gives the team a common language.
On top of the ontology, the system converts fashion products into meta-products, abstractions of specific products from any catalog or wardrobe. A fashion product is ephemeral, but its descriptors are not, so the system retains the value. One of the infrastructure's first tasks is to convert every incoming product into a meta-product.
People write the same need in different ways; the normalizer receives this free text.
The normalizer consults the ontology to map the variations to the same need.
On the other side, items from store catalogs arrive at the converter, which describes them with the ontology's descriptors and produces meta-products.
Normalized needs and meta-products meet in the graph, which now uses a single vocabulary.
| Escolha | What the article attributes to it |
|---|---|
| Structuring the data | Gave control. |
| Encouraging unstructured data | Gave knowledge and flexibility. |
| Having an ontology | A common language for the team and matching across catalogs. |
The text concludes that an outfit, a need, or a person can have a lot of understandable data associated with them, if the app lets people express themselves freely and the system behind it is the right one.
05 · ALGORITHMS AND GRADUAL ROLLOUT
Algorithms on a proprietary dataset
According to the author, fashion brings its own difficulties: there is no easy way to match an outfit to a purchasable product, and style is complex for a machine to capture and classify.
In the version published on HackerNoon, the author states that having the right dataset lets you focus on narrow outfit-recommendation use cases and deliver value through the algorithms, instead of spending time collecting and cleaning data.
In that same version, since they already had a product people loved, the team could release early algorithm results partially hidden and increase their presence as feedback improved the results.
The app requests recommendations from the API.
In this design, the established path keeps responding to the app.
The new algorithm runs alongside, and its output appears in only part of the experience.
Feedback signals guide whether the new algorithm's presence should grow.
In the version published on HackerNoon, a new front mentioned is adding a fourth element to the graph, purchasable products, with a system to match outfits and products automatically.
06 · LESSONS AND LIMITS
What to take into your design
In the version of the text published on HackerNoon, the team was small: eight people, four in product and four engineers. The updated version of the same text, however, records that Chicisimo was shut down in October 2020.
Lessons to take away: treat the product as a sensor for the dataset; give domain structure to the data; and launch new models gradually, guided by feedback.
Frequently asked questions
What is Chicisimo: vertical ML in fashion?
Real production architecture. Key points: data flywheel and domain ontology.
What does the Chicisimo: vertical ML in fashion design cover?
It is organized in these sections: Advising what to wear, automatically, Learning fast with a small product, From chaotic data to a graph, Giving structure without stifling expression, Algorithms on a proprietary dataset, and What to take into your design.
How long is Chicisimo: vertical ML in fashion and what level is it?
It takes about 12 minutes to read and is rated Junior level.
Now design it yourself
Run this case as an interview in the System Design school: you make the decisions, the tutor challenges them and you see how your design scores.