Making an open source app to help users craft their own YouTube algorithm — Part 1: Kick off!

James Kim
4 min readNov 30, 2020

Recently, I’ve read this really cool blog post by Chris Lovejoy. In the blog post, Chris describes how he created his own Youtube algorithm and sent the result to his email inbox to stop wasting time. He also open sourced his work! Thank you Chris!

His blog post was very interesting to read because I also waste so much time on YouTube, going wherever the algorithm takes me. The post also filled me with inspiration to start my own side project based on the same idea!

Chris’ project enabled anyone with coding knowledge to easily pull down his repo and craft their own algorithm, but I wanted this to be more widely accessible.

The main challenge

Basically, the main challenge of this project is to design an intuitive GUI that:

  • lets users craft an algorithm visually, using various YouTube statistics (like views and likes) and their own constants.
  • Using the user’s algorithm, orders and filters the search result in real time, to give them instant feedback of their algorithm. This will help them fine tune their algorithm.
rough sketch of what it might look like

I want users to feel:

  • Not overwhelmed by myriad of math/statistic jargons
  • Not feel limited by the system
  • They have control of what kind of video they consume

GUI and UX design being the primary focus, I want to drop any other technical challenges, like:

  • managing deployments
  • thinking about scaling and caching (very interesting problem to think about, but not in this project!)

This means that this project won’t be a SaaS app.

I’m making a desktop app

This project will be an Open source Desktop app. I am planning to sell it on Gumroad for one time purchase, priced below $5. But obviously being Open source, people could just clone and compile it themselves for free, if they want.

I must admit that I did dream about making a SaaS, but have decided against it because of reasons below:

Youtube API limitation

By default, an app can only call YouTube’s search API approximately 100 times a day. This quota can obviously be increased, but regardless I would have to impose some limit on how many times my users can call the search API.

  1. I would rather not impose any limits on my users,
  2. I don’t want to make a SaaS business, however big or small, based on Google’s whimsy.

My app will require users to add their own API keys to the desktop client. This will mean that I won’t have to worry about my app’s quotas and let the users search almost as many times as they want. I’m aware that it is not exactly easy for non-developers to know how to get an API key, but that can’t be helped ¯_(ツ)_/¯

Limit the scope

This is a side project, and I know from many abandoned side projects that I need to be extremely ruthless in limiting the scope of a project, in order to actually ship it.

As I have said before, making it a desktop app means I dont have to worry about things like:

  • authentication
  • managing users and their subscriptions
  • managing api quotes
  • caching
  • setting up servers and deployments

I already do above things as my job as a Authentication Engineer, so I’d rather not worry about them.

You have to be ruthless in cutting out features, like working on bonsai trees. Not that I’ve ever done that before.

But first, validate!

Before I dive straight into making a desktop app, I’m going to first make a marketing website to collect emails from interested people and embed an interactive Proof of Concept(“PoC”).

The PoC will be made in React with extremely limited feature set and it will only work on a mock dataset.

Hopefully, they will be some interested people and they will help me keep motivated and accountable to actually ship a finished product!

Why am I writing this

Speaking of accountability, I am also writing this blog post to keep myself even more accountable — to finish my project and to be able to explain my thinking process. The next blog post will be about making a very rudimentary parser.

--

--

James Kim

Backend Engineer working at Xero. Also passionate about UX, writing and illustration.