Personal Projects

These projects were mostly or entirely self-directed. For Berkeley-related things, visit the Contributions page.

DT SalePoint

Timeframe: March 2019-January 2020

Languages Used: HTML, PHP, CSS, JavaScript, Java, SQL

Plenty of clubs and organizations at my high school would host food sales throughout the year as their primary means of raising funds. Queues would be long and many students would often miss out on the opportunity to get food. With this in mind, I proposed implementing a system to allow students to preorder food. The system was split into a web app for preordering and a local Java app for the actual point of sale.

Students would pay an in-person vendor a week before the event, then the vendor would fill a form on the web app to push their order data to MySQL. The system would also tally up the total revenue and quantity of food items required to satisfy every student's order. On the day of a sale, we would download the database as a CSV file to have an offline copy. When a student came to claim their order, the Java app was able to instantly look up what they ordered, reducing wait times and keeping the event streamlined.

I debuted this project a local technology fair in 2019 and trained club representatives on how to use the system. Unfortunately, I was not able to see its long-term impacts due to the pandemic, but as my first foray into full-stack software engineering I found it very rewarding.

Job Title Matcher

Timeframe: July-November 2019

Languages Used: Python (pandas and sklearn)

This project was birthed from an internship with a local employment search company, who were hoping to tackle the problem of predicting what job title most closely matches an employer's job post or a job seeker's resume. The main challenges lied in the ambiguity/vagueness of some job titles in English and the fact that many users of the site are not native English speakers (mainly Arabic, Hindi, and Urdu).

I started with a simple bag-of-words TF-IDF approach as a baseline. I calculated the statistic for every possible word-document pair and used a weighted sum to rank the nearest match to a particular job title. I then moved into more rigorous classifiers such as Logistic Regression, Naive Bayes, Support Vectors, and Decision Trees. I later applied grid search and hyperparameter tuning with the goal of improving my accuracy.

Later after the internship, I wrote my International Baccalaureate Extended Essay about some of my findings. I conducted more in-depth research on bag-of-words algorithms and ran more experiments on the same data from earlier using relatively simpler classifiers.