I build machine learning systems and the evidence that they work: probabilistic modeling, uncertainty quantification, and evaluation against human ground truth. Recent Computer Software Engineering grad, based in Chicago.
ElectriAI · second author, submitted to the Journal of Management in Engineering (ASCE), July 2026
End-to-end LLM pipeline behind a manuscript under review, validated against a 26-annotator human consensus.
What do working electricians actually ask, and which of their questions never get answered? I built the end-to-end LLM pipeline behind the paper: scraping and screening YouTube videos and their comment threads, processing 794 transcripts and 66,899 threads into structured question-and-answer records under a 76-theme, ten-category taxonomy, validating the model against an independent 26-annotator human consensus, and shipping a deployed retrieval-augmented chatbot over the result. The headline finding is that only 25.8% of practitioner questions receive a substantive peer answer.
Senior capstone · sole developer of all code on a four-person team
Four uncertainty-quantification methods, including an Ensemble Kalman Filter written from scratch, feeding a red-tide bloom classifier.
How much does uncertainty in modeled river inputs distort a Karenia brevis bloom prediction for Florida's Peace River? I implemented four structurally different UQ methods to find out: residual bootstrap with a Durbin-Watson diagnostic that auto-routes IID versus AR(1) resampling, GLUE over 10,000 Monte-Carlo parameter draws filtered by a Nash-Sutcliffe threshold, an Ensemble Kalman Filter written from scratch in NumPy with covariance inflation and heteroscedastic observation error, and analytic Jacobian-covariance propagation with a condition-number check and pseudo-inverse fallback. Each 200-member ensemble was scored on probabilistic and deterministic metrics, then propagated through a pre-trained Random Forest to turn a deterministic bloom call into a distribution. The key result: EnKF-reanalyzed discharge substituted for real observations at 0.884 balanced accuracy against a 0.887 observed-data baseline, so the reanalysis can stand in for observations in periods where none exist. Two methods failed badly on total nitrogen (0.27 and 0.32 coverage against a nominal 0.90) and I diagnosed why rather than dropping them: a two-parameter linear forward model cannot generate spread when structural error dominates parameter uncertainty. I also trained a multivariate LSTM as a surrogate forward operator, because the source hydrological model emits a static trajectory and cannot be stepped inside a filter. Shipped as an installable package, not notebooks: plugin architecture, a seeded-RNG reproducibility contract enforced in tests, QA/QC checks, a CLI, and a property-based test suite.
Loan-default prediction · solo project, November 2025
Fourteen models benchmarked on 32,416 loans, selected on test ROC-AUC with an explicit overfit check.
A full supervised-learning study on 32,416 loans with a 21.9% default rate: 11 raw features engineered up to 46 after encoding and scaling, then 14 models benchmarked from a dummy baseline through logistic regression, LDA/QDA, KNN, trees, bagging, random forests, AdaBoost, gradient boosting, SVMs, and an MLP. Selection ran on test ROC-AUC with an explicit train-vs-test overfit check, which is what disqualified bagging and random forests at roughly 1.0 train AUC. The work continues past accuracy into calibration, interpretability, and threshold analysis, and it names its own weak spot: the chosen model catches about 74% of true defaults.
The capstone pipeline generalized into a self-serve tool: upload two CSVs, get an LSTM + EnKF reanalysis.
Generalized the capstone pipeline into a tool anyone can point at their own data. Upload a model CSV and an observation CSV, pick the target column, and it runs an LSTM plus Ensemble Kalman Filter reanalysis locally, streaming training progress over server-sent events and returning downloadable outputs with confidence intervals.
Three-service LLM platform that grades pitch decks across six categories, with deterministic scoring.
A multi-service LLM platform that grades uploaded pitch decks across six categories and persists a history view. React frontend, FastAPI/PostgreSQL persistence service, and a Node/TypeScript grading service with structured JSON-schema output, deterministic scoring at seed 42 and temperature 0, adaptive retry, score clamping, an unreadable-deck sentinel, and non-blocking DB writes so grading still returns if the database is down.
Electron control center that runs an entire AI-assisted workflow from one window. Live in-browser demo.
An Electron desktop control center built to run an entire AI-assisted workflow from one window: parallel Claude Code sessions in embedded PTY terminal grids with saved workspace layouts, pop-out panes, and broadcast typing; a full file browser over an Obsidian vault with markdown editing, wikilink navigation, search, and share-to-phone; a 3D knowledge graph; live token-usage analytics; and a gamification layer (XP, levels, quests, pet companion, shop) that turns daily work into progression. The live demo is a faithful in-browser simulation on mock data.
LLM programming tutor that teaches through Socratic hints instead of handing over solutions.
An LLM programming tutor built around a constraint: never give the answer. A modular system-prompt architecture adapts the hint level to the learner, so the model nudges toward the solution rather than writing it.
Five browser games that turn the research corpus into hands-on learning, including a 3D dungeon crawler.
Browser games that turn ElectriAI's research into hands-on learning, from arcade quizzes to Arc Descent, a full 3D action dungeon crawler where questions are the loot economy. Every game is a dependency-light browser build with a question-driven economy, CSV/JSON question upload, and localStorage progress, mapping to the project's ten-category electrical-construction schema.
Normalized five-table PostgreSQL schema modeling fighters, fights, and per-bout stats.
A normalized five-table schema modeling fighters, fights, and their statistics, with aggregation queries for win/loss ratios and outcomes by weight class. DDL, seed data, and datasets included.
Eight Selenium + TestNG classes driving a live browser through Twitter/X user flows.
Eight Selenium + TestNG UI test classes driving a real browser through login, posting, search, and recovery paths across eight areas of Twitter/X, built as a Maven project.
Full Tetris recreation from scratch in C++ and SFML.
Tetris rebuilt from nothing: rendering, piece rotation, collision detection, line-clearing, and scoring, written in C++ against SFML.
Arduino security sensor written in raw AVR assembly on the ATmega328p.
An ultrasonic ranging and alarm system written in AVR assembly for the ATmega328p, working directly against the hardware timers and I/O registers.
I'm a software engineer working in applied machine learning: probabilistic modeling, uncertainty quantification, and rigorous model evaluation, alongside LLM application development.
The thread through all of it is knowing whether to trust the model. Plenty of new grads can get one to produce output. My work is about the evidence: agreement against human ground truth (0.847 Cohen's κ on an independent 26-annotator consensus), calibrated probabilities instead of raw scores (0.0499 Brier on the credit-risk model), and full predictive distributions where a point estimate would be dishonest (four ensemble UQ methods in the red-tide package, scored on CRPS, coverage, and spread-skill).
Two projects anchor that. ElectriAI, an independent research project I built end to end, advised at FGCU and funded by the Head Start Grant, is now a paper on which I am second author, submitted to the Journal of Management in Engineering (ASCE) and under review. Red Tide Reanalysis is my senior capstone, where I was sole developer of all code across five repositories, including an Ensemble Kalman Filter written from scratch in NumPy and an LSTM surrogate forward operator, published as a public Jupyter Book.
I ship the models too, across React, FastAPI, PostgreSQL, and Cloudflare, with systems-level fundamentals in C++ and assembly behind that.