⌘KCtrl Kask my work anything — “what breaks after the demo?”_

AI that behaves
when the demo ends.

I build the parts around the model that make it useful: retrieval that can be checked, guardrails that decide what an agent may do, conversations that survive a hand-off between agents, and tool calling fast enough that people keep using it.

open to senior AI roles·select consulting·remote·applied AI systems

Proof points

in production

Enterprise agents at SPS Commerce — RAG pipelines, guardrails, and multi-agent conversations.

multimodal retrieval

Product images and text embedded into one space, so retrieval stops caring which modality the answer lives in.

tool calling, tuned

Agents that act through MCP and tool calls — profiled and optimized, because a slow agent is an unused agent.

Tools I reach for.

AI / ML

LangGraphLangChainSpring AIRAGmultimodal embeddingspgvectorQLoRA / UnslothGGUF / llama.cppMCPLangSmith

Languages

PythonTypeScriptJavaRustLua

Web / Infra

React 19AstroCloudflare WorkersVercelProxmox / systemdDocker

Bring me the weird edge cases.

Tell me what has to work, what can go wrong, and who has to trust it. I read every message.