About
I ship production software for clients, mostly in full-stack TypeScript, from the database schema to the interface and the tests that hold it together. Since April 2025 that has meant four production codebases, including a hiring platform for athletes and veterans and estimating software for construction contractors.
My focus is LLM systems that hold up outside a demo. I treat a model like any other dependency: its output gets measured against evals, and the decisions that matter stay with people. That's the approach behind the MCP server I built for Shift Group's staff and the agent pipeline I use for my own projects.
I'm a fundamentals-first learner, whether that's a new language or a new dish. Outside of work, I produce music, make digital art, cook, and go cycling.
Experience
-
2025 — Now
Contract engineer · Shift Group
Shift Connect matches athlete and veteran job seekers with hiring companies. I work across the whole app, from candidate search to the internal tools staff use to run placements, and built the MCP server that gives staff role-scoped access to platform data from Claude.
500+ pull requests
Next.jsTypeScriptDrizzlePostgresMCP -
2026 — Now
Contract engineer · Ressio
Built Takeoff, Ressio's tool for measuring areas, lengths, and counts on construction plan PDFs, and led it from the PDF vendor evaluation to a full launch for Ressio's customers. Measured quantities flow straight into each estimate.
ReacttRPCPrismaPDF.jsPlaywright -
2026
Contract engineer · Electafile
Rewrote a campaign-finance filing app for North Carolina candidates, with reporting and compliance rules traced to the state board's published guidance.
TypeScriptKyselySQLitePlaywright -
2026 — Now
Contract engineer · PLT4M
Feature work on a fitness and wellness curriculum platform that schools use to assign and run programs in class.
RubyRailsSequelPostgres
Projects
-
2026
Jig
An orchestrator that runs Claude agents through a feature's spec, issues, implementation, and verification. Each stage is a gate that blocks until its condition holds, and every step records its real cost.
TypeScriptClaude Agent SDKSQLite -
2026
Answer Engine
A retrieval-augmented generation (RAG) engine that answers questions about 23 U.S. Census manufacturing reports. It finds sources with hybrid search, combining keyword and vector matching, then cites the page and table cells behind every answer and declines when the reports can't support one. It answered all 61 questions in its test set correctly.
PythonClaudeVoyageLanceDB -
2026
Kalshi backtester
Records Kalshi sports markets around the clock and tests betting rules against them, in backtests and then paper trading, to see whether any beat the fees.
PythonWebSocketsStreamlit -
2026
Bilgewater Broker
A trading tool for a player-run marketplace. It snapshots the whole market on a schedule, tracks each item's normal price over a rolling two-week window, and ranks listings priced below it, with a resale price for each. Built for World of Warcraft.
LuaMarket dataPricing -
2022
Arbiter
An open-source framework for adding multi-room video conferencing to a web app, deployed to AWS with one command.
WebRTCGoNode.jsAWS Lambda
Skills
- Languages
- TypeScript, Python, Go, Ruby, SQL, Lua
- Web
- React, Next.js, Node.js, tRPC, FastAPI, Rails
- LLM systems
- Claude API, Agent SDK, MCP, retrieval, embeddings, evals
- Data
- Postgres, SQLite, Drizzle, Prisma, AWS
- Testing
- Vitest, Jest, Playwright, pytest
Contact
Get in touch
Email is the fastest way to reach me.
