YouTube Sentiment : Chrome extension backed by an MLOps pipeline by Aswin ShineYouTube Sentiment : Chrome extension backed by an MLOps pipeline by Aswin Shine

YouTube Sentiment : Chrome extension backed by an MLOps pipeline

Aswin Shine

Aswin Shine

A Chrome extension that reads a YouTube video's comments and shows how the audience feels. LightGBM at 85.3% accuracy, DVC, MLflow, Flask on EC2.


One click to read the room, and the pipeline behind it.

YouTube Sentiment Insights is a Chrome extension. Open a video, click once, and it reads up to 100 comments, labels each one positive, neutral or negative, and shows the split, the trend by month, the words that come up most and every comment with its label. Behind the popup: a LightGBM model trained through a DVC pipeline, tracked and registered in MLflow, served by a Flask API in Docker on AWS EC2, and released by version tag through GitHub Actions.

The product.

The popup finds the video ID in the tab, asks the API for the comments, and draws the result. If there are no comments or no server, it says which and offers Retry. On a real car review it read 100 comments with an average of 0.25 (36% positive, 53% neutral, 11% negative).

Lavender on navy.

Five colours and two faces, read from the popup's own stylesheet: Outfit for headers, Inter for everything else.

How the model decides, honestly.

Three real comments through the repo's own cleaning and vocabulary: two land in the right lane, one complaint is called positive because cleaning dropped the word "too". That miss is first on my list.

Learned on Reddit.

One command, dvc repro, runs five stages over 36,793 labelled Reddit comments: ingest, clean, TF-IDF plus LightGBM (367 trees), evaluate, register. Every run lands in MLflow. The model scores 85.3% accuracy and 84.9% F1.

Ships on a tag.

Pushes to main run nothing. A version tag runs three jobs: unit tests, an image to Docker Hub tagged with the version, and a self-hosted runner that redeploys the container on the EC2 host. The YouTube API key lives on the server, never in the extension.

What broke, and what's next.

A registry model that rejected a bare array, an image built without its vectorizer, one stray character that broke every video, and an API key that sat in the extension. Next: train on YouTube comments, HTTPS in front of the API, read past 100 comments, real tests.
Like this project

Posted Oct 15, 2026

A Chrome extension that reads a YouTube video's comments and shows how the audience feels. LightGBM at 85.3% accuracy, DVC, MLflow, Flask on EC2.