SOFTWARE ENGINEER · FULL STACK · SOFTWARE ARCHITECTURE · AI
I work across frontend, backend, and software architecture, turning complex requirements into maintainable systems. My interests include Domain-Driven Design, distributed systems, developer tooling, and AI agents.
Based in Spain · Open to remote opportunities
01 / ABOUT
Engineering beyond the feature.
I’m a Software Engineer who enjoys understanding not only how to implement a feature, but how it fits into the system around it. My work spans frontend and backend development, with particular interest in software architecture, domain modeling, system boundaries, maintainability, and designing codebases that remain understandable as products grow. I regularly work with Domain-Driven Design, Hexagonal Architecture, Clean Architecture, event-driven communication, distributed systems, and modern React application architecture. More recently, I’ve been exploring AI agents, LLM-powered applications, coding agents, and agentic development workflows.
02 / EXPERIENCE
Professional Experience
Software Engineer
Company Name · Dates
Full-stack software development across frontend and backend systems, with a strong focus on maintainability, software architecture, testing, and complex product requirements. Responsibilities may include frontend features, backend APIs, domain modeling, application architecture, refactoring, automated testing, real-time communication, cloud deployments, collaboration, and improving developer experience.
03 / PROJECTS
Selected Projects
Public projects where I explore software architecture, AI, and developer tooling.
Mini-Code
A lightweight coding agent built in TypeScript that inspects local repositories, identifies relevant files, creates structured implementation plans, applies changes with human approval, runs tests, and iteratively fixes failures.
TypeScript · Node.js · OpenAI SDK · Zod · Vitest
04 / PRINCIPLES
How I think about software
Understand the domain
Good software starts with understanding the problem, not choosing the framework.
Make boundaries explicit
Clear responsibilities and system boundaries make complexity easier to manage.
Optimize for change
Architecture should help a system evolve rather than freeze it in place.
Keep complexity intentional
Abstractions should remove complexity, not simply move it somewhere else.
05 / STACK
What I work with
Frontend
TypeScript · JavaScript · React · Next.js · Chakra UI · React Leaflet · Testing Library · Vitest
Backend & Data
Node.js · NestJS · REST APIs · Server-Sent Events · WebSockets · Prisma · PostgreSQL · PostGIS
Architecture & AI
Domain-Driven Design · Hexagonal Architecture · Clean Architecture · Event-Driven Architecture · AI Agents · Tool Calling · Context Engineering
06 / EXPLORING
AI Agents & Agentic Software Engineering
I’m currently deepening my understanding of how to design reliable agentic systems: how agents plan, use tools, maintain state, work with context and memory, verify their actions, and operate safely within controlled workflows. My current focus is on moving beyond simple LLM integrations toward more structured agent architectures, with particular interest in orchestration, human-in-the-loop design, observability, verification, and multi-agent workflows.
Coding Agents · Multi-Agent Systems · Tool Use · Context Engineering · Agent Memory · Planning Agents · AI-assisted Software Architecture · LLM Application Design
07 / CONTACT
I’m interested in challenging engineering problems, thoughtful product teams, software architecture, full-stack development, developer tooling, and AI-powered systems.
Email available on request