Projects

Things I've Built

Work spanning machine learning, full-stack platforms, and data science — split into what I'm building now, solo work, and collaborations with named teammates. Click a tag to filter.

Currently Building

In progress

Live projects I'm actively working on — specs may shift, links go up when they go up.

Buzz — College Event Discovery

Building a native event discovery app for US college students, launching first at UCSD. True multiplatform SwiftUI target compiling for iOS 17+ and macOS 14+ from a single codebase (no Catalyst), with an App Clip for instant check-in and an ARKit 'Look Around' mode that anchors events to real-world buildings. Supabase backend (Postgres + PostGIS + Row Level Security + Realtime), Stripe Connect for paid ticketing, and unified push fan-out across APNs / FCM / Web Push. Next.js 16 PWA mirror with JSON-LD structured data, per-campus landing pages, and llms.txt for AEO. Full club admin tools, Greek-life rush flows, textbook marketplace, and safety features baked in.

SwiftUISwift 6SupabasePostGIS+4

Fair Ludo — Provably Fair Dice Game

Building a Ludo game for web and mobile around a single principle: no rigged dice, no new-user luck, no hidden handicaps. Server-authoritative rolls using a commit-reveal scheme — the server publishes a hashed seed before each game and reveals it after, so players can replay and verify every roll. Planned stack: Next.js for web, React Native (Expo) for iOS/Android, shared TypeScript game logic, Node.js + WebSockets backend, Postgres for accounts and match history. Core RNG and game logic to be open-sourced so fairness claims are independently auditable.

Next.jsReact NativeExpoTypeScript+2

Solo Work

Personal projects

Shipped by me, from empty folder to live users or open-source repo.

Watch Together — Cross-Site Video Sync

Built a Chrome/Firefox/Safari extension that syncs video playback across any number of devices worldwide. Works on Netflix, YouTube, JioHotstar, Disney+, HBO Max, and Amazon Prime Video — anyone can play, pause, seek, or change speed and it propagates instantly. WebSocket relay server on Render with heartbeat-based drift correction (within 0.5s), per-IP rate limiting, host-only mode, ad detection, and built-in chat. 59 server tests + Puppeteer browser tests. Manifest V3 with site-specific player adapters.

Chrome ExtensionWebSocketNode.jsManifest V3+2

Red Bull YouTube Sentiment Analytics

End-term Social Media Analytics project analysing the Red Bull brand on YouTube. Collected 500 comments from the 5 most-commented recent videos via the YouTube Data API v3 and pulled hashtags from 50 video descriptions with yt-dlp. Scored every comment with VADER — 47% positive, 34.6% neutral, 18.4% negative, for a Net Sentiment Score of +28.6 percentage points (roughly double the industry benchmark). Every Red Bull video uses exactly 2 hashtags (#RedBull + #GivesYouWiiings — 100% of catalog), top organic keywords are 'gives' and 'wings', and the main genuine complaint is viewer anxiety about stunt safety. Delivered an 8-chart Excel dashboard, Word report, and a one-page executive summary PDF.

PythonpandasVADERYouTube Data API+3

PCOD Tracker — AI Health Companion

Built an AI-powered health management app for women with PCOD/PCOS. Users vent freely and Claude AI auto-extracts symptoms, mood, diet, and medications. Upload lab PDFs and AI parses hormone levels, flags abnormals, and detects medications. Features cycle tracking, medication streaks, lab trend charts via Recharts, calendar heatmaps, and Google OAuth. 15 Prisma models, 14 API routes, and a supportive, privacy-first UX.

Next.js 16Claude AIPostgreSQLPrisma+2

Gondilal Saraf — Full-Stack Jewelry Platform

Built a full-stack platform for my family's century-old jewelry business — bilingual storefront with live gold rates, 10-year investment charts, and a cinematic heritage design system. Includes a product catalogue with AR virtual try-on, AI-generated descriptions via Gemini 2.0 Flash, and an admin ERP with image processing pipeline (Photoroom + Sharp). 15 Prisma models, 26 API routes, OTP auth, AES encryption, and 85 tests.

Next.js 15PostgreSQLGemini AIPrisma+2

Handwritten Digits Classifier

My first machine-learning project — a TensorFlow/Keras CNN trained on the MNIST dataset to recognise handwritten digits 0–9. Built during the AI elective at Delhi Public School, R. K. Puram, and recently cleaned up into a reproducible repo reaching ~99.2% test accuracy in under a minute on CPU. Walks through the full pipeline end-to-end: data loading and normalisation, a two-block Conv → Pool architecture, training, confusion-matrix evaluation, and a single-image prediction CLI.

TensorFlowKerasCNNMNIST+1

Pet Classifier Model

Early computer-vision project — a CNN that classifies pets from photographs. Originally built during my high-school AI elective at Delhi Public School, R. K. Puram on a private school-provided dataset, then rebuilt as a public, reproducible repo on the Oxford-IIIT Pet Dataset (37 breeds, ~7,400 images). Uses MobileNetV2 transfer learning with a two-stage schedule — head training then fine-tuning the last ~30 base layers — targeting ~92% test accuracy. Ships with training, evaluation, and a single-image breed-prediction CLI.

TensorFlowKerasTransfer LearningMobileNetV2+2

Vaani — Multilingual AI Chatbot

Built a real-time, voice-enabled AI chatbot using OpenAI's API to support conversational interactions in 5+ Indian languages. Integrated speech-to-text and text-to-speech pipelines for smooth, multilingual voice communication. Architected as a Flask backend with separated micro-services and a lightweight frontend — designed for accessibility and inclusivity, especially in rural and semi-digital communities.

OpenAI APIFlaskSpeech RecognitionNLP+1

CardRanker — Credit Card Value Calculator

A small SwiftUI iOS tool that ranks credit cards by net annual value given your spending profile across groceries, dining, travel, and other categories. Takes per-card reward rates and annual fees, then surfaces the card that actually earns you the most after fees — not just the highest sticker rate. A quick personal-finance utility to sharpen my Swift fundamentals.

SwiftUISwiftiOS

Collaborations

Team projects

Group work from UCSD classes and research. Teammates credited on each card.

MLB Playoff Prediction — COGS 108

With Lincoln Wirschem, Ricardo Hernandez, Vedant Patel, Aleksey Dykhno

Final group project (Team 021, Winter 2026) investigating how early-season team run differential per game, on-base-plus-slugging (OPS), and pitching ERA measured over the first 81 games relate to MLB playoff qualification from 2015–2023 (excluding 2020), and how the predictive power of those metrics shifts by season's end. Pulled team-season data from Fangraphs via pybaseball, cleaned and aggregated to half-season and full-season splits, then compared classification performance across both windows. Scope covered proposal → data checkpoint → EDA → final analysis across four notebooks. I led the ethics section — scoping collection bias, downstream misuse, and limitations on any causal claims.

Pythonpandaspybaseballscikit-learn+2

Anduril Industries — MGT 127R S-Curve Case

Team of 6

Final group case study for MGT 127R (Winter 2026) analysing Anduril Industries as a potential new S-curve in defense technology. Structured around the technology-S-curve framework from class — mapping Anduril's product portfolio (Lattice, Ghost, Sentry, etc.), evaluating incumbents' innovator's-dilemma posture, and arguing where Anduril sits on the substitution curve against legacy defense primes. Delivered as a group presentation with strategic recommendations on investment and competitive response.

Technology StrategyS-Curve AnalysisMGT 127RCase Study+1

ARK Invest — MGT 127R Disruptive-Tech Case

Team of 6

Mid-quarter case opening (Week 9, Winter 2026) for MGT 127R examining ARK Invest's disruptive-technology investment strategy. Broke down ARK's thesis framework (genomics, robotics, energy storage, AI, blockchain), their concentrated-portfolio approach, and the return/volatility trade-offs of betting on exponential-technology curves. Framed the fund as an explicit wager on the S-curve adoption rate of multiple compounding innovations — and flagged where that thesis has historically cracked.

Investment AnalysisDisruptive InnovationMGT 127RCase Study+1

Human Activity Recognition — CSE 158

Team of 2

Final group project for CSE 158 (Web Mining and Recommender Systems, Fall 2025) at UCSD. Built a model to classify human activities — walking, sitting, standing, stairs, and more — from wearable-sensor time-series data. Handled the full pipeline: windowing raw accelerometer/gyroscope streams, engineering time- and frequency-domain features, training classifiers, and comparing performance across model families. Covered feature selection, cross-validation, and error analysis against a confusion matrix.

Pythonscikit-learnTime-SeriesSignal Processing+1

COGS 9 — Final Group Project

Team of 2

Final group project for COGS 9 (Introduction to Data Science) at UCSD, Spring 2025 — a two-person data-science investigation completed end-to-end from question to presentation. Covered the full COGS 9 arc: formulating a research question, sourcing and cleaning data, exploratory analysis, visualisation, and delivering findings as a recorded presentation.

PythonpandasData AnalysisJupyter+1

U.S. Power Outages — DSC 80

With Paulina Pelayo

Two-person DSC 80 project (with Paulina Pelayo) analysing 1,534 major U.S. power outages from 2000–2016 across 53 features from the DOE. Covered the full data-science arc: cleaning and timestamp reconciliation, NMAR missingness reasoning, permutation tests, and predictive modelling. Found severe weather drives the longest outages, fuel-supply emergencies are rare but disruptive, and higher residential electricity prices correlate with shorter restoration times (p ≈ 0.007) — suggesting greater grid-reliability investment. Random Forest regressor with log-transformed population density and a severe-weather indicator reached RMSE 6,189 min and R² 0.220, with fairness checks across weather vs. non-weather outages.

Pythonpandasscikit-learnRandom Forest+2