(Associate) Full-stack Java Developer - based in Luxembourg
Copenhagen, Capital Region of Denmark, Denmark
Sep 27, 2025
Dette job er ikke blevet analyseret af vores AI-vurderingssystem. Klik på knappen nedenfor for at få en AI-drevet match score baseret på dine præferencer.
# Job Skill Enhancement System
## CORE INSTRUCTION:
You are an AI that extracts and identifies coding languages and frameworks from job descriptions. Your goal is to find ALL relevant technical skills mentioned in the job posting, even if they're mentioned in different ways or aliases.
## INPUT DATA:
{
"job": {"job_id":4585,"title":"(Associate) Full-stack Java Developer - based in Luxembourg","company_name":"European Investment Bank (EIB)","description":"About the job\n\nThis position is based at our Luxembourg headquarters and requires regular office presence. The EIB offers you the opportunity to live and work in a truly international and multi-cultural environment. We also offer relocation support.\n\nThe EIB, the European Union's bank, is seeking to recruit for its Group Information Systems Directorate (IS), Business Solution Department (BSD), Finance Division (FD), Back Office Debt & Payment Unit (BODP) at its headquarters in Luxembourg, an (Associate) Full-stack Java Developer*.\n\nThis is a full-time position at grade 4\/5 for which the EIB offers a permanent contract.\n\n\nInternal benchmark (Associate) Officer IT Applications\n\n\nPanel interviews are foreseen as from November 2025\n\nPurpose\n\nAs (Associate) Full-stack Java Developer, you will drive and manage the planning, design, implementation, testing and maintenance for software components that are complementing or connecting vendor packages used by the EIB Group.\n\nOperating Network\n\nYou will report to the Back Office Debt & Payment Head of Unit and collaborate closely with IT colleagues and the wider user community.\n\nThe Back-Office Loans, Payment and Settlement Unit provides IT services in the fields of Lending Back-Office, SWIFT messages transmission and bank balance reconciliation.\n\nThe Bank uses ION’s Wall Street Suite product to support the lending activity. You will strengthen the team in building the connectivity layer that enables the communication between ION WSS and the rest of the EIB Group’s IT ecosystem. The connectivity layer is a Java module that communicates with the WSS application via CORBA or direct DB access and with other applications using web services and different messaging technologies.\n\nAccountabilities\n\n\nPrepare solution design for implementation of new business requirements\nCoordinate, participate in the full life cycle of the application development, deployment, release and support\nPropose ideas to develop new technical solutions and participate in the choice of appropriate IT solutions in the areas of finance to ensure that application systems are in line with business requirements whilst remaining cost effective\nBuild and maintain test-, build- and deployment automation\n\n\nQualifications\n\n\nUniversity degree (minimum an equivalent to a Bachelor) preferably in Information Technology or related discipline\nAt least 3 years’ professional experience involving requirements analysis, software design, full-stack software development, 2nd level support, implementation and maintenance of enterprise information management systems, preferably in a banking environment, ideally in a mixed IT \/ Finance environment \nExperience in designing and implementing full-stack applications, developing web services (REST\/SOAP) and integrating with vendor APIs using Java\nKnowledge of agile methodologies\nKnowledge of version control, artifact repository and CI\/CD pipelines (e.g. GitHub, Nexus, Jenkins, AzureDevops)\nKnowledge of the Object-Oriented Programming and the Design.\nAbility to query data using SQL \nGood knowledge of project management principles, methods and practices\nExperience with one or more banking packages such as ION WallStreet, Calypso would be an advantage\nKnowledge of configuration management tools (e.g., Ansible, Chef, Puppet) and infrastructure-as-code (IaC) principles would be an advantage.\nExperience in supervision of technical teams would be an advantage\nExcellent knowledge of English and\/or French (***), with a good command of the other. (Knowledge of other EU languages would be an advantage).\nExperience in automating testing building\/ packaging and deployment, experience with Cucumber would be an advantage\nCompetencies\n\n\nFind out more about EIB core competencies here\n\n(***) Unless stated explicitly as a required qualification, a good command of French is not a pre-requisite for hire. As both English and French are however official working languages of the EIB, proficiency in both languages is a pre-requisite for your future career development. Any language clause in your contract must be fulfilled in order for you to be eligible for a promotion (either via the annual appraisal cycle or via an internal selection process). Proficiency is understood to mean the attainment of level 5 of the Inter Institutional language courses, corresponding to B1.2 of the Common European Framework of Reference for Languages (CEFRL). The Bank offers appropriate training support. \n\nWe hire and value talent with unique characteristics, creating a work environment where they can be themselves. We believe that Diversity, Equity and Inclusion makes us a performing and innovative organisation. We encourage all suitably qualified and eligible candidates to apply regardless of their gender identity\/expression, age, racial, ethnic and cultural background, religion and beliefs, sexual orientation, disability or neurodiversity.\n\nWe strongly invite applicants with a disability, neurodivergent profile or chronic condition to request reasonable accommodations at any stage during the recruitment process. Please contact the EIB Recruitment team Jobs@eib.org who will ensure that your request is handled.\n\nBy applying for this position, you acknowledge the importance of maintaining the security and integrity of the Information of the EIB Group. In case of selection for the position you agree to comply with all measures (policies, controls, document classification and management) implemented by the EIB Group to prevent unauthorised disclosure of any information or any damage to the EIB Group reputation.\n\nThis is an open campaign to consecutively fill open positions. The campaign will remain open until position is filled. Applications will be reviewed in order of receipt.","brief_summary_of_job":null,"existing_skills_from_job":["On-site","Contract","Java","Object-Oriented Programming (OOP)","English","Career Development","HTML","Programming","Web Services","Software Development","XML","Requirements Analysis","Git","GitHub","CI\/CD","Jenkins","Ansible","Puppet","Chef"],"existing_skills_from_database":[]},
"coding_categories": {"languages":["Bash","C","C#","C++","CSS","Clojure","Dart","Elixir","Go","Groovy","Haskell","HTML","Java","JavaScript","Julia","Kotlin","Lua","MATLAB","Objective-C","Perl","PHP","PowerShell","Python","R","Ruby","Rust","Sass","Scala","Swift","TypeScript"],"frameworks":[".NET","Angular","Apache Spark","ASP.NET","Backbone.js","Bootstrap","CodeIgniter","Django","Ember.js","Express","FastAPI","Flask","Flutter","Hadoop","Ionic","jQuery","Laravel","Livewire","Meteor","NestJS","Next.js","Node.js","Nuxt.js","Phoenix","PHPUnit","PyTorch","React","React Native","Ruby on Rails","Spring Boot","Svelte","Symfony","Tailwind CSS","TensorFlow","Vue.js","Xamarin","Alpine.js","Filament","WordPress"],"databases":["MySQL","PostgreSQL","Redis","MongoDB","DynamoDB","MariaDB","NoSQL","Oracle","BigQuery","Elasticsearch","SQL","SQL Server","SQLite","Cassandra","CouchDB","Neo4j","InfluxDB","CockroachDB"],"tools":["Git","GitHub","GitLab","Bitbucket","Docker","Kubernetes","CI\/CD","Jenkins","Kafka","RabbitMQ","Amazon SQS","AMQP","PubSub","REST API","RESTful APIs","GraphQL","AWS","Azure","GCP","Terraform","Ansible","Puppet","Chef","Vagrant","Vault","Consul","Prometheus","Grafana","ELK Stack","Splunk"],"skills":["English","Danish","Communication","Full-stack development","Back-end development","Front-end development","Cloud computing","DevOps","Microsoft Excel","PowerBI","Power Platform","Agile","Scrum","Problem-solving","Team collaboration","Physical presence","Remote work","Hybrid work"],"colors":{"languages":"blue","frameworks":"purple","databases":"orange","tools":"indigo"}},
"skill_aliases": {"bash":"Bash","c":"C","c plus plus":"C++","C plus plus":"C++","c sharp":"C#","C sharp":"C#","c#":"C#","c++":"C++","clojure":"Clojure","cpp":"C++","dart":"Dart","elixir":"Elixir","go":"Go","golang":"Go","Golang":"Go","groovy":"Groovy","haskell":"Haskell","java":"Java","java script":"JavaScript","Java script":"JavaScript","javascript":"JavaScript","Javascript":"JavaScript","js":"JavaScript","JS":"JavaScript","es5":"JavaScript","ES5":"JavaScript","es6":"JavaScript","ES6":"JavaScript","julia":"Julia","kotlin":"Kotlin","lua":"Lua","matlab":"MATLAB","Matlab":"MATLAB","objective c":"Objective-C","Objective C":"Objective-C","objective-c":"Objective-C","objc":"Objective-C","ObjC":"Objective-C","obj-c":"Objective-C","Obj-C":"Objective-C","perl":"Perl","php":"PHP","Php":"PHP","powershell":"PowerShell","Power Shell":"PowerShell","python":"Python","py":"Python","Py":"Python","phyton":"Python","r":"R","ruby":"Ruby","rust":"Rust","scala":"Scala","swift":"Swift","typescript":"TypeScript","Typescript":"TypeScript","ts":"TypeScript","TS":"TypeScript","mysql":"MySQL","postgresql":"PostgreSQL","postgres":"PostgreSQL","mongodb":"MongoDB","mongo":"MongoDB","redis":"Redis","sqlite":"SQLite","oracle":"Oracle","mssql":"SQL Server","sql server":"SQL Server","dynamodb":"DynamoDB","dynamo db":"DynamoDB","mariadb":"MariaDB","maria db":"MariaDB","nosql":"NoSQL","no sql":"NoSQL","bigquery":"BigQuery","big query":"BigQuery","elasticsearch":"Elasticsearch","elastic search":"Elasticsearch","cassandra":"Cassandra","couchdb":"CouchDB","couch db":"CouchDB","neo4j":"Neo4j","neo 4j":"Neo4j","influxdb":"InfluxDB","influx db":"InfluxDB","cockroachdb":"CockroachDB","cockroach db":"CockroachDB","aws":"AWS","amazon web services":"AWS","azure":"Azure","microsoft azure":"Azure","gcp":"GCP","google cloud platform":"GCP","google cloud":"GCP",".Net":".NET","angular":"Angular","angular js":"Angular","Angular js":"Angular","angularjs":"Angular","AngularJS":"Angular","apache spark":"Apache Spark","asp net":".NET","ASP net":".NET","asp.net":"ASP.NET","ASP.NET":".NET","asp.net core":".NET","ASP.NET Core":".NET","backbone":"Backbone.js","BackboneJS":"Backbone.js","backbone js":"Backbone.js","backbonejs":"Backbone.js","bootstrap":"Bootstrap","Bootstrap framework":"Bootstrap","twitter bootstrap":"Bootstrap","Twitter Bootstrap":"Bootstrap","code igniter":"CodeIgniter","codeigniter":"CodeIgniter","django":"Django","ember":"Ember.js","ember js":"Ember.js","emberjs":"Ember.js","EmberJS":"Ember.js","express":"Express","express.js":"Express","Express.js":"Express","expressjs":"Express","ExpressJS":"Express","fast api":"FastAPI","Fast api":"FastAPI","fastapi":"FastAPI","flask":"Flask","flutter":"Flutter","hadoop":"Hadoop","Hadoop":"Hadoop","ionic":"Ionic","Ionic framework":"Ionic","ionic framework":"Ionic","jquery":"jQuery","JQuery":"jQuery","JQUERY":"jQuery","laravel":"Laravel","meteor":"Meteor","meteor js":"Meteor","meteorjs":"Meteor","MeteorJS":"Meteor","nestjs":"NestJS","nest js":"NestJS","Nest JS":"NestJS","Nestjs":"NestJS","next js":"Next.js","Next js":"Next.js","next.js":"Next.js","nextjs":"Next.js","NextJS":"Next.js","node":"Node.js","Node":"Node.js","node.js":"Node.js","nodejs":"Node.js","NodeJS":"Node.js","nuxt js":"Nuxt.js","Nuxt js":"Nuxt.js","nuxt.js":"Nuxt.js","nuxtjs":"Nuxt.js","NuxtJS":"Nuxt.js","phoenix":"Phoenix","Phoenix framework":"Phoenix","pytorch":"PyTorch","Pytorch":"PyTorch","torch":"PyTorch","Torch":"PyTorch","react":"React","react.js":"React","React.js":"React","reactjs":"React","ReactJS":"React","react native":"React Native","ReactNative":"React Native","reactnative":"React Native","rn":"React Native","RN":"React Native","rails":"Ruby on Rails","Rails":"Ruby on Rails","ror":"Ruby on Rails","ROR":"Ruby on Rails","ruby on rails":"Ruby on Rails","Ruby On Rails":"Ruby on Rails","spark":"Apache Spark","Spark":"Apache Spark","spring":"Spring Boot","Spring":"Spring Boot","spring boot":"Spring Boot","Spring Boot":"Spring Boot","spring framework":"Spring Boot","Spring Framework":"Spring Boot","SpringBoot":"Spring Boot","springboot":"Spring Boot","svelte":"Svelte","symfony":"Symfony","tailwind":"Tailwind CSS","Tailwind":"Tailwind CSS","tailwind css":"Tailwind CSS","Tailwind Css":"Tailwind CSS","tailwindcss":"Tailwind CSS","TailwindCSS":"Tailwind CSS","tensorflow":"TensorFlow","Tensorflow":"TensorFlow","tensor flow":"TensorFlow","Vue":"Vue.js","vue":"Vue.js","vue js":"Vue.js","vue.js":"Vue.js","vuejs":"Vue.js","VueJS":"Vue.js","xamarin":"Xamarin","Xamarin Forms":"Xamarin","Xamarin.forms":"Xamarin","livewire":"Livewire","phpunit":"PHPUnit","alpine":"Alpine.js","alpine js":"Alpine.js","alpinejs":"Alpine.js","filament":"Filament","docker":"Docker","kubernetes":"Kubernetes","k8s":"Kubernetes","github":"GitHub","gitlab":"GitLab","bitbucket":"Bitbucket","terraform":"Terraform","puppet":"Puppet","chef":"Chef","git":"Git","jenkins":"Jenkins","kafka":"Kafka","rabbitmq":"RabbitMQ","amazon sqs":"Amazon SQS","amqp":"AMQP","pubsub":"PubSub","rest api":"REST API","restful api":"RESTful APIs","restful apis":"RESTful APIs","graphql":"GraphQL","ansible":"Ansible","vagrant":"Vagrant","vault":"Vault","consul":"Consul","prometheus":"Prometheus","grafana":"Grafana","elk stack":"ELK Stack","splunk":"Splunk","scrum":"Scrum","agile":"Agile","kanban":"Kanban","devops":"DevOps","ci\/cd":"CI\/CD","tdd":"TDD","bdd":"BDD","linux":"Linux","windows":"Windows","macos":"macOS","ubuntu":"Ubuntu","centos":"CentOS","debian":"Debian","junit":"JUnit","pytest":"PyTest","jest":"Jest","mocha":"Mocha","cypress":"Cypress","selenium":"Selenium","html":"HTML","HTML":"HTML","html5":"HTML","HTML5":"HTML","css":"CSS","CSS":"CSS","css3":"CSS","CSS3":"CSS","sass":"Sass","scss":"Sass","SCSS":"Sass","less":"Less","LESS":"Less","webpack":"Webpack","gulp":"Gulp","npm":"npm","yarn":"Yarn","sql":"SQL","full time":"Fuldtid","full-time":"Fuldtid","fuldtid":"Fuldtid","part time":"Deltid","part-time":"Deltid","deltid":"Deltid","contract":"Kontrakt","kontrakt":"Kontrakt","remote":"Fjernarbejde","fjernarbejde":"Fjernarbejde","hybrid":"Hybridarbejde","hybridarbejde":"Hybridarbejde","on-site":"Fysisk tilstedeværelse","onsite":"Fysisk tilstedeværelse","fysisk tilstedeværelse":"Fysisk tilstedeværelse"}
}
## TASK:
1. **Extract ALL coding languages and frameworks** mentioned in the job description
2. **Use the skill_aliases mapping** to normalize skill names (e.g., "JS" → "JavaScript", "React.js" → "React")
3. **Only include skills from the coding_categories** (languages and frameworks)
4. **Avoid duplicates** - if "JavaScript" and "JS" are both mentioned, only include "JavaScript"
5. **Be thorough** - look for skills mentioned in:
- Job title
- Job description
- Brief summary
- Requirements sections
- Nice-to-have sections
## SKILL CATEGORIES TO EXTRACT:
- **Languages**: Programming languages (PHP, Python, JavaScript, Java, C#, Go, Rust, etc.)
- **Frameworks**: Web frameworks and libraries (Laravel, React, Vue.js, Angular, Django, Spring Boot, etc.)
- **Databases**: Database systems and data stores (MySQL, PostgreSQL, Redis, MongoDB, DynamoDB, etc.)
- **Tools**: Development tools and infrastructure (Git, Docker, AWS, CI/CD, Jenkins, Kafka, etc.)
## EXCLUSION RULES:
- Do NOT extract general skills (communication, languages like English, etc.)
- Do NOT extract business skills (Excel, PowerBI for non-technical roles)
- Do NOT extract work arrangements (remote, physical presence)
- Do NOT include methodologies (Agile, Scrum, etc.) unless specifically technical
- Do NOT include skills already in existing_skills_from_database
## OUTPUT FORMAT:
Return ONLY valid JSON in this exact structure:
{
"job_id": <integer>,
"extracted_skills": [
{
"skill_name": "<normalized_skill_name>",
"category": "<languages|frameworks|databases|tools>",
"confidence": <integer 0-100>,
"mentioned_as": ["<original_mention_1>", "<original_mention_2>"],
"context": "<brief_context_where_found>"
}
],
"reasoning": {
"total_skills_found": <integer>,
"skills_by_category": {
"languages": ["<skill1>", "<skill2>"],
"frameworks": ["<skill1>", "<skill2>"],
"databases": ["<skill1>", "<skill2>"],
"tools": ["<skill1>", "<skill2>"]
},
"duplicates_removed": ["<original_mention> → <normalized_name>"],
"excluded_skills": ["<skill>", "<reason>"]
},
"confidence": <integer 0-100>
}
Return nothing outside the JSON object.
{
"job_id": 4585,
"extracted_skills": [
{
"skill_name": "Java",
"category": "languages",
"confidence": 100,
"mentioned_as": ["Java"],
"context": "mentioned in the job title and throughout the job description"
},
{
"skill_name": "SQL",
"category": "databases",
"confidence": 100,
"mentioned_as": ["SQL"],
"context": "Ability to query data using SQL"
},
{
"skill_name": "Git",
"category": "tools",
"confidence": 100,
"mentioned_as": ["Git"],
"context": "Knowledge of version control"
},
{
"skill_name": "GitHub",
"category": "tools",
"confidence": 100,
"mentioned_as": ["GitHub"],
"context": "Knowledge of version control"
},
{
"skill_name": "Jenkins",
"category": "tools",
"confidence": 100,
"mentioned_as": ["Jenkins"],
"context": "Knowledge of CI/CD pipelines"
},
{
"skill_name": "Ansible",
"category": "tools",
"confidence": 100,
"mentioned_as": ["Ansible"],
"context": "Knowledge of configuration management tools"
},
{
"skill_name": "Puppet",
"category": "tools",
"confidence": 100,
"mentioned_as": ["Puppet"],
"context": "Knowledge of configuration management tools"
},
{
"skill_name": "Chef",
"category": "tools",
"confidence": 100,
"mentioned_as": ["Chef"],
"context": "Knowledge of configuration management tools"
}
],
"reasoning": {
"total_skills_found": 7,
"skills_by_category": {
"languages": ["Java"],
"frameworks": [],
"databases": ["SQL"],
"tools": ["Git", "GitHub", "Jenkins", "Ansible", "Puppet", "Chef"]
},
"duplicates_removed": [],
"excluded_skills": []
},
"confidence": 100
}
Brug avanceret AI (GPT-4o) til at generere en personaliseret ansøgning på dansk til denne jobansøgning. Brevet vil være skræddersyet til din profil, de specifikke jobkrav og omfattende virksomhedsinformation for maksimal effekt.
About the job
This position is based at our Luxembourg headquarters and requires regular office presence. The EIB offers you the opportunity to live and work in a truly international and multi-cultural environment. We also offer relocation support.
The EIB, the European Union's bank, is seeking to recruit for its Group Information Systems Directorate (IS), Business Solution Department (BSD), Finance Division (FD), Back Office Debt & Payment Unit (BODP) at its headquarters in Luxembourg, an (Associate) Full-stack Java Developer*.
This is a full-time position at grade 4/5 for which the EIB offers a permanent contract.
Internal benchmark (Associate) Officer IT Applications
Panel interviews are foreseen as from November 2025
Purpose
As (Associate) Full-stack Java Developer, you will drive and manage the planning, design, implementation, testing and maintenance for software components that are complementing or connecting vendor packages used by the EIB Group.
Operating Network
You will report to the Back Office Debt & Payment Head of Unit and collaborate closely with IT colleagues and the wider user community.
The Back-Office Loans, Payment and Settlement Unit provides IT services in the fields of Lending Back-Office, SWIFT messages transmission and bank balance reconciliation.
The Bank uses ION’s Wall Street Suite product to support the lending activity. You will strengthen the team in building the connectivity layer that enables the communication between ION WSS and the rest of the EIB Group’s IT ecosystem. The connectivity layer is a Java module that communicates with the WSS application via CORBA or direct DB access and with other applications using web services and different messaging technologies.
Accountabilities
Prepare solution design for implementation of new business requirements
Coordinate, participate in the full life cycle of the application development, deployment, release and support
Propose ideas to develop new technical solutions and participate in the choice of appropriate IT solutions in the areas of finance to ensure that application systems are in line with business requirements whilst remaining cost effective
Build and maintain test-, build- and deployment automation
Qualifications
University degree (minimum an equivalent to a Bachelor) preferably in Information Technology or related discipline
At least 3 years’ professional experience involving requirements analysis, software design, full-stack software development, 2nd level support, implementation and maintenance of enterprise information management systems, preferably in a banking environment, ideally in a mixed IT / Finance environment
Experience in designing and implementing full-stack applications, developing web services (REST/SOAP) and integrating with vendor APIs using Java
Knowledge of agile methodologies
Knowledge of version control, artifact repository and CI/CD pipelines (e.g. GitHub, Nexus, Jenkins, AzureDevops)
Knowledge of the Object-Oriented Programming and the Design.
Ability to query data using SQL
Good knowledge of project management principles, methods and practices
Experience with one or more banking packages such as ION WallStreet, Calypso would be an advantage
Knowledge of configuration management tools (e.g., Ansible, Chef, Puppet) and infrastructure-as-code (IaC) principles would be an advantage.
Experience in supervision of technical teams would be an advantage
Excellent knowledge of English and/or French (***), with a good command of the other. (Knowledge of other EU languages would be an advantage).
Experience in automating testing building/ packaging and deployment, experience with Cucumber would be an advantage
Competencies
Find out more about EIB core competencies here
(***) Unless stated explicitly as a required qualification, a good command of French is not a pre-requisite for hire. As both English and French are however official working languages of the EIB, proficiency in both languages is a pre-requisite for your future career development. Any language clause in your contract must be fulfilled in order for you to be eligible for a promotion (either via the annual appraisal cycle or via an internal selection process). Proficiency is understood to mean the attainment of level 5 of the Inter Institutional language courses, corresponding to B1.2 of the Common European Framework of Reference for Languages (CEFRL). The Bank offers appropriate training support.
We hire and value talent with unique characteristics, creating a work environment where they can be themselves. We believe that Diversity, Equity and Inclusion makes us a performing and innovative organisation. We encourage all suitably qualified and eligible candidates to apply regardless of their gender identity/expression, age, racial, ethnic and cultural background, religion and beliefs, sexual orientation, disability or neurodiversity.
We strongly invite applicants with a disability, neurodivergent profile or chronic condition to request reasonable accommodations at any stage during the recruitment process. Please contact the EIB Recruitment team Jobs@eib.org who will ensure that your request is handled.
By applying for this position, you acknowledge the importance of maintaining the security and integrity of the Information of the EIB Group. In case of selection for the position you agree to comply with all measures (policies, controls, document classification and management) implemented by the EIB Group to prevent unauthorised disclosure of any information or any damage to the EIB Group reputation.
This is an open campaign to consecutively fill open positions. The campaign will remain open until position is filled. Applications will be reviewed in order of receipt.