— Practice / AI
AI engineering, not AI demos.
Anyone can wire a chatbot to a model. We engineer the parts that come after — retrieval, evals, guardrails, observability, and the systems that keep the feature honest in production.
— Practice / What we ship
What we ship.
-
Production RAG.
Vectorize on Cloudflare. Hybrid retrieval. Chunking strategies tuned to the actual corpus, not a tutorial.
-
Agent systems.
Anthropic SDK and OpenAI SDK with tool use, function calling, and the boring infrastructure that keeps an agent from looping.
-
MCP servers.
Model Context Protocol servers on Cloudflare Workers — for Claude, Cursor, or any other MCP client.
-
Evals as a habit.
If you can’t measure regressions, you don’t have an AI system — you have a prompt. We write evals into the deploy pipeline.
— Practice / What we don’t do
What we don’t do.
-
Model training or fine-tuning.
If your problem genuinely needs custom weights, we’ll point you at people who do that for a living.
-
Bolted-on chatbots.
A chat widget on a marketing site is rarely the right answer. We design AI as a feature, not a UI gimmick.
-
“Just generate the content.”
Marketing-volume text generation is well served by other tooling. That’s not an engineering engagement.
Stack — opinionated
Smaller toolkit, more depth.
Models
Anthropic Claude · OpenAI GPT · Cloudflare Workers AI
Retrieval
Cloudflare Vectorize · D1 · BM25 hybrid
Orchestration
Anthropic SDK · OpenAI SDK · MCP · Workers
Observability
Workers Logs · Sentry · custom evals
Prompts
Versioned in source · evaluated in CI
Surface
API · agent · MCP server · embedded UI
Field notes — AI
Recent writing on the practice.
-
Aug 12, 2026
Structured output from language models: getting reliable JSON instead of prose
Free-text model output breaks pipelines. Here is how schema-constrained generation, tool calling, validation, and retries turn a language model into a component you can build on — and where the approach still fails.
-
Jul 22, 2026
RAG evaluation: how to know your AI answers are actually correct
A retrieval system that sounds confident is not the same as one that is right. How to build an evaluation set, measure retrieval and faithfulness, run human spot-checks, and catch regressions before your users do.
-
Jul 11, 2026
When Not to Use an LLM
A working checklist for keeping large language models out of the places they don't belong: deterministic logic, unverifiable outputs, high-stakes decisions, and problems a database query already solves.
-
Jul 10, 2026
An AI-Readiness Checklist for Small Businesses
Eight checks that decide whether AI assistants can find, understand, and recommend your business — and whether your own operations are ready to use AI safely. No tools to buy; most items take an afternoon.
— From the GitHub
Templates we ship and maintain.
Working production patterns we use ourselves, MIT-licensed. Both deploy to your own Cloudflare account in under five minutes. Companion blog posts explain the architecture in full.
-
Production RAG pipeline on Cloudflare Workers
-
Production MCP server on Cloudflare Workers
— Work with us
— Read deeper
Field notes from this practice
- MCP Servers in Production: When to Build, When to Skip Model Context Protocol is the best primitive Anthropic shipped in 2024 — and the most over-applied. A field guide to when an MCP server is the right answer, when it's overkill, and how to operate one in production on Cloudflare Workers.
- Structured output from language models: getting reliable JSON instead of prose Free-text model output breaks pipelines. Here is how schema-constrained generation, tool calling, validation, and retries turn a language model into a component you can build on — and where the approach still fails.
- RAG evaluation: how to know your AI answers are actually correct A retrieval system that sounds confident is not the same as one that is right. How to build an evaluation set, measure retrieval and faithfulness, run human spot-checks, and catch regressions before your users do.
- When Not to Use an LLM A working checklist for keeping large language models out of the places they don't belong: deterministic logic, unverifiable outputs, high-stakes decisions, and problems a database query already solves.
- Making Your Website Agent-Ready: What Actually Matters in 2026 AI agents and answer engines read your site before people do. What makes a site legible to them — structured data, markdown, an AI-crawler policy, and MCP.
- Workers AI vs OpenAI: A Cost-Quality Matrix at Low Volume Most production AI features default to OpenAI by reflex. They shouldn't. A real comparison of Workers AI, OpenAI, and Anthropic Claude across the four tasks that actually show up in client engagements — embeddings, generation, transcription, classification — with real numbers and a routing strategy that uses each for what it's good at.
- Production RAG on Cloudflare Without LangChain A 200-line RAG pipeline on Cloudflare Workers + Vectorize + D1 — the five primitives that matter, why frameworks rot at the wrong layer, and how to keep retrieval debuggable in production.
Working on something AI-shaped? Tell us about it.
Two paragraphs is enough. We respond in writing, with a fit / no-fit answer, within one business day.