Personal portfolio

AI systems builder. Practical product engineer.

I build agentic workflows, internal tools, automation systems, and AI-native software for messy real-world work.

Apps, prototypes, tools, and experiments

A focused index of current public products: Masthead, ChartStead, Pip, Hotel Cleaning Schedule, Executioner, Milkbench, Wargus TypeScript, and Rat Detective.

ChartStead product showcase: publish a program you trust, with agenda readiness and fictional sample data
Second product Conference programming

ChartStead

Conference programming and speaker management—from first proposal to a public program you trust.

Open product →
Pip product preview
Case study Finance workflow

Pip

AI-native spending companion centered on Spendable Cash Today, deterministic financial logic, and agent-assisted explanation.

Open product →
Hotel Cleaning Schedule product showcase with deep-clean calendar UI and validated schedule
Live product Hospitality ops

Hotel Cleaning Schedule

Deep-clean schedule planner for hotel operators: room list and capacity in, a validated room-by-room calendar out with blackouts and export.

Open product →
Executioner logo
Case study Execution

Executioner

Personal execution system that turns messy brain dumps into structured outcomes and schedule previews.

Open system →
Milkbench visual with a milk pour, model names, and Luna, Terra, and Sol results.
Live experiment AI evaluation

Milkbench

A playful visual benchmark for comparing GPT 5.6 models on taste, with Luna, Terra, and Sol presented as distinct model personalities.

Open experiment →
Wargus TypeScript: classic RTS in the browser, Garden of War human vs CPU
Live demo Browser RTS

Wargus TypeScript

A classic RTS in the browser. Human Alliance vs the CPU on Garden of War—harvest, train, build, and fight live without a desktop install.

Open demo →
Rat Detective: City Under Siege title screen
Live game Creative web

Rat Detective Online

Playable multiplayer browser game built with Three.js, TypeScript, socket.io, and physics-based interactions.

Open game →