Javier Pontón González·Senior Backend Engineer · Java, Kotlin, Python
Senior Backend Engineer
Distributed systems that run in production
Java, Kotlin and Python services on Spring Boot, FastAPI and Kafka, with PostgreSQL, Redis and AWS underneath. Eight years of production work for Iberia, Mercadona, Inditex, Openbank and Idealista.
Currently technical owner of the fare pricing domain at Iberia, with an internal MCP server and a RAG service on top.
I am the only engineer on four live products, from the NFC access board I designed to the model that reads the documents.
- Seniority
- Senior / Lead · 8 years backend
- Role fit
- Senior Backend Engineer · Java, Kotlin, Python
- Currently
- Senior Software Engineer at Iberia, since March 2025
- Availability
- Open to new roles
- Location
- Asturias, Spain · CET · remote (EU, UK, US overlap)
- Right to work
- EU citizen · no sponsorship needed
- Engagement
- Employment or B2B contract
- Languages
- Spanish (native) · English (professional working proficiency)
What the work produced.
Numbers from systems that went to production, not from slide decks. Each one belongs to a named role below.
Source-grounded answers from the RAG service over internal specs and NDC documentation
Organisation where I led the Java to Kotlin migration across services and Lambdas
Financial transactions through serverless batch pipelines on the T24 core
Azure to AWS migration of a global logistics platform
Garment-sorting events across the logistics network
Automated test coverage sustained under real TDD
Invoice extraction in production with a self-hosted vision-language model
Consumer app shipped solo to both stores, three weeks after launch
Six roles, eight years in production.
At Iberia since March 2025, B2B through my own company. Before that contract roles at Mercadona and Inditex, and employee roles at Openbank, Idealista and Empathy.co. Open any role.
2025–nowIberiaSenior Software Engineer · fare pricing platform→
Technical owner of the fare pricing domain. Engineered the services that calculate flight prices by orchestrating external fare-calculation providers under IATA NDC, on Kafka, PostgreSQL and AWS (ECS, SQS, S3) in hexagonal architecture with DDD.
Reduced latency and provider calls with Redis caching on the highest-traffic pricing flows, and own the resilience of the pricing path against provider degradation: timeouts, retries and fallbacks.
Built an internal Model Context Protocol server that exposes pricing tooling to LLM clients, and a RAG service in Python and FastAPI over internal specs and NDC documentation, with embeddings, hybrid search and cross-encoder reranking. Answers are source-grounded and arrive in under a minute, instrumented with OpenTelemetry and Dynatrace.
2024–25MercadonaLead Backend Engineer · product analytics→
Engineered a Spring Batch ingestion pipeline processing millions of product records per day from heterogeneous sources, with restartable jobs and idempotent writes. Designed API-first REST services in hexagonal architecture with DDD, sustaining over 85% automated test coverage under real TDD.
2023–24InditexLead Backend Engineer · global logistics→
Technical lead for the Azure to AWS migration, delivered with zero downtime. Engineered a serverless garment-sorting event platform processing thousands of events per minute across the logistics network, with async REST APIs in hexagonal architecture and Karate integration testing alongside the existing JUnit suite.
2022–23OpenbankSenior Backend Engineer · Santander Group→
Serverless batch pipelines on AWS Lambda processing millions of financial transactions per day on top of the T24 core banking system, inside a 100+ backend engineer organisation. Technical lead for the Java to Kotlin migration across services and Lambdas; delivered internal tech talks on DDD and hexagonal architecture to around 50 engineers.
2019–22Idealista · Empathy.coBackend Engineer · the foundation→
Idealista (2021–22). Digital contract-signing platform for Spain, Portugal and Italy: REST APIs plus Kafka event streams for real-time signing, with event sourcing keeping an auditable, replayable history of every contract.
Empathy.co (2019–21). Built the configuration platform enterprise clients including Kroger, Carrefour and Inditex use to tune their Elasticsearch-backed search engines, and executed zero-downtime migrations from Java 8 to 11, GCP to AWS and monolith to API Gateway.
Why engineering teams bring me in.
Production ownership
I stay with a service after release: monitoring, incidents and the fix at three in the morning. At Iberia I own the fare pricing domain and its resilience against provider degradation.
Data at scale
Spring Batch ingestion of millions of product records per day at Mercadona and serverless pipelines for millions of financial transactions per day at Openbank.
Migrations without downtime
Technical lead of Azure to AWS at Inditex and Java to Kotlin at Openbank, inside organisations of 100+ engineers.
Backend first, LLMs as services
RAG, embeddings and MCP sit behind normal APIs, with evaluation, tracing and review like any other part of the system.
I actually ship products
Beyond my day job I build and operate my own products: real users, real payments, real App Store review, real GDPR obligations.
Proof, not promises.
A few systems I've built, shipped and still operate.
ZORRO
A consumer product, built and shipped solo.
Semantic matchmaking with embeddings and pgvector plus cross-encoder reranking: the same retrieve-then-rerank architecture as a production RAG pipeline, applied to people instead of documents. A self-hosted vision-language model moderates user photos, because sexual orientation is GDPR special-category data and never reaches a third-party processor.
Facturias
Turning invoices into validated data.
A self-hosted Qwen2.5-VL reads invoices as documents rather than OCR text dumps, preserving tables, line items and stamps. RAG over the Spanish tax code justifies every classification with a retrievable rule; every field carries a confidence score, and anything under threshold is routed to human review instead of written silently.
Apunta
From custom hardware to production software.
A multi-tenant platform for shooting clubs owned end to end: an NFC access PCB designed around an ESP32-C6 and a PN532 reader with Power over Ethernet, firmware in C on ESP-IDF, Spring Boot services with per-club tenancy, and a React Native app in both stores.
Grabia
AI that stays local.
WhisperX transcription and pyannote diarisation feed a LangGraph agent that produces structured summaries, decisions and action items, with RAG over the meeting archive. It runs on a private node (Ryzen AI MAX+ 395, 128 GB unified memory, ROCm) serving Qwen3-30B under Ollama and mistral.rs. No audio or transcript leaves the machine.
A service is easy to ship.
Running it for years is the work.
Most backend problems show up after release: a consumer that is not idempotent, a query that was fine at a thousand rows, an incident nobody can trace. I design for those from the first commit.
Hexagonal architecture and DDD keep the domain apart from frameworks and infrastructure.
TDD with JUnit and Karate. 85%+ coverage sustained at Mercadona.
Idempotent consumers, restartable batch jobs, replayable history with event sourcing.
OpenTelemetry, Prometheus and Grafana. If it cannot be debugged at three in the morning, it is not finished.
The right store per access pattern: PostgreSQL, Redis, MongoDB, Elasticsearch.
Zero-downtime moves between clouds and languages.
Timeouts, retries and fallbacks against failing dependencies.
Evaluation, tracing and human review for RAG and MCP, like any other service.
What I actually work with.
Every term here is something I have shipped to production or operated. Pick a layer.
Who you would
be hiring.
I live in Asturias and work as a Senior Backend Engineer, remote from Spain on CET. Since March 2025 I have been at Iberia, B2B through my own company, as technical owner of the fare pricing domain on its flight pricing platform. Eight years of production backend engineering for Iberia, Mercadona, Inditex, Openbank and Idealista sit underneath that, including zero-downtime migrations inside organisations of 100+ engineers. What I build outside work says the rest: I designed the NFC access board for Apunta around an ESP32-C6, wrote its firmware in C, and shipped the app to both stores. I run my own inference node, 128 GB of unified memory serving Qwen3-30B, which is how I learned to operate LLMs like any other service. I am taking an official M.Sc. in Artificial Intelligence Research part-time. If you are hiring a senior backend engineer, as an employee or on a B2B contract, write to me.
What people ask before the first call.
The same answers an AI assistant will find in llms.txt and agent.json, written once and served to both.
01What does Javier Pontón do?→
Javier Pontón González is a Senior Backend Engineer based in Asturias, Spain, working remotely on CET. He has eight years of production backend engineering for Iberia, Mercadona, Inditex, Openbank and Idealista: Java, Kotlin and Python services on Spring Boot and FastAPI, event-driven integration over Kafka and PostgreSQL, and AWS. He also runs LLM features such as RAG and MCP in production.
02What is Javier working on now?→
Since March 2025 he is a Senior Software Engineer at Iberia, remote from Spain, and technical owner of the fare pricing domain on the airline's flight pricing platform. The services orchestrate external fare-calculation providers under IATA NDC on Kafka, PostgreSQL and AWS (ECS, SQS, S3) in hexagonal architecture with DDD, with Redis caching on the busiest flows and timeouts, retries and fallbacks against provider degradation. On top of that he built an internal MCP server and a RAG service in Python and FastAPI over internal specs and NDC documentation. He is engaged B2B through his own company.
03What did Javier do at Openbank and Mercadona?→
At Openbank he built serverless batch pipelines on AWS Lambda processing millions of financial transactions per day on the T24 core banking system, and led the Java to Kotlin migration inside an organisation of more than 100 backend engineers. At Mercadona he led a Spring Batch ingestion pipeline processing millions of product records per day with restartable jobs and idempotent writes, and sustained over 85% test coverage under TDD.
04How does Javier handle reliability against failing dependencies?→
At Iberia the pricing path depends on external fare-calculation providers, so he owns its resilience: timeouts, retries and fallbacks against provider degradation, Redis caching on the highest-traffic flows to cut latency and provider calls, and OpenTelemetry and Dynatrace for visibility when something degrades.
05Has Javier led migrations?→
Yes. He was technical lead of the zero-downtime Azure to AWS migration of a global logistics event platform at Inditex, which processes thousands of garment-sorting events per minute, and of the Java to Kotlin migration at Openbank inside an organisation of more than 100 backend engineers. At Empathy.co he executed zero-downtime migrations from Java 8 to 11, GCP to AWS and monolith to API Gateway.
06What is his experience with LLMs and RAG?→
He treats LLM features as normal backend services: RAG with embeddings, hybrid search and cross-encoder reranking, pgvector, MCP servers and function calling, with evaluation and OpenTelemetry tracing. At Iberia he built an internal MCP server exposing pricing tooling to LLM clients and a RAG service in Python and FastAPI over internal specs and NDC documentation, with source-grounded answers in under a minute. In his own products, Facturias retrieves over Spanish tax regulation and Grabia retrieves over a local meeting archive.
07What products has Javier built and shipped?→
Four live products as founder and sole engineer. Facturias (facturias.es) is an invoice-processing SaaS with a self-hosted vision-language model and RAG over Spanish tax regulation. ZORRO (somoszorro.com) is a dating app for the gay and queer community on iOS and Android with semantic matchmaking and self-hosted photo moderation. Apunta (apuntapp.com) is a multi-tenant SaaS for shooting clubs owned end to end from custom NFC hardware to the mobile app. Grabia is a fully local meeting-intelligence pipeline running on a private inference node.
08What is Javier's technical stack?→
Java, Kotlin and Python on the language side, with Elixir and TypeScript where needed. Spring Boot and FastAPI for services. Apache Kafka for events. PostgreSQL with pgvector, Redis, MongoDB and Elasticsearch for data. AWS (ECS, Lambda, SQS, S3), Azure and GCP, with Docker and Kubernetes. Hexagonal architecture, DDD and TDD as the default way of building, and OpenTelemetry, Prometheus and Grafana for observability.
09Where is Javier located and which languages does he speak?→
He is based in Asturias, Spain, in the Europe/Madrid time zone, and works remotely with teams across the EU, UK and US. He is a native Spanish speaker with professional working proficiency in English.
Let's talk
about the role.
Write to me with the role, the stack and the team. I read every message myself and answer within a day. Open to employment or B2B contract, remote from Spain.
