How I build

Specs before code, AI agents driven by oracles, tested against real infrastructure, shipped through automated gates.
TypeScript
Edge/Cloud
CI/CD
Type-safe

Specify before building

Before implementation starts, I write the domain model, constraints, and a decidable definition of done. An AI coding agent implements against that written contract — not a vague prompt. Types, lint, and schema validation act as fast oracles that drive the agent's loop as it works.Learn more →

Oracles & AI-assisted build

Types, lint, and schema validation are oracles — mechanisms that say "this is wrong" without a person inspecting the diff. They drive the agent while it works; the expensive real-infrastructure suite gates the merge last. Independent pieces of work run in parallel, each with its own cloned repo, spec, agent, and single verification command.Learn more →

Typed end to end

One schema flows to API and client with no hand-written drift. Types are the cheapest check in the stack; at runtime boundaries, schema validation (Zod) rejects malformed external input before it reaches domain logic.Learn more →

Explicit error handling

Errors are typed and attributed at the exact boundary where they occur — status and category decided at the point of failure, not inferred later from a caught exception's message.Learn more →

Clear architecture

Thin API layer, domain services, transactional orchestration with automatic rollback on failure.Learn more →

Real-infrastructure testing

Types, lint, and schema validation run on every change; the four-figure suite against live services runs last, once cheaper checks have already caught what they can.Learn more →

Automated delivery

Every change passes lint, format, type-check, tests, and migrations before it ships. A check written for one piece of work is folded into the standing lint rules and test suite so every future change inherits it automatically.Learn more →

Documented decisions

We chose Drizzle ORM over Prisma because the runtime executes V8, not Node — documented so the next maintainer inherits the reasoning, not just the result.Learn more →
Specify
AI + oracles
Type-safe contracts
Build
Test (real infra)
Automated gates
Staged deploy
Languages
TypeScript
AI agents
GraphQL
SQL
Rust
Cloud
Cloudflare Workers
D1
R2
KV
Data
Drizzle ORM
SQLite/D1
Vector Search
Stripe
CI/CD
GitHub Actions
Vitest
ESLint
Drizzle Kit
This is how I built Tekel, Lucra's audited protocol, and a municipal RAG platform for local government.
See the work