Scroll

James To

Applied Math & Statistics and Computer Science at Johns Hopkins, Class of 2028.

Experience

Deloitte
Summer 2027

Incoming Software Engineering Summer Scholar

  • Government and Public Services
Trusted Doctors Alliance
Jun to Aug 2026

Data Intern

  • Codeveloped a member portal for 450 pediatric practices, syncing HubSpot
  • Automated weekly vaccine allocation audits across 400+ practices with SQL and Excel
  • Added forum ranking and personalized email digests
JHU Sports Analytics Research Group
Jan to Jun 2026

Data Analytics Researcher

  • Designed a Python optimizer that places all three outfielders to minimize opponent scoring
  • Validated it on 20,000+ TrackMan batted balls with minimum sample size thresholds
  • Delivered a Flask app that plots recommended positions on field diagrams
Superworld
Jan to Mar 2026

Analytics Intern

  • Set up Mixpanel dashboards tracking 13,000+ daily active users
  • Spotted a 37% checkout drop that led to a 4% month over month conversion lift
  • Analyzed A/B tests on retention and engagement

Skills & Tools

Languages
PythonSQLJavaC++C
Frameworks & Tools
FastAPIFlaskSupabaseSQLiteGit & GitHubGitHub ActionsHubSpot
Other
Claude CodeCodex

Projects

ClickTap for details
Project 01 · October 2026
Fare history page: a Baltimore to Atlanta route picker beside a chart of the lowest fare from 60 days out to departure.

BWI Flight Pricing

How do fares out of BWI actually move from one day to the next? This project collects daily prices on three routes out of Baltimore, studies how they change, and tests whether short term changes can be predicted.

10,282prices logged
167trip histories
3routes

The question

Airfare advice is full of rules of thumb about when to book. I wanted to see what the data says for real routes out of BWI, using prices I collected myself instead of a paid dataset.

How it works

  1. Collect. A Python job pulls the lowest daily fares through SerpApi and stores every observation in SQLite, keeping the whole pipeline at zero API cost.
  2. Normalize. Raw results are cleaned and organized into trip histories that follow one departure date as it gets closer.
  3. Analyze. pandas and NumPy measure 1, 3 and 7 day fare changes, with bootstrap resampling to show how confident each estimate is.
  4. Visualize. Five Matplotlib charts, including the fare history view that tracks the lowest price from 60 days out to departure.
  5. Predict. Ridge regression and gradient boosted trees forecast the 3 day change, scored with chronological validation against a baseline that predicts no change.

Status

In progress. Data collection is ongoing and the prediction models are being refined as more history comes in.

Stack

PythonSerpApiSQLitepandasNumPyMatplotlib
Project 02 · August 2026
The pokeprices home page with a row of featured cards and a Check prices button.

pokeprices

A price tracker for Pokemon trading cards, backed by its own data pipeline and an API for exploring how card values change over time.

180+cards
Dailyrefresh
RESTAPI

The goal

Card prices swing a lot, and most sites only show today's number. pokeprices keeps the history so you can see where a card's value has been, not just where it is.

How it works

  1. Model. A SQL schema built for time series pricing across 180+ cards.
  2. Ingest. A Python ETL job collects, cleans and loads new prices every day.
  3. Serve. FastAPI endpoints answer trend lookups over the price history, faster and with cleaner structure than querying raw data.
  4. Automate. GitHub Actions runs the daily refresh and redeploys the site with no manual steps.
  5. Browse. The site features cards like the Prismatic Evolutions set, with a Check prices flow to look up any tracked card.

Stack

PythonSQLFastAPIGitHub Actions