I'm a data scientist with a passion for data visualization, outdoor sports, and building tools that solve real-world problems. Below are some personal prjects I completed to learn new things and bring interesting things into the world.
An open-ended analysis of how people describe living with Eosinophilic Esophagitis (EoE), built from ~10,000 posts scraped from the r/EosinophilicE subreddit. Instead of scoring posts against a predefined checklist, an LLM extracts symptoms in each author's own words, and those raw phrases are then clustered into ~60 canonical symptoms.
- Three-stage, resumable pipeline on the Anthropic Message Batches API (Claude Sonnet 4.6): per-post extraction → phrase clustering → aggregation
- Human-in-the-loop review between every stage; hand-editable phrase→symptom mapping tracked in git
- Headline result: dysphagia (35%) and food impaction (30%) dominate, across 4,361 symptomatic posts from 2,811 distinct authors
- Outputs include a top-symptom bar chart, word cloud, and symptom co-occurrence heatmap
- Built with Python, uv, and the Anthropic Python SDK
A neural network that predicts the difficulty grade of a MoonBoard climbing problem from its hold layout, paired with an interactive web app for exploring the problem database and grading your own routes. Trained on 63,388 public 2016-setup problems, it predicts a French grade (6B–8B+) from the binary 18×11 grid of holds a problem uses.
- Small MLP built in TensorFlow/Keras
- Fully static and serverless: the model's forward pass is reimplemented in dependency-free JavaScript so it runs entirely in the browser, with problem data bundled as a static file and served from GitHub Pages
- Three views: search/filter the problem database, compare consensus grades against the model's prediction, and click any combination of holds for an instant predicted grade
A data visualization project that transforms 7 years of personal skiing GPS tracks on Mt. Hood into an animated visualization. The project combines multiple tracks into a single-day view, differentiating between lift-served and backcountry skiing through color coding.
- Technologies: Data visualization, GPS data processing
- Features animated visualization with map integration
An interactive visualization project for professional cycling race results, with a focus on Grand Tours.
- Built with D3.js
- Interactive data exploration
- Live deployment showcasing race results
An open-source API for PDF anonymization, designed to promote equitable hiring practices by redacting personal information from resumes.
- Built with Python, SpaCy.io for NER
- Supports redaction of names and email addresses
- Docker containerized with full API documentation
- Features Swagger UI for easy integration
A practical cloud-based solution that monitors Forest Service road statuses and sends notifications when they change. Built to optimize backcountry skiing access by tracking when roads become accessible in spring/summer.
- Cloud-based architecture
- Automated notification system
Feel free to reach out if you'd like to discuss any of my projects or potential opportunities!

