Projects

Systems I've shipped, experiments I've run.

Engineering work where the goal is a system that holds up, and research builds where the goal is a new result. Every entry carries the problem, the approach, the outcome, and the lesson — because shipping is only half of it.

Shipped systems & engineering

001 · 2024

Market Sentiment Prediction

A human-in-the-loop NLP pipeline turning noisy text into decision-ready signals.

NLP Python scikit-learn Finance
Problem

Market text is loud and contradictory; raw sentiment scores rarely survive contact with a real decision.

Approach

An NLP pipeline with a human review step on uncertain cases, producing structured, auditable signals.

Results

Cleaner, more trustworthy signals than a fully-automated baseline. [ metrics to come ]

Lesson

The human-in-the-loop step isn't a crutch — it's where the system earns its trust.

002 · 2025 · ongoing

Agentic Toolkit

Legible, auditable agents for expert workflows.

LLM Tooling Agents RAG
Problem

Most agents hide their reasoning. For expert work, that's a non-starter — you can't be accountable for a black box.

Approach

Agents that plan, retrieve, and act while exposing every step for inspection and intervention.

Status

In active development — the current main thread of my work.

Lesson

Autonomy is not the goal; leverage with legibility is.

Research builds

003 · 2025

IntExR

Interpretable, evidence-grounded reasoning for clinical decision support.

Python PyTorch Retrieval XAI
Problem

Clinical models predict, but rarely justify. A recommendation a clinician can't audit is a recommendation they shouldn't take.

Approach

Couple prediction with retrieval of grounding evidence, surfacing the rationale and its sources alongside a calibrated confidence.

Results

Auditable explanations that hold up to expert review. [ quantitative results to come ]

Lesson

The explanation has to fit inside the clinician's time budget, or it doesn't exist.

004 · 2024

Energy System Research

Calibrated probabilistic load forecasting with synthetic augmentation.

PyTorch Time-Series Synthetic Data Pandas
Problem

Grid operators need forecasts, but a point estimate hides the risk that actually drives their decisions.

Approach

Deep sequence models that output calibrated distributions, stress-tested with synthetic time-series where real data is thin.

Results

Forecasts that carry honest uncertainty into the decision. [ metrics to come ]

Lesson

Synthetic data is a modeling assumption — name the belief it encodes, or it will bite you later.

Want the detail behind any of these? Let's talk.

Email me ↗ Read the writing