Build in Public

What I'm building, what broke, what I learned. AI agents, full-stack systems, and the messy reality of shipping software.

·3 min read

Claude Code config is a team asset, not a personal file

On the robbed monorepo I set up Claude Code the way you'd set up CI or CODEOWNERS: a shared, version-controlled, enforced config so every engineer and every AI agent inherits the same conventions, ownership boundaries, and guardrails.

build-in-publicaiai-engineeringllmopscontext-engineeringengineering-culture
·3 min read

We Gave Our Agent a Third Tool. Then We Deleted It.

Melio's meal-plan agent runs on exactly two tools. We eval-tested a third — a deterministic self-check — and it tripled cost per plan and made accuracy worse. Here's the data that got it deleted.

build-in-publicailanggraphai-engineeringllmopspythontool-useagent-design
·3 min read

The Prompt Cache That Silently Did Nothing

We shipped Anthropic prompt caching with green unit tests — and it did nothing in production. The culprit: model-specific cache floors and per-day content ahead of the breakpoint. Here's the diagnosis and the fix.

build-in-publicailanggraphai-engineeringllmopspythonprompt-cachinganthropic
·4 min read

Query-based CDC over WAL: keeping a CQRS Postgres → ClickHouse read model fresh

Query-based CDC vs log-based (WAL) for a CQRS Postgres→ClickHouse read model: watermark polling, ReplacingMergeTree, reconcile-by-key-diff, and freshness-lag alerts.

build-in-publiccqrscdcclickhousepostgresdata-engineering
·6 min read

Two planes of quality: making meal-plan generation both evaluable and observable

How Melio's meal-plan pipeline splits quality into two planes — online validation and offline evaluation — plus the observability layer that makes them measure the same things, and the reasoning behind which metrics are allowed to block a deploy.

build-in-publicllm-evaluationobservabilitylangfuselanggraph
·3 min read

How I Redesigned a Meal Planning App UX: From Panel to Modern Food-First Design

Melio worked, but looked like a back-office admin panel. Here's how I redesigned the entire meal-planning app UX across 47 routes — a research-driven, 9-wave approach that kept every feature intact.

uxdesignnextjsshadcnbuild-in-public
·3 min read

Building an AI Content Engine for a Gov Contracting Platform

Government contracting is jargon-heavy and the content gap is huge. Here's the four-layer AI content engine I built for GovChime: a research agent, rubric scoring, an approval queue, and SEO-ready Next.js publishing.

aicontentnextjsclaudeseobuild-in-public
·5 min read

PostgreSQL + ClickHouse: The Dual-Database Pattern That Made 90M-Row Dashboards Instant

Running analytics on 90M+ rows in PostgreSQL made our dashboards unusable — queries took seconds, joins killed performance. Here's the dual-database architecture we run at GovChime, and the query times I measured: 13.6 s → ~1 s.

postgresqlclickhousearchitectureperformancebackend
·5 min read

Why I Moved AI Out of NestJS and Into a Dedicated Python LangGraph Service

Our NestJS AI chain hit a wall — unreliable outputs, no observability, zero crash recovery. Here's how I replaced it with a 5-node LangGraph StateGraph in Python FastAPI, and why splitting AI into its own service was the right architectural call.

ailangchainarchitecturenestjs
·5 min read

Agent Builders Are Changing How I Ship Code — Here's My Actual Workflow

I've been shipping production features as the main developer on a complex multi-service codebase. The secret isn't working harder — it's building custom AI agents that know my architecture. Here's the exact setup I use with Claude Code.

claude-codetoolsarchitecturecareerai
·1 min read

Hello World — Welcome to My Blog

First post on my new blog. Here I'll share thoughts on software engineering, AI development, and lessons learned building products.

introblog