Skills & stack
The stack behind everything shipped on this site
Not a list of everything I have ever opened. These are the tools I reach for on real work, grouped by the job they do, with a line on each saying what I actually use it for.
- Disciplines
- 6
- Tools in rotation
- 56
- Projects shipped
- 12+
Disciplines
Tools in rotation
Projects shipped
01 / Agents & AI
Agent runtimes, models, and retrieval
Where most of my current work sits. Agents that own a task end to end, retrieval that keeps answers grounded, and the plumbing that lets a model touch a real system safely.
10 tools
OpenAI Agents SDK
Primary runtime for tool-calling agents with typed handoffs.
LangGraph
Stateful multi-step graphs when a run needs branching and resume.
LangChain
Retrieval chains, document loaders, and prompt composition.
Anthropic Claude
Long-context reasoning and instruction-heavy agent steps.
MCP
Standard tool interface so agents share one integration layer.
RAG + pgvector
Grounded answers over private docs, with citations back to source.
Hugging Face
Embedding and open-weight models when a task does not need a frontier model.
Ollama
Local model runs for evaluation and offline-first prototypes.
Chainlit
Fast conversational front end for agent prototypes under review.
n8n
Event triggers and glue around agents where code is overkill.
02 / Frontend
Interfaces people actually work in
Product surfaces, dashboards, and marketing sites. Typed end to end, accessible by default, and fast on the first paint rather than after hydration.
10 tools
Next.js
App Router, server components, and the render strategy per route.
React
Component architecture and state boundaries in every build.
TypeScript
Strict mode everywhere. Types are the contract between layers.
Tailwind CSS
Design tokens in CSS variables, utilities for everything else.
shadcn/ui
Owned, editable primitives instead of a locked component library.
Framer Motion
Component-level transitions and layout animation.
GSAP + ScrollTrigger
Scroll-driven sequences that survive resize and reduced-motion.
three.js
WebGL scenes, gated behind visibility and motion preferences.
React Three Fiber
Declarative three.js inside the React tree, with drei helpers.
TanStack Query
Server-state caching, retries, and background refresh.
03 / Backend & APIs
The services underneath
Typed APIs, background work, and integrations. Every endpoint validated at the boundary so bad input fails loudly instead of half-writing a record.
10 tools
Node.js
Default runtime for API services and long-running workers.
Express
REST services and middleware for auth, logging, and rate limits.
Python
Agent logic, data processing, and anything ML-adjacent.
FastAPI
Typed Python services with generated OpenAPI docs.
Pydantic
Schema validation for model output and service payloads.
Zod
Runtime validation shared between client and server in TS.
tRPC
End-to-end typed calls when client and server ship together.
GraphQL
Where consumers need to shape their own queries.
REST + OpenAPI
Documented contracts for anything a third party will call.
Odoo
ERP integration work, syncing operational data both ways.
04 / Data & storage
Where state lives
Relational by default, with a vector store beside it when retrieval is part of the product. Migrations are versioned; nothing gets changed by hand in production.
8 tools
PostgreSQL
Primary database: relational schema, constraints, migrations.
Prisma
Typed data access and migration history in TypeScript projects.
Drizzle ORM
Lighter typed SQL where the query shape matters more than the ORM.
MongoDB
Document storage for irregular or fast-moving shapes.
Redis
Caching, queues, rate limiting, and short-lived agent state.
Supabase
Postgres with auth and storage when a build needs to move fast.
Neon
Serverless Postgres with branch-per-preview databases.
Firebase
Realtime sync and auth on client-heavy apps.
05 / Infra & delivery
Getting it live and keeping it there
Containerised, deployed from CI, and reversible. If a release cannot be rolled back in a minute, it is not finished.
9 tools
Docker
Same image in dev, CI, and production, with no environment drift.
Kubernetes
Orchestration where workloads need to scale independently.
GitHub Actions
Typecheck, lint, test, and deploy on every push.
Vercel
Next.js hosting with preview deploys per branch.
Railway
Backend services and databases for smaller deployments.
Render
Long-running Node and Python services with managed TLS.
Cloudflare
DNS, caching, and edge protection in front of origins.
Nginx
Reverse proxy, TLS termination, and routing on self-hosted boxes.
Linux
Day-to-day environment and where the servers actually run.
06 / Quality & observability
Knowing it works after handover
The part most portfolios skip. Tests that gate the deploy, dashboards that show the system's real state, and errors that reach me before a client notices.
9 tools
Grafana
Dashboards for latency, throughput, and agent run outcomes.
Prometheus
Metric collection and alert rules behind those dashboards.
Sentry
Error tracking with release tagging, front end and back.
Vitest
Unit and integration tests wired into CI.
Playwright
End-to-end runs on the flows that must never break.
Cypress
Component and browser tests on existing suites.
ESLint + Prettier
One style, enforced by the pipeline instead of by review.
Git
Trunk-based branches, reviewable commits, tagged releases.
Postman
Contract checks and shared collections for API handover.
In practice
A stack only counts once it has shipped something
Three combinations that show up repeatedly, each linked to the build it came out of.
An agent that runs a business process
Agent runtime, a typed tool layer over the client's systems, Postgres for state, and a dashboard the operations team reads every morning.
- OpenAI Agents SDK
- TypeScript
- PostgreSQL
- Next.js
- Grafana
Digital FTE dashboard
A workflow engine that replaces manual chasing
Event triggers, retries with backoff, and an audit log, so a failed run is a visible incident rather than silent data loss.
- Node.js
- n8n
- Redis
- Postgres
- GitHub Actions
Task automation engine
Two systems that had to agree
An integration layer between an ERP and the tools around it, with schema validation at the boundary and reconciliation when they drift.
- Odoo
- Python
- FastAPI
- PostgreSQL
- Docker
Odoo integration hub
Boundaries
What I don't take on
Cheaper to read here than to find out three calls in. If your project sits in one of these, I will say so on the first call and point you somewhere better.
Native mobile
I build web and React Native. A true Swift or Kotlin app belongs with a native specialist.
Model training from scratch
I fine-tune and I build on top of existing models. Training a foundation model is not the same discipline.
Brand and visual identity
I can design a product surface. Logo, brand system, and campaign work should go to a designer.
Long-term staff augmentation
Engagements are scoped around an outcome. If you need a full-time seat filled, a hire is the better answer.