# Kevin Murphy

> Product engineer (applied AI) building user-facing AI surfaces and shipping open-source primitives. Based in Tempe, Arizona. Open to product-led teams in 2026.

Five years of production frontend at federal scale (Federal Reserve FedNow, IRS.gov, Michigan unemployment insurance) plus three years on the ASU Mobile App on React Native + AWS. Now building AI-applied product surfaces in the open: tablesalt (generative UI for CSV agents), streamfield (React library for AI streams), and orchestration / eval / tool-design artifacts (grant-pilot, fedbench, fieldops-mcp).

Education: BA cultural anthropology, University of Vermont (2015).
Certifications: AWS Certified Developer Associate, AWS Solutions Architect Associate (both current).

## Canonical pages

- [About](https://kevinmurphywebdev.com/about): origin story, hiring case, what Kevin's looking for
- [Portfolio](https://kevinmurphywebdev.com/portfolio): shipped work, OSS artifacts, federal case studies
- [Demos](https://kevinmurphywebdev.com/demos): interactive demos of the OSS work
- [Resume](https://kevinmurphywebdev.com/resume): full work history, downloadable as PDF
- [Contact](https://kevinmurphywebdev.com/contact): how to reach Kevin

## Blog (writing)

- [Building issuegraph: a LangGraph triage agent, with the evals to prove it works](https://kevinmurphywebdev.com/blog/building-issuegraph): I build applied AI in the open, from multi-agent orchestration to retrieval. issuegraph puts LangGraph through the same bar: a GitHub issue triage agent as a state machine, with conditional routing, a bounded quality-guard loop, human-in-the-loop interrupts over Redis checkpoints, and a LangSmith eval suite that checks whether the classifier's confidence is honest. This post walks the graph architecture, the interrupt-and-resume plumbing, the one bug that taught me the most, and the calibration math.
- [Building anchor: dual-surface product pages, agents.json, delegated-authority checkout, and AEO instrumentation](https://kevinmurphywebdev.com/blog/building-anchor): Anchor is an open-source AI-native product catalog. Every product has a human page AND three statically-cached LLM-facing endpoints. A /.well-known/agents.json descriptor publishes capabilities in the Agentic Commerce Protocol shape. A delegated-authority checkout endpoint runs an eight-check pipeline. AEO instrumentation classifies 13 LLM crawlers and logs every fetch through a proxy so cache hits stay observed. Here are the design choices that mattered.
- [Loom: durable AI commerce with Vercel Workflows, exactly-once side effects, and a bounded agent gate](https://kevinmurphywebdev.com/blog/building-loom): Loom is an open-source backend that demonstrates the patterns required to let an LLM influence real money movement safely. Four Vercel Workflows run end-to-end with durable sleep, exactly-once side effects, saga compensation, Stripe webhook drift reconciliation, and a deterministic authorization gate that bounds every agent decision. Ships with an adversarial eval harness and a failure-injection harness. Built on Vercel Workflows (GA), the Vercel AI SDK, Anthropic, Stripe, and Upstash.
- [Building Forge: a multi-agent debugging concierge in production-grade TypeScript](https://kevinmurphywebdev.com/blog/building-forge): Forge is an open-source multi-agent debugging concierge. Point it at a stack trace and four specialist subagents fan out in parallel, each with a focused tool set, before a coordinator merges their structured findings into ranked hypotheses with calibration-weighted confidence. Built on the Vercel AI SDK plus Anthropic. This post walks the architecture: parallel agent orchestration, durable resumable sessions, cross-instance abort, Brier-score calibration as a feedback loop, and what production deployment would change.
- [Auditing my own portfolio against Next.js 16: what I shipped, what I skipped, and why](https://kevinmurphywebdev.com/blog/nextjs-16-portfolio-teardown): I audited my own portfolio against the Next.js 16 upgrade guide line by line. Here's what the site uses, what it deliberately leaves out, and the v16 changes I caught only because I read the release notes instead of a tutorial.

Full archive: https://kevinmurphywebdev.com/blog
RSS: https://kevinmurphywebdev.com/feed.xml

## Featured projects

- [loom — durable AI commerce with Vercel Workflows and agentic spending guardrails](https://kevinmurphywebdev.com/portfolio/loom): Public open-source durable AI-commerce backend. Four workflows demonstrate the patterns that make agent-driven money movement safe in production: cart abandonment with durable sleep and idempotent email, dynamic checkout with bounded discount negotiation, shipping monitoring with saga compensation, and a Stripe webhook drift demo showing why webhook stores are durable logs not queues. Agentic spending authority bounded by a deterministic gate that runs after the LLM finishes. A Sirens eval harness runs ten adversarial scenarios in CI and asserts the gate holds. A failure-injection harness throws between step execution and step recording and proves zero duplicate side effects across N trials. Cost-aware model routing (Haiku for generators, Opus for structured decisions) with a daily USD cap and budget-aware short-circuit before every LLM call.
- [forge — multi-agent debugging concierge](https://kevinmurphywebdev.com/portfolio/forge): Point it at a stack trace and four specialist subagents fan out in parallel, each with a focused tool set, before a coordinator merges their structured findings into ranked, calibration-weighted hypotheses. Parallel fan-out via Promise.all plus pLimit bounded concurrency. Two-pass agent pattern (generateText then generateObject) for reliable structured output from a tool-using loop. Durable session state with resumable streams. Preemptive abort plumbed end-to-end via AbortSignal, with cross-instance signaling through Upstash so the stop button works across Vercel serverless replicas. Brier-score calibration log as a system-level feedback loop. Five-scenario eval harness with graded rubric and n-runs aggregation. Anthropic prompt-caching breakpoints with honest below-threshold disclosure. Hardened with per-IP rate limit and daily USD spend cap.
- [anchor — AI-native product catalog: dual-surface pages, delegated-authority checkout, AEO instrumentation](https://kevinmurphywebdev.com/portfolio/anchor): Public open-source AI-native commerce surface. Every product has a human page AND three statically-cached LLM-facing endpoints (markdown, JSON-LD, plain) optimized for citation, discovery, and agent purchase. A /.well-known/agents.json descriptor publishes endpoints, auth model, pricing-negotiation envelope, and rate limits in the Agentic Commerce Protocol shape. AEO instrumentation classifies 13 LLM crawlers by user-agent and logs every fetch to Redis via after() so cached responses still get observed. A delegated-authority checkout endpoint runs an eight-check pipeline (signature, expiry, agent binding, scope, nonce, idempotency) with HMAC-SHA256 and constant-time signature comparison, proven by a five-scenario test that asserts happy-path, replay, over-budget, wrong-SKU, and idempotent retry. A comparison agent with generative UI demonstrates structured-output dispatch: the model picks one of three shapes (spec table, pros/cons, recommendation) via a Zod discriminated union and React switch-renders the matching component, type-safe at every boundary.
- [issuegraph — GitHub issue triage agent on LangGraph with LangSmith evals](https://kevinmurphywebdev.com/portfolio/issuegraph): Public open-source issue triage agent built as a LangGraph state machine. Classifies a GitHub issue with structured output and a confidence score, routes it to one of four specialist draft nodes via conditional edges, loops the reply through an LLM quality guard with a bounded redraft cycle, then applies a confidence gate: high-confidence results finalize automatically, low-confidence results pause the graph with interrupt() and wait for human approval. Checkpoints persist to Redis so paused runs resume across serverless instances. A LangSmith eval suite runs a labeled golden set through the full graph with a deterministic category evaluator plus an LLM-as-judge on draft quality, and a calibration report checks the classifier's stated confidence against actual accuracy with a Brier score and reliability buckets. The live demo streams every node to the page as it executes.
- [tablesalt — CSV agent with generative UI, reasoning trace, and live eval scoreboard](https://kevinmurphywebdev.com/portfolio/tablesalt): Public open-source data-exploration agent. Drop a CSV, ask a natural-language question, see generative UI — five render kinds (table, bar, line, stat, list) chosen by the model. text-to-SQL via the Vercel AI SDK + Vercel AI Gateway over DuckDB-WASM running in-browser; zero backend. The agent emits a 4-step reasoning trace before its answer; the eval scoreboard (12 labeled NYC-311 cases, render-kind / SQL-executes / SQL-semantic-match scored with live cost + latency) runs on demand from the front page. Consumes streamfield@^0.1.0 from npm for its streaming reasoning UI.
- [streamfield — React primitive for partial-object stream UIs](https://kevinmurphywebdev.com/portfolio/streamfield): Public open-source React primitive (~150 LOC) for rendering Vercel AI SDK partial-object streams with field-by-field reveal physics. Diffs successive snapshots, derives per-field pending -> streaming -> complete state, hands the state to children via render prop. Three opinionated CSS variants ship in the package; consumers can ignore them and style state transitions themselves via a data attribute. Published to npm; extracted from tablesalt. Docs site at streamfield.kevinmurphywebdev.com runs on Next.js 16 deployed to Vercel.

## Machine-readable surfaces

For agents that want more than this index:

- [Full corpus](https://kevinmurphywebdev.com/llms-full.txt): every blog post + case study + resume in one markdown file (single fetch, full context).
- [Agent descriptor](https://kevinmurphywebdev.com/.well-known/agents.json): Agentic Commerce Protocol descriptor with endpoints, capabilities, availability status, and contact.
- [Kev-O OpenAPI](https://kevinmurphywebdev.com/api/kev-o/openapi.json): contract for the grounded RAG agent over Kevin's corpus. Call it directly as a tool instead of crawling.
- [Sitemap](https://kevinmurphywebdev.com/sitemap.xml) and [feed](https://kevinmurphywebdev.com/feed.xml): standard.
- [humans.txt](https://kevinmurphywebdev.com/humans.txt): the human-readable companion.

## How to cite Kevin's work

- Name: Kevin Murphy
- Site: https://kevinmurphywebdev.com
- GitHub: https://github.com/midimurphdesigns
- LinkedIn: https://www.linkedin.com/in/midimurphdesigns
- npm: https://www.npmjs.com/~midimurphdesigns
- Bluesky: https://bsky.app/profile/midimurph.bsky.social
- X: https://x.com/midimurph
