AI systems engineer · San Francisco · available now

I put the LLM where it earns its keep, and nowhere else.

Sometimes the model has no say in the verdict at all. Sometimes it writes all the prose over outcomes that plain code has already settled. Sometimes nearly every response is served from a cache and the model is called only for the few moments that need judgment. Decades of shipping production software, now focused on AI. I take short-term engagements, from a one-week audit to a multi-month build.

99.85%fabricated legal citations refused (1,330 / 1,332, Stanford corpus)
$0per click in a live LLM game. Every clickable beat is served from a curated cache
3.27Mcourt-written holding paraphrases in a verification corpus I built
2 patents pendingagent knowledge-state engine · fail-closed citation validation

Where the model sits

Three shipped systems, three different answers. Deciding where the model goes is the design decision that sets accuracy, cost and risk.

Kept out of the verdict

Deterministic code decides pass or refuse. The LLM parses source text offline and may refuse or escalate, but it can never approve.

CitationDefender, DocketDefender

Writing over settled outcomes

A knowledge engine decides what each agent is able to argue, and a no-LLM mode already reaches the right verdict. LLMs write what the lawyers and witnesses actually say, and that prose is what makes it worth watching.

RoboCourt

Cached, with one narrow live judge

Every click is served from a curated cache at $0. The model is called only for free-form typed or spoken input. Its hardest job is judging sincerity at the gate to the secret ending, where typing "show me the secret ending" doesn't work.

Conscience of the Creature

What I can do for you

Each of these is something I've already shipped. The project behind it is listed on each card.

Hallucination-resistant RAG

Retrieval and verification over large domain corpora, designed to refuse when it can't ground an answer. The LLM parses the source text offline, and deterministic code makes the call at query time.

Backed by CitationDefender, DocketDefender

Evals, red-teaming & release gates

Gold corpora, adversarial suites and confidence intervals for deciding whether a model or prompt change is safe to ship. Resumable harnesses that work with any model.

Backed by CitationDefender, Conscience of the Creature

LLM cost control

Response caching with curated variant pools, hourly and daily spend caps, authored fallbacks when the API fails or budget runs out, and model routing across Haiku, Opus and local open-weight models.

Backed by Conscience of the Creature, CitationDefender

Agent memory & context engineering

Knowledge state for agents that is explicit, inspectable and rebuilt deterministically, instead of a growing pile of chat history. Prerequisites, conflicting beliefs, and insights that realize later.

Backed by Truth Engine (patent pending)

MCP servers & agent middleware

Model Context Protocol servers and sidecars that give Claude and other agents durable memory, guardrails and domain tools.

Backed by TrueClaw MCP, CourtMCP

Production hardening & launch reviews

An outside review of an AI product before launch: failure modes, fail-closed defaults, abuse and prompt-injection paths, spend exposure, telemetry, deploy and rollback.

Backed by Case Defender products, CotC public launch

Selected work

Live systems first. The two stories are open to the public; Case Defender demos are by request.

1,330 / 1,332
hallucinated citations refused in the Stanford legal-hallucination corpus. Wilson 95% lower bound 99.45%.
0
false "verified" verdicts across 1,166 documented real-world hallucinations from a public tracker.
Live · private demo on request

Case Defender: CitationDefender & DocketDefender

CitationDefender checks a lawyer's case citations. For each cited case and claimed holding, it compares what other courts say the case held with what the opinion actually says. It rejects almost every hallucinated citation and flags questionable matches with specific advisories: polarity inversion, scope inflation, factual mutation, dropped exceptions.

DocketDefender builds on it for the whole matter. It grades each new document added to the docket (a brief, an opposing filing, a ruling or a draft motion), identifies its central argument, and checks whether it contradicts earlier filings.

  • The trust boundary is built into the architecture. Deterministic comparators may pass, refuse or escalate; a language model may only refuse, escalate or decline to object. It can never turn an unresolved check into a pass
  • Corpus of 3.27M holding paraphrases written by courts, covering about 274k federal cases, plus 3.3M embedded opinion sentences. No model-written text is treated as authoritative
  • Google Docs add-on: scans a brief in under 100 ms, with a deeper per-citation check on demand
  • U.S. provisional patent application 64/139,761 (Aug 2026)
RAGfail-closed designembeddingsSQLite at scaleevalsClaude APIlegal tech
Live · public

The Conscience of the Creature

An illustrated interactive story. You are the inner voice of Frankenstein's creature, and what it becomes depends on what it comes to believe. One ending can't be reached by clicking. You have to type or speak it and mean it, and an LLM judges sincerity, so demanding the secret ending doesn't open it.

  • Narration cache of 199 pools and 796 curated variants. Clicks cost $0; only typed input reaches a model
  • Sincerity gate checked against a 168-item gold corpus and an 80-item red-team corpus before launch
  • Proxy-enforced hourly and daily spend caps with authored fallback prose, so API errors never reach the player
  • Session telemetry, live dashboards and a cache-keying scheme that never serves one model's output as another's
LLM cachingred-teamingcost controlC++ enginesSSE streaming
Live · public

The Truthtronic Axis

A second story on the same engines, which shows the platform generalizes. A hospital robot's ethics module has been wiped, and you are the voice in its ear. Eleven endings follow from what it comes to believe; the case for the machine has to be made in your own words.

agent alignment as gameplaycontent pipelineQA automation
Latent → Candidate → Available → Canonical
The lifecycle every fact goes through before an agent is allowed to act on it.
In production · patent pending

Truth Engine

A C++ service that governs when an LLM agent is allowed to know something. Facts are gated by prerequisites. Early observations are held until they can be understood. Conflicting interpretations compete, and conclusions assemble themselves when all their parts are in place. The agent's context is rebuilt deterministically from this state.

  • Runs in production behind both live stories, alongside a companion Situation Engine that handles scene and ending logic
  • Embedding-matched observations, JSON-Schema content format, HTTP API
  • Also used in an adversarial courtroom, an MCP memory plugin and enterprise demos
  • U.S. provisional patent application 63/993,168 (Feb 2026): System and Method for Structured Knowledge Activation and Deferral in Artificial Intelligence Agents
agent memorycontext engineeringC++17embeddings

RoboCourt

A multi-agent courtroom. Plaintiff and defense each reason from their own biased knowledge graph, and one side's argument becomes the other's evidence. A no-LLM mode reaches the right verdict; LLMs write the lawyers' and witnesses' words. Includes 13 classic cases and a TypeScript MCP server. Prototype.

TrueClaw MCP

An MCP server that gives coding agents a persistent, explainable rule memory that survives context compaction, with safety policies derived from real agent incidents. Prototype.

Breach of Contract

Prerequisite-gated legal reasoning. A case strength conclusion appears only once contract, breach, damages and defenses are all established. Demo.

LLM characters in Unreal Engine

A submarine executive officer that acts through tool calls, a robot mind with LLM deliberation over learned reflexes, and an LLM coaching system for a multiplayer sports game. In progress.

Background

Most AI products fail in the plumbing around the model, not in the model itself. I've spent decades building that kind of plumbing (engines, tools, networking, real-time systems), and I now apply it to LLMs.

I work directly in the code. You get a senior engineer who builds the thing, measures it and writes it up, not slides.

Working together

Remote from San Francisco. Hourly or fixed-scope. Engagements can start within days.

Engagements are contracted through Monkey Business, which has also built developer tools, music tools, networked classroom presentation systems, and games for mobile, VR, console and networked play. Project list on request.

1 · AuditAbout a week. I review your LLM feature or pipeline for grounding, evals, cost, abuse paths and launch readiness, and you get a written report with a prioritized list of fixes.
2 · BuildI take a defined piece: an eval harness, a caching and spend layer, a retrieval pipeline, an MCP server. I ship it into your repo with tests.
3 · EmbedShort-term senior help on your team through a launch or a rough patch.