Senior Backend Engineer and Software Architect with 10+ years building and modernising PHP/Symfony systems,
including high-volume distributed platforms. Specialised in migrating critical legacy systems with zero downtime,
making change safe through tests and static analysis gated in CI, and designing integration layers for external APIs.
Production experience in logistics, travel, public transport and retail SaaS; author of the open-source
IntegrationEngine bundle.
Selected figures each tied to the project where it was measured
100+endpoints migrated with zero downtimePrimeIT · legacy system moved from PHP 7.4 / Symfony 4 to PHP 8.3 / Symfony 6
300K+messages per minuteAuro · rider positioning under high concurrency, last-mile logistics
15+external API integrations in production10+ partner APIs at Auro and 5+ travel integrations at Quadrant TravelTech
−93%PHPStan errors, level 5 → level 9Datcisions · core platform baseline reduced from 3,339 to 239 errors
RabbitMQ, SQS, Docker, CI/CD with GitHub Actions, Linux
Databases
MySQL, PostgreSQL, Redis
AI-assisted development
AI coding agents working within CI quality gates
Languages
Spanish
Native
English
Professional working proficiency
Education
Higher Technician in Network Computer Systems Administration (EQF level 5) 2010 – 2012
Ongoing self-directed study in software architecture, DDD and the PHP/Symfony ecosystem, applied in professional and open-source work.
GET/experience
Experience
DatcisionsSenior Backend Engineer
–
Stock and purchase-planning SaaS for fashion and retail brands.
Raised PHPStan on the core platform from level 5 to 9, reducing the baseline from 3,339 to 239 errors (−93%).
Recovered a test suite that no longer ran and grew it to 2,100+ passing tests.
Modularised the core: extracted IAM and access control from Security, split 127 migrations across modules and removed 53,000 lines of dead code across three repositories.
Built the Holded cloud ERP connector from scratch and shipped it to production in 11 days, with PHPStan and PHP-CS-Fixer gated in CI.
Found and fixed two IDOR vulnerabilities during a self-initiated security review.
PrimeITSenior Backend Engineer
–
International IT consultancy.
Led the zero-downtime migration of a legacy system with 100+ endpoints from PHP 7.4 / Symfony 4 to PHP 8.3 / Symfony 6.
Rewrote authentication using Symfony’s native Security Component, eliminating vulnerabilities in the previous model.
Quadrant TravelTechBackend Engineer, Integrations
–
Via Interacso from May 2023 to Jan 2024, then hired directly by Quadrant.
Designed and implemented 5+ travel integrations, including Booking.com, Iberia, Lleego and Hostalia.
Built a multi-provider integration layer where new providers could be added without changing the core.
AuroBackend Engineer
–
Last-mile logistics platform.
Developed and integrated 10+ external partner APIs for a last-mile logistics platform with real-time shipment tracking.
Designed event and messaging systems coordinating multiple carriers, processing 300,000+ messages per minute for rider positioning under high concurrency.
JamenetBackend Engineer, project-based
–
Public transport · Metro Bilbao.
Built the Drupal–Symfony–Vue integration for Metro Bilbao, a 24/7 system serving real passenger traffic.
Implemented real-time bulk processing of route and timetable data.
Earlier experience
Freelance · Real-time streaming platformJan 2020 – Jun 2020
Solo end-to-end build of a Twitch-style platform with live chat, video streaming, payments, virtual economy and moderation.
Syntelix · Backend EngineerMay 2019 – Jan 2020
Real-time ingestion pipelines and ordered, lossless messaging for maritime telemetry.
Card2Card · Full-stack Symfony DeveloperNov 2017 – May 2019
Sole technical owner of a customisable SaaS e-commerce platform.
Freelance · Web and PHP backend development2012 – 2017
Bespoke web projects for clients across different sectors.
Every time I integrated an external API into Symfony, I ended up solving similar pieces again:
authentication, HTTP requests, response mapping and error handling. And each integration tended to
grow its own conventions. IntegrationEngine came out of that experience: a common structure for
building and maintaining external API integrations.
How it is organised
Action — each operation against the external API is represented by an Action.
Mapper — transforms the external response into a typed Response object.
Engine — the bundle handles the shared flow: configuration, authentication and HTTP transport.
Integration — keeps the provider-specific details where they belong.
Action + Context
IntegrationEngine
External API
Mapper
Typed Response
Request flow for one operation.
The goal is a repeatable way of working — clear contracts and a consistent structure — based on problems
I have met in production. Providers still differ; the bundle gives those differences a predictable place
to live.