International flags
Photo by Nareeta Martin on Unsplash

We are proud to announce Siggy now supports any non-English Shopify storefront.

Siggy detects if you have a non-English storefront by checking the default store language under the store settings:

Photo by Brooke Lark on Unsplash

Shopify has a “Recommended products” feature that many users might not know. We will quickly explore how to set this up, our initial impressions and how it compares with Siggy out of the box.

The easiest way to enable the product recommendation section is to use one of the official themes from Shopify: (Boundless, Brooklyn, Debut, Express, Minimal, Narrative, Simple, Venture).

There are also third-party themes that support product recommendations.

If you are not using any of the two options mentioned above, it will be hard to get the product recommendations to work. To make things more confusing, Shopify came…

Photo by Carlos Muza on Unsplash

We have recently completed a major migration of our database technology from Hbase (part of the Hadoop stack) to Apache Cassandra.

One of the original appeals for selecting Cassandra is AWS Keyspace since Siggy runs entirely on AWS infrastructure.

However, after testing our Siggy on AWS keyspace, we discovered the following reason for staying away from it:

1. No support for count query and virtual token

We use count query to fetch index status from the database which is a common use case, however, this is not supported by AWS at the moment

We also need to fetch a large amount from the database periodically. We use the…

With the launch of Siggy, our AI-based product recommendation app for Shopify. I thought it would be a good time to share the product journey from the background motivation to any of the future plans.

Back in 2018….

I was working on Trakr, a visual QA automation product where we were running into the problem of needing to classify elements on websites to improve the testing accuracy.

It quickly became clear to me that any rule-based system will not be able to classify the components of a website quickly, easily, and accurately.

Since Trakr relied entirely on taking screenshots of websites to perform…

Preliminary proof-of-concept in Python

As our product recommendation engine (Siggy) matures, we are starting to look at areas that can improve its performance. The two areas of performance we are looking at improving are:

  1. Storage size of the encoding of each image.
  2. Speed of learning - The amount of time it takes to make an image encoding through our Convolutional Neural Network (CNN).

The goal will be to reduce the time needed to “encode” each image as well as reduce the size of encoding for each image.

For this blog post, we will discuss our investigation into reducing the storage size of the encoding.

Image encoding

Siggy uses a “content-based” recommendation algorithm. This means that we only need “content data” for the algorithm to work.

In the context of a product recommender, we only need product attributes such as (Product name, description, images, tags) to generate effective recommendations for the user.

There are three primary reasons we choose a “content-based” recommendation algorithm first:

  • No dependency on user-generated data.
    Siggy does not rely on user-generated data such as ratings to establish relationships between the products, unlike classic collaborative filtering algorithms.
  • Availability of data
    Product information is public and accessible for most e-commerce stores, it is the essential data…

Photo by Guille Álvarez on Unsplash

An important part of working on any project is to have fun. After putting everything together, we can finally browse around and marvel at the recommendations generated by our algorithm.

This is the classic dilemma of building digital products from experience and proven technology vs. trying new things.

  • What is the right balance of the two approaches to use? (Build fast, fail fast? Using what you know and build something that works?)
  • What is the long-term benefit of learning new things and unsuccessfully applying them in the short term?

This has been a major theme in the past few weeks as we struggle to bring the product to its final stages for testing.

Examples and learnings

One of the changes I was keen on making to our queue system in Siggy was making…

We are almost 3-months into the venture of building a functional prototype for our recommendation engine and we are almost there!

Our goals for the functional prototype are still:

  • Installation of the app to a live, production setting Shopify shop with at least 500 products and reasonable sales volume.
  • Providing reasonable recommendations on the individual product pages.
  • The ability to track recommendation analytics.

Additionally, the ability to demonstrate the value with KPMs will be important!

Moving closer to our goals also means we building less and refine more. It is both a tedious and also important process.

Improvements in recommendation

One of the keys to an effective working day or week is to group related tasks together where you can concentrate and make great in-roads. Last week was not one of those weeks.

For example, we had planned various types of tasks:

  • Building the AWS CloudFormation template for our analytics platform (Infrastructure).
  • Various code refactoring to cache expensive data calls, indexing performance, and others. (Code refactoring)
  • Building the configuration for Siggy (Design implementation + frontend development)
  • Testing the recommendation theming on different Shopify templates and refine the look and feel (Testing + frontend development)

At the end of the week…

Chang Xiao


Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store