After Projects
After Checkout A/B Test
After Designed an A/B test of two checkout flows on a mock store, choosing the sample size of 8,000 sessions per variant with a power calculation before running it.
After Analyzed the A/B test in Python with a two-proportion z-test (statsmodels) to check significance; the one-page flow raised conversion from 3.1% to 3.7% (p = 0.03).
After Built a Streamlit dashboard that shows daily conversion and a 95% confidence interval for each variant.
After Wrote a one-page memo with a recommendation for a non-technical audience of classmates who had not taken the
After course.
After Subscription Churn Model
After Engineered 12 features from the customer table in SQL, such as tenure and support-call counts.
After Trained logistic regression and gradient-boosted models in scikit-learn to predict which subscribers cancel, reaching 0.84 AUC on a held-out set.
After Built a Tableau dashboard that ranks customers by churn risk and shows churn by plan type.
After Wrote the analysis up in a Jupyter notebook with a plain-language summary for readers who do not work with data.
After Retail Sales Dashboard
After Loaded 1.2 million order rows into SQLite and wrote 8 SQL queries on sales, returns and repeat purchases.
After Charted weekly revenue by region and product category in Tableau.
After Found that 4 of the 31 product categories brought in 58% of revenue.
After Campus Dining Recommender
After Built a content-based recommender over 600 menu items using TF-IDF and cosine similarity in Python.
After Surveyed 45 classmates to evaluate it; 62% of its top-5 picks were rated 4 stars or higher.
After Wrote SQL queries that turn order data into a weekly sales report by product, which the owner used to decide what to stock.
Before Added a Node and PostgreSQL order API with 12 endpoints and a staging environment.
Before Set up GitHub Actions to run the test suite on every pull request.
Before Wrote SQL queries that report weekly sales by product, which the owner used to decide what to stock.
After Explained recursion and hash tables in plain language to a non-technical audience of students with no programming background.
Before Explained recursion and hash tables in plain language to students with no programming background.
Before Shift Lead Jun 2024 – Aug 2025
Before Fernhollow Coffee
Before Trained 6 new baristas on the register, the opening checklist and the espresso machine.
Before Reconciled the till against the day’s sales report at the end of every shift.
Before Scheduled a team of 9 around class timetables using a shared spreadsheet.
Before Opened the shop alone two mornings a week and handled the cash drop.
Before Projects
Before Recycling Sorter
Before Fine-tuned a ResNet-18 in PyTorch on 5,200 labeled photos to sort 6 kinds of recycling, reaching 88% accuracy.
Before Built the demo as a Flask app and presented it to the judges.
Before Budget Tracker
Before Wrote a command-line budget tracker in Java with an SQLite store and CSV import.
Before Added a monthly summary view and 20 unit tests with JUnit.
Before Portfolio Site
Before Built a personal portfolio in React and TypeScript and deployed it with GitHub Pages.
Before Scored 98 on Lighthouse performance by lazy-loading images and trimming the bundle to 140 KB.
Before Added a dark-mode toggle and a contact form that sends email through a serverless function.
Before Campus Dining Recommender
Before Built a content-based recommender over 600 menu items using TF-IDF and cosine similarity in Python.
Before Surveyed 45 classmates to evaluate it; 62% of its top-5 picks were rated 4 stars or higher.
Before Languages & Libraries: Python, Java, JavaScript, TypeScript, React, Node.js, SQL, Flask, FastAPI, pandas, NumPy,
Before PyTorch
Before Data Engineering: PostgreSQL
Before Tools: Docker, Git, GitHub Actions, pytest, Jupyter
After Languages & Libraries: Python, SQL, pandas, statsmodels, Streamlit, NumPy
After AI & Machine Learning: scikit-learn
After Tools: Tableau, Git, Jupyter
These come from comparing the two PDFs' text bullet by bullet. A bullet moved to a new place shows once as removed and once as added.