LoadBrief
A LoRA fine-tune of Llama 3 8B that writes structured athlete load-management briefs. It scored 0.960 on risk classification — then a bag-of-words baseline scored 0.950, and the paper became about why.
Applied machine learning
I build models, then check whether their numbers mean what they appear to. Four years in proteomics and genomics labs, now finishing an M.S. in Data Science at UVA. My projects tend to end with an audit.
Clinical genomics workflows under regulated quality systems, where every reported result has to trace back to a validated measurement.
Ran high-throughput proteomics assays and traced sources of run-to-run variation. Where the habit of separating real effects from noise started.
What I write day to day.
What I train models with.
FinRL
tidymodelsMethods I've worked in.
Getting it clean, then showing it.
MatplotlibPower BITableauWhere it runs.
What I'm learning next.
A LoRA fine-tune of Llama 3 8B that writes structured athlete load-management briefs. It scored 0.960 on risk classification — then a bag-of-words baseline scored 0.950, and the paper became about why.
Optic disc and cup segmentation across four public datasets. Strong on benchmarks at 0.844 Dice, it fell to 0.251 on real UVA clinic images. Hybrid training closed part of the gap.
PPO agents with FinBERT news sentiment, deployed to live paper trading. Single-seed backtests looked strong; across 17 runs the seed moved Sharpe more than any design choice, and nothing beat buy-and-hold.
UVA Ophthalmology capstone award, 2026
LoadBrief — how a 0.960 accuracy turned out to be recoverable by a bag-of-words baseline
Optic disc and cup segmentation, and the public-to-clinical domain gap
PPO with news sentiment, and what multi-seed evaluation did to the result
Happy to talk about any of this work. The fastest way to reach me is email.