Living AI Portfolio
Case Studies

What I built, and why — with the running systems attached.

Each write-up follows the same structure a reviewer can scan in a minute — Problem → Constraints → Architecture → Trade-offs → Metrics → What broke → What’s next — because junior engineers list tools and senior engineers justify them. Every one links to code you can read and, where it’s live, a system you can use.

The Living Portfolio — engineering build log
01 · RAGLive

RAG with visible, touchable citations

The assistant answers only from real documents, shows where each claim came from, and refuses honestly when the documents don’t cover a question — for a portfolio whose whole thesis is “everything here is true and defensible.”

pgvector HNSW · top-5 cosine · 0.35 refusal threshold · $0 refusals
02 · EvalsShipped

Measuring the RAG assistant with evals

A 108-case golden dataset scored by a deterministic harness and an LLM-as-judge — which caught a real overclaim bug that was fixed, re-measured, and redeployed. Judge-vs-human calibration is the one honest open step.

0.992 recall@5 · 92/92 valid citations · $0.41/run · calibration pending
03 · ObservabilityLive

Every request explains itself

Every response carries an X-Request-ID; /chat returns a phase-timed trace; logs are structured JSON; and a public /metrics endpoint reports latency and cost — all self-hosted, no external APM, with honest per-process windows.

request IDs · p50/p95 latency · running token/cost tally · public /metrics
04 · AgentLive

A tool-using agent that shows its work

A real tool-use loop — not a scripted pipeline — where Claude decides which read-only tools to call over Samuel’s data, iterates on the results, and returns every step it took, so the autonomy is visible instead of a black box.

4 read-only tools · bounded iterations · per-run cost reported
05 · MCPShipped

Publishing the tools as an MCP server

The same four tools exposed over the Model Context Protocol so any MCP client (Claude Desktop, an IDE assistant) can discover and call them — reusing one source of truth, and verified against a real client rather than assumed to work.

open-source · stdio transport · verified: initialize → list → call
06 · StreamingLive

Streaming the answer, token by token

Server-Sent Events type the answer out live, then finalize renumbered citations and real per-answer cost once the full text exists — surviving the observability middleware and the proxy, and degrading honestly if the stream breaks.

SSE · /chat/stream · finalize step preserved · honest degradation

The full architecture, end to end, is written up in the How-it-works guide. Docker & Terraform round out the eight shipped modules.

Product & client work
CadenceLive demo

AI customer-support chatbot

A custom support assistant on the Claude API, grounded in a product’s real knowledge: it answers only from known content, refuses honestly instead of hallucinating, and hands off cleanly to a human. React + Vercel serverless, with the API key held server-side.

Claude API · grounded + refusal + human handoff · React / Vercel serverless
MeridianLive demo

Framework-free brand landing page

A responsive landing page built from scratch with no framework — CSS design tokens, fluid type with clamp(), and an auto-fit grid — to show the platform fundamentals without a framework crutch. Push-to-deploy on Vercel.

no framework · CSS tokens · clamp() fluid type · auto-fit grid