‘What Women Want’ — A Saree Buyology

Image for post
1928 Illustration of different styles of sari, gagra choli & shalwar kameez worn by women in the Indian subcontinent.

There are over 80 ways of draping a saree. These are mostly styles based on the region. And with the region come the designs and the material. So, the permutations and combinations that one has to go through to choose “one perfect saree” are numerous. So, we set out to understand ‘What Women Want’ while choosing a saree. This was to better understand the social, economical and cultural perceptions towards the saree today and to attempt a solution using new technologies like AI & Vision computing to make the experience of buying that “One perfect saree” memorable, social and hassle-free.

Sarees are one of the oldest clothing articles on the face of the earth. It pre-dates most of the clothing cultures we now have. This traces back to around 2000–1800 bc. Sarees have not just lasted so long but have also modernized in trends and design with time. Even the manufacturing and the sale of sarees has gotten more sophisticated over time. So, you might think choosing a saree should be just as simple as choosing a shirt/trouser. It’s just not that simple.

Understanding Who Wear Sarees Today

The NY times, claims saree draping to be a nationalist agenda (https://www.nytimes.com/2017/11/12/fashion/india-nationalism-sari.html) but as stated before, saree draping predates all of this. So, we decided to take the subcontinent into consideration, on multiple factors and with information from surveys and trends our findings on who wears sarees can be seen as below:

  • Religion divide
    A survey by the NSSO states that saree is not just a hindu attire but christians and muslim households spend considerable share of women’s clothing budget on sarees
  • Economic divide
    Saree breaches the class divide. The effluent class’s saree buying is at 77% which is only slightly higher than the bottom class’s 72%.

Understanding What Women Look For In A Saree

From our earlier understanding that most southern states in the subcontinent favor sarees than the northern ones, we conducted a survey with a small sample size of women, Majorly from tier 2 and tier 3 towns to understand what do they look for in a saree.

who is interested in sarees

Image for post

In the towns, it’s a growing trend that the majority of women in their 20’s are preferring to move to the cities for work and education. The women above 50’s in the towns are parents to the children who are moving to the cities. So, Majority of sarees are being purchased by women who are over 40 years old.

what design are they looking for

Image for post

The graph states that the majority of people looking to buy a saree are always looking for thread works on their sarees. This could be because it is easier to maintain than stones and is not as simple as checks and prints. The prints fall second but lag by a fair margin.

Is Design Everything

Image for post

In every other branding that we see for sarees, we see all the bells and whistles. The shiny rocks on the saree, the glossy silk, the simple prints, but what are people actually looking for?

Designs of the saree seem to be the least important when it comes to preferences, The feel, the material and the quality are what are looked for. In other terms, longevity and usability of the sarees are important than the design. Also, 80% of women choosing design fall between 20–35 years.

Apart from the above insights we have also discovered the following:

  • Gifting a saree is very common in india
  • Majority of women buying sarees buy it for everyday usage and the purchase of fancy sarees is for special occasions where all the classes tend to spend more than usual for that one saree.

So, now that we know what women look for in a saree, Lets look at their buying behavior.

Understanding How They Shop For Sarees

Image for post
From more surveys and interviews, we understand the general shopping patterns.

A process of buying starts in the minds of the consumer, which leads to the finding of alternatives between products that can be acquired with their relative advantages and disadvantages. From earlier, we know that the quality factor prevails in the first position, color and design, comfort and style and price are securing successive ranks respectively.

Image for post

The graph here shows how the market has been growing with larger name brands across all the classes scaling ethnic wear in india. This also shows how affordable ethnic brands are in comparison to western wear.

Image for post

The saree market in india is one of the largest apparel market in the country. There is a significant shift away from traditional sarees towards ethnic wear and western wear. Though the growth seems to be slower for sarees, it still would be the market leader in time to come.

The Influencers

  • Increasing number of occasions

With the growing social boundaries, the number of occasions have increased in india. Formal, informal and traditional occasions have made women increase their wardrobe.

  • Impulsive buying

With offers everywhere and the technology being present in your palm, attraction towards any commodity has fueled impulsive buying for the average indian.

  • Influence of media

Soaps, Movies, Ads, Social media, Personal messages. The visual format of content sharing is enabling users with millions of options and is contributing towards this change in behaviour

  • Increase in fashion sense

With the evolving fashion and media, people are not just looking for utility but for aesthetics too. And with larger brands spreading across the country with scale production, aesthetic clothing is affordable to everyone

  • Aspirational buying

Women today are empowered with the ability of higher spending. Along with it, good clothing is aspirational too. A memorable occasion needs aspirational clothing to complete it.

Where Do They Buy Sarees From

From sales of sarees by local vendors on instagram, facebook marketplace and amazon and flipkart to larger chains and stores, Women today are shopping for sarees in every vertical available. The online market is one amongst the most important reasons in the growth of sarees in India. Since the adoption of Sarees is majorly in rural areas where penetration on internet is increasing day by day, this may result in opening of a brand new revenue pockets for stockholders in Indian sari business The increasing penetration of

Image for post

While the online market and popup stores mostly takes care of the impulse buying and everyday needs of sarees, when it comes to shopping for occasions and events; women still prefer buying sarees in larger stores or from reputed brands. They dont mind the extra effort (and/or) the overhead cost that retail stores bear.

Internet, the increasing buying power of women, high brand consciousness and fashion sense has made e-commerce a crucial medium of shopping.

Customer saree shopping journey

From the customer’s shoes, Buying a saree is a very deeply embedded process with numerous points of friction and points of leverage. Customers interaction with the shopkeeper is only a part of a larger journey that they’re on.

Image for post

The above mentioned is just an outlier of the shopping experience. The nuances and the conditions they evaluate change with every customer.

Conclusion: (This Is) What Women Want.

  • Quality and assurance of the commodity plays a major factor on the buying
  • Emotionally, validation and feedback on what they wear plays a great role in the choice that women make while buying a product
  • Validation and feedback on a product are observed to be attained through conversation on the look and feel and the costing of a saree
  • Though buying a saree requires the evaluation of quality and feel, women prefer the design, work and other visual elements to look at a saree
  • Brand names play a major role
  • The idea behind fashionable clothing is to make someone look beautiful so the search is always for a saree that one looks beautiful in

Why we chose Rust over Lua for our project?

Image for post
Photo by Zsolt Palatinus on Unsplash

Choosing a programming language(s) for a new product is an important strategic decision. It influences a lot of things and has long-term implications for hiring, culture and even the viability of a product.

But the first things to be considered is whether the language is viable for the particular problem statement you are trying to solve. Important questions are:

  • How suitable is the language for your particular use case?
  • Will it perform up to the mark?
  • Will it run on the targeted platform(s)?

These should be the primary questions. But there are more things that might influence your decision. Like:

  • How choosing a particular language will influence your turnaround time from idea to reality?
  • What are the cost benefits of using a particular language?
  • How easy will be it to solve new problems that you might stumble along the way?

Keeping these questions in mind, this article will try to explain our reasoning behind choosing Rust for our new product.

# Use Case

Our problem statement was to use an edge device that can process data from different sources in real-time and create a knowledge graph, therefore the language we choose must be fast to allow minimum real-time latency and use limited resources of an SoC device.

# Performance

Image for post
Languages performance comparison fig.1

Comparing the cross-language performance of real applications is tricky. We usually don’t have the same expertise in multiple languages and performance is much more influenced by the algorithms and data structures the programmer choose to use. But as the benchmarks above show, it is generally believed that Rust performs on par with C++. And performs much better than other interpreter or JIT based languages such as Lua or Python.


As described in the use case above, we wanted to process data in real-time from multiple sensors. Our target platform, SoC devices, use ARM-based CPUs and generally have 4+ cores. We wanted to utilize all CPU cores, that means having multithreading support was important.

Lua does not have native multithreading support, there are 3rd party workarounds but the performance and reliability of those are questionable. Rust, on the other hand, has built-in support for multi-threading and Its ownership, borrowing rules help us write very safe concurrent code.

# Memory Safety

Dynamically typed languages give you a lot of flexibility. Type changes do not need manual propagation through your program. It also gives more mental flexibility, as you can think more in terms of transformations, operations, and algorithms. Flexibility lets you move faster, change things quickly, iterate at a faster velocity. But it comes with a cost. It’s a lot easier to miss potential problems and these problems are generally very hard to debug. Plus these features generally comes with a performance penalty.

On another hand in a statically typed language, a large number of errors are caught in the early stage of the development process, and static typing usually results in compiled code that executes more quickly because when the compiler knows the exact data types that are in use, it can produce optimized machine code. Static types also serve as documentation.

Rust goes above and beyond these points. Rust’s very strict and pedantic compiler checks each and every variable you use and every memory address you reference. It avoids possible data race conditions and informs about undefined behavior.

Image for post

The right part of the chart above shows concurrency and memory safety issues. These are the most complex and unpredictable classes of errors and are fundamentally impossible to get in the safe subset of Rust. Moreover, all these type related bugs are dangerous and result in a variety of security vulnerabilities.

Type safety is one of the Rust’s biggest selling point and is the reason Rust topped as most loved language for 3 consecutive years in StackOverflow Surveys.

The way Rust achieved this feat is by using the concept of ownership of a variable. In Rust, every value has an “owning scope,” and passing or returning a value means transferring ownership to a new scope. You lend out the access to the functions you call, that’s called “borrowing”. Rust ensures that these leases do not outlive the object being borrowed. This not only makes it very type safe but also helps you tackle concurrency head-on because memory safety and concurrency bugs often come down to code accessing data when it shouldn’t.

# Developer Experience

Rust has a steep learning curve. Most of it is due to the “ownership” & “borrowing” concepts we discussed above. Which makes Rust difficult and more time consuming than garbage collected languages like Lua or Python. It requires one to be very aware of basic computing principles regarding memory allocation and concurrency, and It requires you to keep these principles in mind while implementing, this should be the case for any language, but in Rust particularly, you are explicitly forced by compiler to write optimum memory-safe code.

Yet Rust has a lot of features and conveniences that almost make it feel like a high-level language despite the fact that you’re doing things like manual memory management that you do in C++. And Rust has a lot of abstractions that make it not feel like manual memory management anymore.

Low-level control and high-level safety promises developers far more control over performance without having to take on the burden of learning C/C++, or assume the risks of getting it wrong.

# Conclusion

When you want to implement a high-performance concurrent system with low resource footprint, the choice of programming languages is limited. Interpreter based languages tend to perform poorly in high concurrency & low resource environments. System programming languages are the idle candidate for such use cases.

C/C++ is the holy grail of systems programming languages. But there’s a reason C & C++ are also one to most dreaded languages in StackOverflow Surveys. For newer programmer coming out of other higher level languages, approaching C/C++ is hard. The learning curve is very steep. There are approximately 74 different build systems and a patchwork framework of 28 different package managers, most of which only support a certain platform/environment and are useless outside of it. After 30+ years of evolution, new programmers have too much thrown at them.

Rust on other have is comparatively easier to approach, has a sizable community, does not come with decades of technical dept, yet provides comparative performance. Memory safety & easier concurrency are just added benefits.