Senior product engineer. AI-native products and agentic workflows.
Xan Torres. I take product work end to end: system design, deep React and TypeScript, enough backend to close the feature, and AI shipped under human review. Design-system work on mongodb.com, and RepoKernel, my agent orchestrator, on npm.
- 15+ years shipping production software
- Toptal Verified Expert since 2017
- Cyprus (EU) · Remote · CET/EET
What I shipped, and what it took.
- RepoKernel + engramRead case
Agent tooling that keeps agents honest.
Coding agents share a repo but not a memory. Run more than one and they lose track of state between tasks, edit outside their intended scope, and can double-claim the same unit of work. And every agent forgets everything between sessions, unless you let a tool auto-write whatever it likes about you, sensitive details included.
- v1.33.x
- 7 verbs
- 6 kinds
- Confidential clientRead case
Cross-microfrontend style leaks, eliminated.
Independently deployed microfrontends shared one page, so one team's CSS could reach another team's UI, and services kept re-describing the same payload shapes by hand.
- 108+
- 2 layers
- 0
- Sunflower GamesRead case
Roulette mini-game, missions, and ops tooling.
Ops and gameplay teams needed better tools while a live dual-currency economy kept moving underneath them.
- 294
- 3
- 4 repos
- FeatherSharkRead case
Live govtech migration, no release gaps.
The app needed a new frontend foundation, but municipal users depended on weekly releases that could not pause.
- 5
- 456
- 0
- MongoDBRead case
Design-system fixes on mongodb.com.
High-traffic marketing pages needed library improvements, but dozens of consumers depended on those packages.
- 2 lines
- 0
- 3
- Platform9Read case
Shared UI for a private-cloud console.
The console needed reusable UI building blocks and a predictable way to cache and persist server data, instead of components and fetch logic re-solved case by case.
- 4+ years
- Webpack → Vite
- Cached
AI in the path that ships.
Where AI already sits inside shipped systems: client delivery, a production feature from 2023, and the tooling I maintain.
Agent workflows
Multi-step workflows where an agent reads context, proposes actions, calls tools, and waits for approval before changing anything that matters.
Context engineering
Project rules, reusable instructions, decision records, and memory structured so coding agents follow the codebase instead of guessing.
Human-in-the-loop UX
Review, approval, fallback, and correction flows so AI output stays useful, traceable, and safe to ship.
Three tools, published and in use.
Three tools for agent orchestration, agent memory, and job-search automation. Each exists because I hit the problem in my own work and no existing tool solved it.
RepoKernel
Spec-first sprints for coding agents: isolated worktrees, dependency ordering, and a review gate before anything merges. No daemon, no database, no cloud service: the repo is the source of truth.
- TypeScript
- AI agents
- Git worktrees
- DevTools
Engram
Captures facts from any coding agent, gates sensitive writes behind a review queue, and recalls them across tools. Agent-agnostic and MCP-native.
- Python
- MCP
- Local-first
- Agent memory
Shrike
Ingests, filters, scores, and tracks job opportunities with AI-assisted triage and hard rejection rules. I ran my own search on it.
- TypeScript
- CLI
- AI triage
- Job search
What you get in the first month.
Architecture before components
I map data flow, state ownership, and failure paths before the first component lands. On the multi-team web platform of a listed multinational that meant a two-layer CSS isolation system, prefixed selectors plus design-token variables, which removed cross-microfrontend style leaks as a class of bug.
Frontend craft at production scale
Interaction detail, Core Web Vitals, accessibility, loading states, and the edge cases users find first. On mongodb.com a two-line fetchPriority change produced an LCP win on the highest-traffic landing pages.
Product judgment
I work from vague requirements and argue for the version users actually need. On a govtech product that meant moving tenant configuration out of build-time env files, so onboarding a new fire department became a settings change instead of a redeploy.
Codebases teams can live with
Typed boundaries, migrations that never freeze feature work, and CI that catches regressions before main. 456 commits over 20 months as the sole frontend engineer on a two-person team, across five migrations on a product that never stopped shipping.
Depth first, breadth where the product needs it.
AI / Agentic Systems
Systems where agents act under gates a human controls.
- MCP
- Agent memory
- Context engineering
- Structured outputs
- Human-in-the-loop flows
- Evaluation workflows
Frontend
The core craft: state, data, forms, and rendering at production scale.
- React 17/18/19
- TypeScript (strict)
- Next.js 13+
- Redux Toolkit · RTK Query
- TanStack Query · Table
- React Hook Form · Zod
Design Systems
Component libraries teams adopt instead of fork.
- Component library architecture
- Design tokens
- Module Federation
- Style isolation
- Tailwind CSS
- Accessibility (WCAG)
Backend (supporting)
Enough backend to close the loop on a feature.
- Node.js · NestJS
- PostgreSQL · Prisma
- REST · GraphQL · WebSocket
- AWS · Docker
Decisions I make the same way every time.
Map the system first.
Before touching components I want to know where data comes from, who owns state, and what breaks under failure. On a templating monorepo I scaffolded from zero, that meant Zod schemas emitting JSON Schema, so the shape one service sends and the shape another expects are the same generated artifact.
Migration over rewrite.
A rewrite freezes the roadmap and rarely lands. I move one layer at a time, runtime, then language, then data fetching, then forms, and the app stays shippable through every transition.
One source of truth.
More than once I have deleted a client-side recomputation of a backend value and made one endpoint authoritative instead. Backend-authoritative over client-recompute: each time, an entire class of drift bugs left with it.
Use AI without losing control.
AI speeds up implementation, exploration, and refactors. Architecture, review, and product decisions stay human-owned: in RepoKernel nothing merges without a recorded review verdict and a passing check command.
Tell me what you are building.
Best fit: dev-tools, AI-product, and B2B teams that want one senior engineer owning a product surface end to end. Send the rough shape: a migration that cannot pause, an AI feature that has to survive review, a design system teams keep forking, or a product that outgrew its frontend. I am booking new engagements now and I scope on the first call.