Senior Full Stack Engineer · 10+ years building backend systems that move money, data, and (lately) LLM tokens reliably.
I design distributed services in Go and Python: event-driven pipelines, multi-tenant APIs, and payment workflows. I run them on AWS and Kubernetes. Today I'm building microservices and AI-powered workflows. Before that I built data platforms for higher education, led banking and fintech projects, and worked on payments infrastructure.
Languages: Go · Python · TypeScript Backend: gRPC · REST · FastAPI · PostgreSQL · Redis · SQS · event-driven architecture Cloud & Infra: AWS · Kubernetes · Terraform · Docker · GitHub Actions · OpenTelemetry AI: OpenAI & Anthropic APIs · LLM workflows & evals · MCP · Claude Code / Cursor Frontend: React · Next.js · React Native
| Project | What it shows |
|---|---|
| event-pipeline | Payment-event pipeline in Go + Python: transactional outbox, SNS/SQS fan-out, idempotent consumers, and a chaos test (SIGKILLs, a Postgres restart, injected crashes) that proves every balance stays exact. |
| ledger | Multi-tenant double-entry ledger in Go: gRPC + HTTP/JSON, Keycloak OIDC, Postgres row-level security, money rules enforced by the database, and property-based tests that prove money is never created, lost or overdrawn. |
| llm-gateway | Provider-agnostic LLM gateway in Python: Claude + OpenAI fallback with circuit breakers, structured outputs, per-tenant budgets and rate limits, cost tracking, and a ticket-triage eval suite scored in CI. |
| platform | Helm charts and a one-command local Kubernetes environment for all of the above, an OpenTelemetry pipeline with Grafana dashboards, and Terraform for AWS (EKS, RDS, SNS/SQS, Pod Identity), with security scans and an end-to-end deploy in CI. |
Every project runs locally with one command (make up) and has CI that tests it end to end.
Fundamentals, for fun: mini-git (a Git implementation in Go) · monkey (an interpreter in Go)
- Correctness under failure. Retries, duplicates, and partial outages are the normal case, not edge cases.
- Boring, observable systems. If it can't be traced, measured, and rolled back, it isn't done.
- Pragmatic AI. LLMs are a component like any other: they need evals, budgets, and fallbacks.
