Skip to content
· Selected work

Projects, framed as decisions

The problem, the approach, the metric, what I owned, and what each one proves. The numbers trace to real work, and I’m happy to walk through any of them.

Honors thesis: a framework linking structural inequality to social vulnerability

A GIS-centered framework that traces how place-based structural inequality turns into social vulnerability. Gun violence is the case study I use to test it, not the endpoint; the framework is built to extend to other harms like homelessness.

~45
Determinants
~64k
Perception corpus
In progress
Status
Problem
Most work on harms like gun violence stops at a correlation or a single risk score. I wanted something reusable: a framework that connects structural and spatial determinants to social vulnerability, and still holds when you point it at a different problem.
Approach
Mixed-methods spatial social science, kept interpretable on purpose: logistic regression over black-box models so the results stay explainable, with race-linked variables treated as proxies for segregation rather than group traits. I built a graded workbook of ~45 place-based determinants and am proving it out in Los Angeles before scaling to the ones that hold up. A companion strand studies public perception: I scored a ~64,000-article news corpus for coverage tone, honestly reported a null red/blue-state result once outlet mix was accounted for, then pivoted to a Reddit event-study of community reaction around incidents.
What I owned
Advised by Prof. Asish Satpathy; the framework, the ~45-determinant workbook, the modeling, and the perception sub-study are mine.

Proves Methodological range across spatial statistics, interpretable regression, and multi-method text analysis, on a problem that’s both rigorous and socially consequential. Labeled in-progress, not overclaimed.

  • Python
  • ArcGIS
  • Logistic regression
  • Spatial statistics
  • NLP / sentiment

NYC Subway Ridership Forecast

About 5,350 lines of modular Python, with leakage-safe validation and a conservative promotion rule. I built it the way a team would actually run it in production.

≈89%
Accuracy
~5,350 LOC
Codebase
4-fold + holdout
Validation
ML Engineer
Signed
Problem
Forecast NYC subway ridership across segments in a way planning could actually trust, which means proving the model isn’t quietly fooling itself.
Approach
Rolling-origin, time-ordered cross-validation (4 folds) plus an untouched holdout year; leakage-safe recursive forecasting; WAPE chosen for cross-segment comparability; champion-vs-challenger promotion. I did not promote a model that lost on the holdout.
What I owned
All of it. I signed the dev report as ML Engineer: architecture, validation design, modeling, and the stakeholder, schema, and judge documentation.

Proves Production-shaped governance that’s rare for an undergrad: proof I build my own systems. (Modeling exercise on public MTA data, not MTA employment.)

  • Python
  • XGBoost
  • scikit-learn
  • Pandas
  • Time-series CV

A dashboard leadership uses to compare and evaluate dealers

Leadership needed to compare gas-station dealers against each other. I built the dashboard that lets them rank dealers on throughput: fuel volume and retail sales.

Leadership
Audience
150+
Dealers
300+
Locations
Fuel + retail
Compared on
Problem
Leadership needed to compare performance across 150+ dealers (the gas-station owners and operators) to see who was doing well and weigh which ones to acquire. That comparison lived in hand-assembled spreadsheets.
Approach
Modeled the metrics in Power BI with Power Query and DAX, so leadership could rank and compare dealers on throughput: fuel volume and retail sales.
What I owned
Metric modeling, the DAX layer, and the dashboard structure leadership uses to compare dealers.

Proves Real BI that leadership uses to compare dealers and weigh which ones to acquire.

  • Power BI
  • DAX
  • Power Query

Churn prediction on KKBox streaming data

A churn-prediction model on KKBox’s music-streaming data. Instead of just ranking who’s likely to leave, I tied the model to program ROI to show where retention spend does the most work.

8.7×
Top-decile lift
~0.88
PR-AUC
~0.98
ROC-AUC
$13.6M
Reframed value
Problem
KKBox is a music-streaming service with millions of subscribers. Using their public churn dataset, the task was to predict who’s likely to leave and turn that into a clear call on where retention budget actually pays off.
Approach
Built a lakehouse pipeline on Microsoft Fabric over 30M+ events / 2.3M users; trained and calibrated a LightGBM model, then translated decile lift into net program value.
What I owned
Led modeling on a 5-person team: feature work, calibration, validation framing, and the ROI translation.

Proves Turning a model’s output into a clear dollar decision, not just an accuracy score.

  • Microsoft Fabric
  • LightGBM
  • Python
  • SQL
  • Power BI

Competitor pricing analysis that fed a COO’s bundling calls

Executive-ready analysis of 20+ tour products, built to be decided on rather than just read.

20+
Products
COO / exec
Audience
Decision deck
Output
Problem
A Rome-based tour company needed a clear read on where its pricing sat against competitors to inform bundling and positioning.
Approach
Gathered and structured competitor pricing across 20+ products, then distilled it into an executive deck feeding COO-led pricing and bundling decisions.
What I owned
The analysis, the comparison framing, and the executive narrative.

Proves Commercial, executive-facing analytics during a study-abroad term in Rome. Proof I’m comfortable presenting up.

  • Excel
  • Competitive analysis
  • Data storytelling

This site, designed and built with Anthropic’s Claude tools

The portfolio you’re looking at right now. I built it almost entirely by directing Anthropic’s Claude tools, Claude Code for the engineering and Claude Design for the design system, to show I can actually use modern AI tools to ship real things.

Claude Code
Engineering
Claude Design
Design system
Next.js · React · TS
Stack
Tailwind
Styling
Problem
I wanted the portfolio itself to prove a skill, not just list it: that I can build and ship real software by directing AI tools end to end.
Approach
Designed the visual system with Claude Design and built the whole site with Claude Code (agentic coding in the terminal) on a Next.js, React, and TypeScript stack with Tailwind. I made the calls on direction, structure, and copy; the AI handled most of the implementation, and I reviewed every change.
What I owned
Every decision: positioning, structure, copy, and design direction. I directed the tools and reviewed each change; the build was AI-assisted end to end.

Proves That I can put modern AI tools to real use, directing Claude Code and Claude Design to design, build, and refine a working product rather than just experiment with them.

  • Claude Code
  • Claude Design
  • Next.js
  • React
  • TypeScript
  • Tailwind CSS