Engineering
Systems I've designed and operated in production — architecture decisions, trade-offs, and real constraints.
Problems Solved in Production
API latency
Third-party API timeouts causing cascading failures in checkout — solved with circuit breaker pattern and fallback responses
Marketplace inconsistencies
External marketplace APIs returning inconsistent product data — built abstraction layer normalizing different schemas into unified model
Legacy migration
Migrating client systems from PHP monolith to React + Next.js without downtime — incremental strangler fig approach
Performance at scale
API response times degrading with growing user base — query optimization, strategic caching, parallel API calls
Cross-platform UX
Maintaining consistent UX between React (web) and React Native (mobile) — shared design tokens and component contracts
Data consistency
Financial modules (sales + commissions + payments) drifting out of sync — atomic transactions with PostgreSQL advisory locks
AI Systems in Production
Not chatbots — production pipelines where AI is a component in a larger system, with fallbacks, monitoring, and real data flowing through.
WhatsApp AI Agent
LLM-powered agent handling customer service, product recommendations and sales completion. Messages processed async, data registered back into PostgreSQL. Fallback to rule-based matching when LLM is unavailable.
RAG Pipeline (LangChain + pgVector)
Document ingestion → chunk splitting → embedding generation → vector storage in PostgreSQL with pgVector → semantic search with top-K retrieval as LLM context.
Read full implementation →Frequently Asked Questions
What is multi-tenant architecture?
A design pattern where multiple organizations share the same application and database, but each tenant's data is isolated. The most common approach in modern SaaS is shared database with tenant_id column and PostgreSQL Row Level Security (RLS) as a safety net.
How to handle payment webhooks reliably?
Use a layered approach: validate signatures on every event, enforce idempotency with stored event IDs, ack immediately and process in background, validate state transitions with a state machine, run periodic reconciliation jobs, and route failed events to a dead letter queue.
How to integrate AI into production systems?
Treat AI as a system component, not a standalone feature. Process messages asynchronously, register data back into your database, implement fallbacks for when the LLM is unavailable, and monitor response quality. The key is reliability — the system must work even when the AI provider has issues.
What is the circuit breaker pattern?
A resilience pattern for third-party API integrations. When an external API starts failing, the circuit breaker 'opens' and returns fallback responses instead of cascading the failure through your system. After a cooldown period, it allows test requests to check if the service recovered.
Deep Dives
Circuit Breaker in Node.js
State machine, fallbacks, retry and monitoring
Webhook Architecture for Payments
Idempotency, reconciliation, PIX flows
Multi-tenant Architecture
Shared DB, RLS, partitioning
RAG with LangChain
Embeddings, pgVector, semantic search
Design Systems at Scale
Shadcn UI, tokens, component contracts
