Student and developer in Chicago. I build full-stack products, privacy-first machine learning, and tools for AI coding agents, often for the people existing software leaves behind.
A trauma-informed platform that guides low-income, pro se filers through Chapter 7 bankruptcy with plain-language explanations and auto-filled official court forms. It provides legal information, never legal advice. The MVP is deployed and currently covers the Northern District of Illinois.
Stack: Python, Django REST Framework, React, TypeScript, PostgreSQL, Docker, Playwright
A lead-generation pipeline for Chicago's under-digitized small businesses. It finds them in public data, scores their potential, drafts outreach with LLMs, and makes first contact through AI voice calls, with a React CRM tracking each lead to close. I'm migrating it from Python to Cloudflare Workers, with differential tests that hold the new code to the original behavior.
Stack: TypeScript, Hono, Cloudflare Workers, D1, React, Python, FastAPI, PostgreSQL/PostGIS
A privacy-preserving deep learning framework for modeling transactional behavior. It applies input-level differential privacy, k-anonymous generalization, and keyed pseudonymization, each backed by a test.
Stack: Python, PyTorch, GitHub Actions
arscontexta (ongoing)
My fork of agenticnotetaking/arscontexta, a Claude Code plugin that builds a personal knowledge system from conversation. I'm extending it with adapters for Codex, OpenCode, and Pi, maps of content rebuilt from note metadata, and a CI test suite that runs under both bash and zsh.
Stack: Shell, Markdown, Claude Code plugins, GitHub Actions
Plugins and harnesses that extend what coding agents like Claude Code can do:
- token-saver-skill: hands routine coding tasks to free models through OpenCode, saving Claude's context and rate limits for harder reasoning.
- agent-pi: runs parallel agents across model providers through Pi, outside Claude's context window.
- adobe-cli: command-line harnesses that let agents and scripts drive Premiere Pro, Illustrator, and Acrobat.
Work in projects I don't maintain:
- colibri (my merged PRs): a C inference engine that runs frontier mixture-of-experts models across GPU, RAM, and NVMe. I fixed a buffer overrun, a use-after-free, and a shutdown hang in its CUDA expert tier, and brought its cache-aware expert routing to the Qwen3.6 engine.
- MoltenVK (PR #2861): the Khronos layer that runs Vulkan on Apple's Metal. While tracking down wrong results in colibri's Vulkan backend on an AMD Mac, I traced the cause to MoltenVK's pipeline cache, which could give a pipeline a shader that ignored its dynamic buffer offsets. I reported the bug and fixed it upstream.
- zentty (my merged PRs): a native macOS terminal for agent-driven development, built on Ghostty. I added macOS 13 (Ventura) support and fixed how its tmux compatibility layer parses the
--end-of-options marker. - printful-mcp (my PRs, in review): an MCP server for Printful's print-on-demand API. I fixed a broken install, silent API errors, and orders that could not be filled, and rebuilt the server on a shared core with a new CLI.
- Languages: Python, TypeScript, JavaScript, SQL
- Backend: Django REST Framework, FastAPI, Hono, PostgreSQL/PostGIS, Celery, Redis
- Frontend: React, Vite
- ML & AI: PyTorch, LLM APIs (Claude, Gemini, Workers AI), vLLM, Claude Code plugins and MCP
- Infra & testing: Docker, Cloudflare Workers, Heroku, GitHub Actions, pytest, vitest, Playwright
Outside of code, I'm a musician and a father.



