The newest platform in the range
I build on AI. I don't just use it.
AI is the newest platform I architect on, and I treat it like any platform: build on it, evaluate it honestly, know when to decline it. The Surveyor Agent is a reasoning agent I built, not a chatbot I prompted.
Deep on Microsoft Copilot and Claude; I've built agents on OpenAI and Glean too, and formed a preference by building rather than by reading the brochure. The tool choice is the expertise.
Selected AI-engineering work · sheet index
Anthropic Claudeverificationreasoning integrity
verification layer · knowing when the machine is wrong
How I know an agent works — before I trust it
- Problem
- A confident agent and a correct agent look identical from the outside. Most AI tooling ships on the first and hopes for the second.
- Read
- Confidence isn't calibration. The only way to trust a reasoning system is to build the test designed to fool it, and watch whether it holds.
- Call
- So I build the harness before I trust the agent: adversarial "cry-wolf" bait cases planted to trip a false alarm, run in repetition, behind an explicit false-positive gate that has to close on evidence before anything ships. When one of my own prior diagnoses turned out wrong, I reopened it against the original transcript and logged the correction rather than overwriting it — the superseded reasoning kept as audit trail.
- Outcome
- Agents that degrade honestly instead of failing silently. A false-positive rate closed at zero across six runs — and a verdict I can hand over with the receipts attached.
Pythonprivacy engineeringdeterministic
raw content → content-free flags → agentic triage
A privacy boundary the model never crosses
- Problem
- To let an AI audit a system, you usually have to show it the system — including the parts that must never leave the building.
- Read
- The agent doesn't need the sensitive value. It needs to know a value is there and what kind. Those are different, and the difference is the whole safety case.
- Call
- A deterministic scanner that emits content-free flags — never the raw value, never the matched name. The scout sees cells; the agent sees only flags, and triages them. Nothing content-bearing crosses the model boundary.
- Outcome
- An AI that can reason about sensitive data without ever being handed it. The boundary is the feature.
TypeScriptModel Context Protocoldeployed
Anthropic Messages API → live, auth-gated MCP server
A production MCP server, built on both sides of the protocol
- Problem
- Most "AI integration" is a wrapper around someone else's endpoint. The protocol underneath stays a black box.
- Read
- If MCP is going to be how agents reach tools, I want to have built it — server and client — against the wire format, not a framework's idea of it.
- Call
- A deployed, auth-gated Model Context Protocol server (TypeScript, Anthropic Messages API), plus an agent that consumes MCP as a client. Agentic tool-use loops written directly against the wire format, no SDK between me and the protocol.
- Outcome
- MCP as something I've operated from both ends in production — not a checkbox, a build.
Pythonimage generationschema'd JSON · CI/CD
generation function → schema'd JSON → 100+ artifacts, live
A generative content pipeline at collection scale
- Problem
- One-off AI generation is a demo. A system that produces a coherent catalog is an engineering problem — schema, storage, render, deploy.
- Read
- The interesting part isn't the model call. It's everything around it: a stable schema, versioned output, a render layer, and a deploy that doesn't break when the catalog grows.
- Call
- Python-and-image-model pipelines that generate to a consolidated JSON schema and render 100+ artifacts served live, with CI/CD deployment across my own domains.
- Outcome
- Generative content operated as a pipeline, not a party trick. The plumbing is the point.
multi-agentgovernanceADR · provenance
Claude · Copilot · OpenAI, coordinated under written compacts
Coordinating a multi-model ensemble, on the record
- Problem
- Run several AI systems on real work and the failure mode isn't any one model — it's drift, lost context, and no accountability for who decided what.
- Read
- If AI systems are collaborators, they need what human collaborators need: scoped roles, written agreements, and a record of how a decision changed over time.
- Call
- A human-coordinated pattern across Claude, Copilot, and OpenAI surfaces — run under written working compacts, an ADR/spec/register documentation system, and provenance rules: attribution locked to its source, inferences flagged, nothing invented.
- Outcome
- Several AI systems doing real work without dissolving into one confident voice — governed, traceable, and honest about who did what.