Projects

Two things I built because I wanted them to exist.

Michi Desk

options research, in progress

A research dashboard for options trades that tracks whether my thinking was right, separately from whether I made money. Those two things get conflated constantly and it makes people worse at both.

It scans a watchlist for unusual options activity. Signals that clear liquidity and expiration floors go to a Claude adjudicator that returns a structured card: the case, the bear case, entry zone, stop, target, confidence rating. Every card gets logged whether I take it or not, with a forced written reason. A resolver then walks daily price history to determine which plan level got hit first, so the journal can compare cards generated against trades taken against trades passed.

The design constraint that shaped everything: it can't be allowed to flatter me. Low conviction cards have to be able to say so. The first live run returned a confidence of 1 unprompted, which is when I knew the prompt was working. Inconclusive outcomes get bucketed separately instead of counted as wrong. Hypothetical positions are labeled as hypothetical and never shown as real returns. It would be very easy to build a version of this that makes me feel like a genius. That version would be useless.

Up next: the full journal screen with scorecards, a calibration curve, and a head to head of my calls against the app's.

Python and FastAPI on SQLite, React PWA frontend, Tradier for market data, Anthropic API for adjudication. 93 tests passing. Built with Claude Code.

A Michi Desk card for NIO, showing the signal, the contract, position sizing, maximum loss and daily theta cost.
One card. The signal that triggered it, the single contract the rules picked, and what it costs per day to be right. Sizing and warnings are computed, never written by the model.
The Michi Desk scorecard, with thesis accuracy and trade profitability tracked in separate panels, and a confidence calibration chart below.
The scorecard, with nothing in it yet. Thesis accuracy sits on the left, money on the right, and they never get added together. Paper positions are kept apart from real ones.

Poker Advisor

macOS, finished

A live overlay that reads a poker table off the screen and analyzes every move as it happens.

Swift, using ScreenCaptureKit for frame capture and the Claude Vision API to interpret board and hand state. It computes exact odds, updates after each action, and keeps a running journal of opponent tendencies that carries across sessions.

The interesting problem here wasn't poker. It was state: getting a vision model to read a screen reliably, then hold a coherent picture of a hand across dozens of small updates without drifting. Built for private use in home games with friends.

Screenshot goes here