Stack
Technologies
Tools I reach for, and the reasoning behind the boring choices. If you need something not on this list, ask — the list is a habit, not a limit.
I have strong defaults and no loyalty to vendors. What matters is whether a technology helps your team ship and debug it in two years.
Languages
- TypeScript
- Node.js
- Python
- SQL
- Go
AI and agents
- Anthropic Claude
- OpenAI GPT
- Google Gemini
- RAG pipelines
- MCP — Model Context Protocol
- Tool use & function calling
- Vector databases (pgvector, Qdrant)
- Cross-encoder rerankers
- Evaluation harnesses
- Prompt and context engineering
- Guardrails and PII redaction
- AI gateway and routing
Platform
- AWS
- Docker
- Kubernetes
- Terraform
- PostgreSQL
- Redis
- Nginx
- OpenTelemetry
- Prometheus
- Grafana
Product
- React
- Next.js
- Node.js APIs
- GraphQL
- tRPC
- Design systems
- Accessibility (WCAG)
- i18n
Delivery
- GitHub Actions
- Playwright
- Vitest
- Pytest
- CI/CD pipelines
- Security review
- Technical writing
Choices I make on purpose
PostgreSQL before a vector database
If you already run Postgres, pgvector is usually the right answer: one less system to operate, one transaction boundary, one backup strategy. A standalone vector store earns its place at higher scale or with complex filtering.
Provider-agnostic by default
One gateway interface, no vendor SDK in product code. Model choice becomes a routing and cost decision rather than an architectural commitment.
Managed inference first
Hosted APIs beat a GPU cluster for most enterprise workloads on both cost and time-to-first-value. I will model the break-even point honestly rather than assuming self-hosting is the mature choice.
Evaluation before optimisation
Almost every "the AI got worse" report is a missing test suite. Fix the measurement, then tune.
Multilingual as a requirement
Retrieval quality, evaluation sets and content all change per language. Design for that from the first sprint and it is normal work; retrofit it and it is a rewrite.