Writing
LLMs in production: the hard part is the contract around the model
What I learned putting OpenAI, Anthropic and Gemini behind an accounting product: schemas, deterministic checks, confidence thresholds and a human review queue.
Designing an MCP server an LLM can use safely
Lessons from exposing market data, account data and a trade journal to Claude through MCP: grouping tools, failing clearly, and never letting the model place an order.
Reading bank notification emails to track spending in Colombia
Colombian banks don't offer open APIs to regular developers, so Nora reads the transaction alerts they already send by email. Here's how the pipeline works.
Rules first, LLM second: categorizing Colombian bank transactions
In Nora, my personal-finance app, the LLM is the last resort, not the first step. Here's the pipeline and why every AI answer becomes a rule.
Dashboards from JSON schemas: replacing spreadsheet reports
At LeoVegas I built a Node.js service and a schema-driven dashboard framework with pluggable database connectors, so product managers could stop building reports by hand.
Rules as data: onboarding customers without shipping code
At KitchenSync every restaurant had its own accounting rules. Moving those rules out of code and into configuration changed how we onboarded customers.
What I learned leading a team of four engineers
Small pull requests, mandatory review, CI, quality audits and settling technical debates with data: the habits that kept quality up at KitchenSync.
Three ways LLMs fail in production, and what to do about each
API errors, broken output and answers that look right but aren't. Each one needs a different defense.
A dev team of agents, each in its own git worktree
How I turned Claude Code into a small team: a project manager, backend, frontend, database and QA agents working in parallel without stepping on each other.
Five levers for LLM cost that matter more than a clever prompt
Model per task, fewer tokens, caching, batching and measuring every request: the cost controls I rely on when LLMs run inside a real product.
One shared TypeScript library for every service, without a god library
At KitchenSync I designed a shared TypeScript library with more than 16 modules used across the whole platform. Here's how to keep something like that useful instead of dangerous.
Shipping software under IEC 62304
What building a triage module for a digital healthcare platform taught me about traceability, risk and documented change, and why those habits are worth keeping outside healthcare.
Turning a mobile app into a white-label SaaS
How we refactored Doktor24's mobile app so partners could get their own branded version from configuration, with a CI/CD pipeline that builds each brand.
Backend for frontend: one API per kind of client
At Doktor24, patients, practitioners and configurators needed very different things from the same platform. Node.js BFF services gave each client an API shaped for it.
Micro-frontends with Module Federation: what we gained and what it cost
At Doktor24 we split a healthcare web platform into micro-frontends so teams could ship on their own schedule. Here's the reasoning, the trade-offs, and when I wouldn't do it.