About Me

Multifaceted interdisciplinarian with a background in computer science, economics, accounting and financial management.

In Progress

Exam Prep Helper

Improve your exam preparation with interactive quizzes, AI-powered explanations, knowledge graphs, and personalized study guidance that highlights your weak areas and helps you focus where it matters most.

Outbound

Scheduling software as a service for home services, designed to manage appointments and schedules efficiently.

AI Decor Estimator

AI mobile app that estimates the cost of decor from a room photo.

Minutia Notes (Redesign)

Projects

General

Minutia Notes

A multimedia note-sharing platform designed for rich, interactive content creation. Users can create and organize notes with video overlays, customize playback settings, generate AI-powered summaries, and export captions with timestamps. Built with a modern full-stack architecture using Next.js, PostgreSQL, Prisma, and a suite of tools for advanced UI, authentication, and data handling.

BlockNote, Clerk, Drag & Drop, Fabric.js, Next.js, OpenAI, PostgreSQL, Prisma, React Player, React Query, React Table, Shadcn UI, Stripe, Tailwind CSS, TypeScript, UploadThing, Zod, Zustand

Group Order Organizer

Effortlessly organize and track group orders. With features like progress tracking, cost calculation, real-time messaging, and seamless order management, making group purchases stress-free and efficient.

Clerk, Next.js, Nodemailer, PostgreSQL, Prisma, Pusher, React Hook Form, React Table, Recharts, Shadcn UI, Tailwind CSS, TypeScript, Zod

Finance

Dorsal Finance

End-to-end stock analysis platform featuring a Python backend for scraping Yahoo Finance, generating graph networks of stock relationships, and calculating pair trading metrics. A Next.js dashboard presents trending stocks, quantitative metrics, and ranked pair trading insights with correlation and cointegration analysis.

BeautifulSoup, Next.js, NumPy, Pandas, PostgreSQL, Prisma, Psycopg, Python, Recharts, Requests, Shadcn UI, SQL, statsmodels, Tailwind CSS, yfinance

Visual Interactive Stock Network

An interactive graph-based visualization tool that reveals dynamic relationships between stocks based on performance trends, correlations, and industry clusters. Built for intuitive exploration of market structures and evolving stock behavior.

BeautifulSoup, NetworkX, Python, React, Requests, Sigma, TypeScript, Vite

AI & Computer Vision

Photo Tools

Automatic photo cropping using saliency and composition rules. Bokeh effect filter using monocular depth detection and object recognition.

Flask, MiDaS, NumPy, OpenCV, Python, Segment Anything, Torch, Torchvision, YOLO

Climbing Motion Analyzer

Computer vision tool that detects climbing holds and tracks climbers using YOLO and MediaPipe to evaluate hold usage, body positioning, and movement stability with real-time visual feedback.

MediaPipe, OpenCV, Python, Ultralytics, YOLO

Frame Data Meter Annotator

Python-based GUI tool for annotating and visualizing "frame data" of real-world videos. Supports frame-by-frame analysis, annotation modes, and video exporting with overlays.

NumPy, OpenCV, Python, Tkinter

Real-Time Punch Detection

Real-time hand motion analyzer using MediaPipe and OpenCV to detect punch movements based on velocity, direction, and distance, with live visual feedback and punch statistics.

MediaPipe, OpenCV, Python

Bias Match

Streamlit-based app for aligning, averaging, and comparing faces using MediaPipe FaceMesh. Automatically extracts faces, normalizes them, computes an "average face" (bias), and compares new uploads against this reference using 3D landmark distance.

MediaPipe, NumPy, OpenCV, Python, Streamlit

AI Voice Assistant

A Python-based voice assistant that listens to your voice, processes your requests using OpenAI, and responds verbally using text-to-speech technology.

gTTS, OpenAI, Python, Speech Recognition, Text-to-Speech

Data Analysis & Visualization

FREQY Audio

FREQY Audio analyzes frequency response data from headphones and IEMs to identify patterns in tonal balance and manufacturer tuning philosophies. The process includes curve normalization, frequency band sampling for dimensionality reduction, and K-Means clustering. Clusters are formed based on attributes such as spectral similarity, price, and manufacturer. The frontend features interactive charts to visualize and compare the clusters.

Matplotlib, Next.js, NumPy, Pandas, Python, Recharts, Scikit-learn, Shadcn UI, Tailwind CSS, TypeScript, Zod

Toronto Neighbourhood Explorer

Interactive Dash application for analyzing and comparing Toronto neighbourhoods using demographic, economic, and crime data. Features choropleth maps, comparison charts, 3D scatter plots, and statistical summaries for in-depth exploration.

BeautifulSoup, Dash, GeoPandas, NumPy, Pandas, Plotly, Python, Requests

Toronto Crime Data EDA

Exploratory data analysis of Toronto crime trends using open data from the Toronto Police Service. Includes data cleaning, time series analysis, crime type breakdowns, and geospatial heatmaps for pattern discovery.

Folium, GeoPandas, Jupyter Notebook, Matplotlib, Pandas, Plotly, Python, Seaborn

Scout

A competitive play analysis tool that scrapes and analyzes your CFN ranked battle logs to identify patterns, benchmark your style against top players, and suggest ways to improve. Get personalized insights, character suggestions, and players to watch — all visualized with intuitive charts.

Axios, Cheerio, Next.js, OpenAI, Playwright, Prisma, React Hook Form, Recharts, Shadcn UI, Tailwind CSS, TypeScript, Zod

Slam Stats

An end-to-end data pipeline for analyzing player performance in a Street Fighter 6 tournament. The system automates scheduled data extraction, followed by structured cleaning, transformation, and aggregation. Results are visualized via Google Looker Studio, enabling real-time insights into player stats and trends.

BeautifulSoup, Cron, Google Looker Studio, Google Sheets API, OAuth2, Python, Requests, Web Scraping

YT Search

YouTube does not provide native functionality for querying or searching within your Liked videos. This project leverages the YouTube API to retrieve the full list of Liked videos and enables search and filtering. It also includes an interactive dashboard that presents a detailed analysis of video metadata, supporting both visual and textual exploration of consumption patterns and content trends.

Pandas, Plotly, Python, Scikit-learn, Streamlit, TF-IDF, YouTube API

Coffee Around the World

An interactive visual exploration of global coffee varietals, mapping their origins and highlighting unique flavour profiles from around the world.

Leaflet, Next.js, Shadcn UI, Tailwind CSS, TypeScript

Productivity

Coffee Brew Log

A streamlined app for logging and refining your coffee brewing process. Record brew recipes, track results, and identify patterns over time to optimize flavour and consistency. Built with Next.js and TypeScript, featuring a modern UI and persistent localStorage-based data management.

localStorage, Next.js, Shadcn UI, Tailwind CSS, TypeScript

Chrome Tab Organizer

A Google Chrome extension that helps you organize, sort, and group your tabs efficiently.

Chrome Extension, JavaScript

Chrome YouTube Looper

A Chrome extension that lets you loop custom sections of YouTube videos with precision. Ideal for music practice, language learning, or studying, with visual seekbar integration and millisecond control.

Chrome Extension, JavaScript

Quick Watch

Quick Watch helps users quickly understand YouTube videos by generating concise AI-powered summaries, identifying key moments with timestamps, and playback only the most important segments.

Axios, Google Gemini, Next.js, react-youtube, Shadcn UI, Tailwind CSS, TypeScript

Audio & Music

RefMix

Python-based tool that automatically mixes user-submitted stems to match the balance and spectral profile of a reference track using Spleeter and Librosa.

Librosa, NumPy, pydub, Python, Spleeter

Visual Noise Remover

Python-based GUI tool for denoising audio using interactive spectrogram selection and multiple reduction techniques like Spectral Subtraction and Wiener Filtering.

Audio Processing, Librosa, Matplotlib, NumPy, Pydub, Python, Sounddevice, Soundfile

Audio Preference Curve Generator

Visualize and generate audio preference curves based on user preferences. Create curves based on an average of response curves or combine multiple response curves to create a composite.

CSS, D3.js, HTML, JavaScript

YouTube Mashup Creator

A web application that allows users to create custom video playlists by combining specific segments from different YouTube videos. Users can define exact start and end times for each segment, arrange them in any order, and play them as a continuous mashup.

Next.js, React Player, Shadcn UI, Tailwind CSS, TypeScript

Virtual DJ Deck

A simple web-based digital DJ mixing platform built with React, allowing users to mix and blend audio within a browser environment. Features include dual decks, independent playback controls, BPM adjustment, library management, and import/export functionality.

Next.js, React Player, Shadcn UI, Tailwind CSS, TypeScript

Miscellaneous

3D Modeling & Product Design

Showcase of 3D modeling and product design projects created with Blender. Features high-fidelity renders and conceptual prototypes for physical products.

Blender

COGLang

A cross-lingual learning tool that reveals connections between words across languages using the UKC CogNet dataset (8.1M cognates, 338 languages). Features include concept search, randomized word discovery, language pair filtering, and user contributions. Built with Python, PostgreSQL, Next.js, and Prisma for a fast, scalable experience.

Axios, Next.js, Pandas, PostgreSQL, Prisma, Psycopg, Python, Shadcn UI, SQL, Tailwind CSS, TypeScript

Morse Code Typing Test (Encoder)

An interactive web application for practicing Morse code encoding skills. The app tracks accuracy and speed, providing a fun and engaging way to improve Morse code proficiency.

Next.js, Tailwind CSS, TypeScript

Morse Code Typing Test (Decoder)

An interactive web application for practicing Morse code decoding skills. The app tracks accuracy and speed, providing a fun and engaging way to improve Morse code proficiency.

Next.js, Tailwind CSS, TypeScript

Manga Panel Extractor

A GUI application that automatically extracts individual panels from manga pages using computer vision and allows you to combine selected panels into a single image.

NumPy, OpenCV, PIL, Tkinter

Skills

Programming & Web

Programming Languages

Bash, C, C#, C++, Java, JavaScript, Python, R, SQL, TypeScript

Frontend Development

Bootstrap, CSS, HTML, Next.js, React, Redux, Sass, Tailwind, Tkinter

Backend & APIs

Express.js, Flask, GraphQL, JWT, Node.js, OAuth, REST APIs

Data & Machine Learning

Libraries & Frameworks

NetworkX, NumPy, Pandas, PyTorch, Scikit-learn, Statsmodels, TensorFlow, Weka

NLP, Computer Vision & Automation

BeautifulSoup, Cheerio, MapReduce, NLTK, OpenCV, Playwright, Puppeteer, Requests, Scrapy, Selenium, SpaCy, TesseractOCR

Analysis & Visualization

Cognos, D3.js, Data Modeling, Excel, Google Sheets, Jupyter Notebooks, Looker, Matplotlib, Monte Carlo Simulation, OpenRefine, PowerBI, Seaborn, Sigma.js, Tableau

Cloud & DevOps

Platforms & Infrastructure

AWS, Cron, Docker, GCP, Git

Databases

CockroachDB, DB2, MongoDB, MySQL, PostgreSQL, SQLite

Interests

Audio Signal Processing, Computer Vision, Data Analysis, Data Pipelines, Data Visualization, Finance, Generative AI, Linguistics, Machine Learning, Photography, Web Scraping