Projects
Selected work in document intelligence, data engineering, model evaluation, behavioral machine learning, LLM agent design, and simulation. Each project has a short case study. Most also have a technical report with the full experiment history, metrics, and steps to reproduce the results.
Document intelligence
Four connected projects about one question: how do you sort and read business documents accurately, at a cost you can defend?
Digital-Mailroom
Capstone · American Family Insurance
The capstone design: one LangGraph pipeline for document routing, prompt experiments, deterministic scoring, and deployment, trained and tested on a dataset I assembled from public sources.
LangGraph Docker Dataset design
Mailroom-ML
Training, evaluation & calibration
A ModernBERT classifier that handles the easy documents quickly. It calibrates its own confidence, so it knows when to pass a document to an LLM.
PyTorch Calibration ONNX Modal
Mailroom Reloaded
Agentic pipeline · deployable rebuild
The mailroom as one service you can deploy. A deterministic driver runs CrewAI agents in a fixed order, escalates hard cases by fixed rules, and records every decision in an audit log.
CrewAI Flows FastAPI OpenTelemetry
RVL-CDIP-Classifier
Vision LLMs & prompt engineering
A study of zero-shot document classification with vision LLMs. It covers 29 tracked prompt versions, accuracy checked on larger slices than the tuning set, cost per page, and Monte Carlo analysis of ensembles and routing.
OpenRouter Evaluation Error analysis
Data engineering & visualization
Mailroom-Corpus-EDA
Data engineering · dataset build, audit & publishing
The data work behind the mailroom projects: 3,302 documents assembled from public sources, with stable identifiers, a record of how each label was made, and labels kept out of the text a model reads. An audit pipeline checks every number it publishes, and once caught itself reporting a false failure.
Python pandas Hugging Face Hub Provenance
AeroGlobe
In active development · 3D flight data on a globe
A browser globe for flight tracking, being built around a static data pipeline so that historical flights can be replayed without an always-on server. It is a work in progress: the globe client and pipeline exist, and playback is planned.
TypeScript CesiumJS React Data pipeline
Behavioral machine learning
Psychometric Digital Twin
Behavioral ML research · UW–Madison
Can an LLM, told who a survey respondent is in the second person, predict that person’s own communication-apprehension scores? Seven classical models against LLM personas on 241 respondents, with error checked by demographic group. The personas did not beat simple baselines.
scikit-learn XGBoost SHAP vLLM
LLM agent design
MORNINGSTAR
Persona framework · prompt architecture
A courtroom of LLM personas that argue, vote, and issue a written ruling on engineering decisions, plus a tamper-evident log library the runner does not call yet. One model plays every seat, and it has not yet been tested against a single-prompt baseline.
Prompt design Python Hash chains
Side projects & interests
Wave Laboratory
Simulation & graphics · runs in the browser
A real-time 3D ocean you can experiment with. Spectral wave models, rogue waves, and ships that move in all six directions run in a Web Worker and render with WebGL 2.
TypeScript Three.js Physics Accessibility
The Mandalay Bay
Game systems · CLI, browser & pixel RPG
A satirical casino resort simulator with one chip wallet shared by a Python command-line game, a browser terminal, and a Phaser overworld. Play chips only.
Python JavaScript Phaser Testing