Work Games
Connections-style word puzzles generated from a client's own documents. A multi-stage LLM pipeline over a vector store, with a human-in-the-loop review UI for generating, verifying, and pairing groups before a puzzle ships.
LLM agents with tool use, retrieval pipelines, and the evaluation and human review that keep AI output right once it is live. Python, TypeScript, C#, and C++, across backends, desktop apps, and self-hosted infrastructure.
Connections-style word puzzles generated from a client's own documents. A multi-stage LLM pipeline over a vector store, with a human-in-the-loop review UI for generating, verifying, and pairing groups before a puzzle ships.
A C++ retrieval-augmented generation engine and server for indexing and searching document collections, built for local, on-prem retrieval.
About the projectA cross-platform Electron desktop app for local LLM chat, with a React front end, in-app store, and Stripe payments, running on a custom C++ inference engine.
About the projectA published WordPress plugin: a Node.js backend that indexes the site's content and answers visitors' questions grounded in it.
About the projectCopy on one device, paste on another. A gRPC server with Redis-backed sessions and native clients across five platforms.
About the projectA self-hosted audiobook server with XTTS-v2 voice cloning and a FIFO queue on a Mac mini worker.
About the projectMarkdown progress tracking for my fiction, with a custom MCP connector so AI assistants can read and update it.
About the projectA writing environment with a reader built in. In design.
About the projectSeven years at Electric Pipelines, a small software company in Kalamazoo, shipping products and client systems from the first conversation through production. The company builds automation, custom bots, and AI-powered tools.
These days the work is mostly agentic systems: tool use, retrieval, structured outputs, guardrails, and the evaluation harnesses that tell you when a model is confidently wrong. I build with Claude Code daily, spec first and tests first, and review what it writes before it merges.