Developer
Hørsholm, Capital Region of Denmark, Denmark
Oct 1, 2025
Forskning og eksperimentel udvikling inden for naturvidenskab og teknik
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":4570,"title":"Developer","company_name":"Gubra","description":"About the job\n\nWe are looking for a Developer to join our Software and AI Solutions department at Gubra. In this role, you will collaborate closely with other developers, data scientists, and scientific experts to automate and scale scientific computing.\n\n\n\n\nYour Role\n\nTogether with the team, you will build and scale data analysis and machine learning pipelines. Example applications include high throughput 3D imaging, digital histopathology, and mass spectrometry.\n\n\n\n\nYour primary tasks will be to:\n\nDeveloping backend systems using Python (FastAPI, PyTorch, etc.), Postgres, Docker Swarm, and GitHub Actions.\nDevelop, apply, and advocate good software practices.\nHelping evolve our infrastructure to utilize more scalable solutions like Modal for compute and S3 for storage.\nDesign, implement, and maintain data analysis applications for various scientific use cases.\nContribute to our shared toolbox to enable our scientists to explore data and train ML models.\n\n\n\n\nYour Profile\n\nAt Gubra, we believe that knowledge sharing is key to success. Therefore, you will be part of a team where collaboration and the willingness to share early-stage ideas are essential. We promise that you will learn from us, and we are looking forward to learning from you.\n\n\n\n\nWe welcome candidates with diverse backgrounds and experiences. Your qualifications could include:\n\nA few years of hands-on experience in software development.\nA master's or PhD degree in Computer Science, Engineering, or a related field - or equivalent practical experience.\nProficiency in Python and a commitment to writing high quality code.\nExperience deploying and maintaining software in production.\n\n\n\n\nQualifications \n\nYou do not need to have all these qualifications, but we hope you are willing to learn, because you will use them actively in this position.\n\nCollaborating with scientists to build scientific software\nMLOps experience, including model monitoring, reproducibility, and data management\nExperience with cloud or hybrid infrastructure\n\n\n\n\nAbout the Scientific Automation Platform Team\n\nScientific Automation Platform is a team within the Software and AI Solutions area at Gubra. The team focuses on applying and scaling ML and data science for scientific processes and research studies at Gubra. You will join skilled data scientists and developers at Gubra HQ in Hørsholm, on the edge of Greater Copenhagen.\n\n\n\n\nWe work in an informal and inclusive environment where knowledge sharing is the norm. We look forward to welcoming you to the team.\n\n\n\n\nContact and application\n\nPlease apply no later than October 15, 2025 by uploading your cover letter, resume (in English), and relevant diplomas on our website.\n\n\n\n\nInterviews will be conducted on a rolling basis, and we reserve the right to close the posting before the deadline if a suitable candidate is found. We aim to hire our new Developer effective December 1, 2025.\n\n\n\n\nIf you have any questions about the position, you are very welcome to contact Department Manager, Anders Nielsen at ani@gubra.dk.\n\n\n\n\nWe are looking forward to receiving your application.\n\n\n\n\n\n\n\nAbout Gubra\n\nGubra is an ambitious contract research organisation (CRO) and biotech company striving for excellence at all levels. We insist on doing things efficiently – and often differently - to achieve the results we aim for. Our vision is to become leaders in the fight for a healthier and more sustainable world. We do that by facilitating the discovery of new medicine, and by acting and inspiring others to fight the ongoing climate and biodiversity crises.\n\n\n\n\nGubra’s activities are focused on the early stages of drug development and are organised in two highly synergistic business areas: CRO Services and Discovery & Partnerships (D&P). We generate our revenue by performing research for life science companies as well as by partnering projects from our discovery and development pipeline.\n\n\n\n\nOur therapeutic focus is within metabolic and fibrotic diseases, and we specialize in in vivo pharmacology, ex vivo assays, drug profiling, histology, stereology and whole brain and organ imaging. In addition, we offer a full palette of advanced transcriptomics. Our ML\/AI-driven peptide drug discovery platform streaMLine enables us to rapidly develop a peptide hit into a non-clinical candidate ready for development. Through a constant focus on high quality, scientific excellence, speed, and solid teamwork we have established ourselves as a highly professional and competent partner in the market.\n\n\n\n\nPeople are our greatest asset, and our team consists of +270 employees all located in Hørsholm, Denmark. The mix of people from different cultures and educational backgrounds combined with our entrepreneurial mindset have greatly impacted our working environment, which is characterized by entrepreneurial drive, scientific curiosity, and teamwork – we join forces!","brief_summary_of_job":null,"existing_skills_from_job":["On-site","Full-time","Cloud Infrastructure","Python (Programming Language)","Computer Science","Machine Learning","Software Development","Teamwork","Python","FastAPI","PyTorch","Git","GitHub"],"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": 4570,
"extracted_skills": [
{
"skill_name": "Python",
"category": "languages",
"confidence": 100,
"mentioned_as": ["Python"],
"context": "Developing backend systems using Python (FastAPI, PyTorch, etc.)"
},
{
"skill_name": "FastAPI",
"category": "frameworks",
"confidence": 100,
"mentioned_as": ["FastAPI"],
"context": "Developing backend systems using Python (FastAPI, PyTorch, etc.)"
},
{
"skill_name": "PyTorch",
"category": "frameworks",
"confidence": 100,
"mentioned_as": ["PyTorch"],
"context": "Developing backend systems using Python (FastAPI, PyTorch, etc.)"
},
{
"skill_name": "PostgreSQL",
"category": "databases",
"confidence": 100,
"mentioned_as": ["Postgres"],
"context": "Developing backend systems using Python (FastAPI, PyTorch, etc.)"
},
{
"skill_name": "Docker",
"category": "tools",
"confidence": 100,
"mentioned_as": ["Docker Swarm"],
"context": "Developing backend systems using Python (FastAPI, PyTorch, etc.)"
},
{
"skill_name": "GitHub",
"category": "tools",
"confidence": 100,
"mentioned_as": ["GitHub Actions"],
"context": "Developing backend systems using Python (FastAPI, PyTorch, etc.)"
}
],
"reasoning": {
"total_skills_found": 6,
"skills_by_category": {
"languages": ["Python"],
"frameworks": ["FastAPI", "PyTorch"],
"databases": ["PostgreSQL"],
"tools": ["Docker", "GitHub"]
},
"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
We are looking for a Developer to join our Software and AI Solutions department at Gubra. In this role, you will collaborate closely with other developers, data scientists, and scientific experts to automate and scale scientific computing.
Your Role
Together with the team, you will build and scale data analysis and machine learning pipelines. Example applications include high throughput 3D imaging, digital histopathology, and mass spectrometry.
Your primary tasks will be to:
Developing backend systems using Python (FastAPI, PyTorch, etc.), Postgres, Docker Swarm, and GitHub Actions.
Develop, apply, and advocate good software practices.
Helping evolve our infrastructure to utilize more scalable solutions like Modal for compute and S3 for storage.
Design, implement, and maintain data analysis applications for various scientific use cases.
Contribute to our shared toolbox to enable our scientists to explore data and train ML models.
Your Profile
At Gubra, we believe that knowledge sharing is key to success. Therefore, you will be part of a team where collaboration and the willingness to share early-stage ideas are essential. We promise that you will learn from us, and we are looking forward to learning from you.
We welcome candidates with diverse backgrounds and experiences. Your qualifications could include:
A few years of hands-on experience in software development.
A master's or PhD degree in Computer Science, Engineering, or a related field - or equivalent practical experience.
Proficiency in Python and a commitment to writing high quality code.
Experience deploying and maintaining software in production.
Qualifications
You do not need to have all these qualifications, but we hope you are willing to learn, because you will use them actively in this position.
Collaborating with scientists to build scientific software
MLOps experience, including model monitoring, reproducibility, and data management
Experience with cloud or hybrid infrastructure
About the Scientific Automation Platform Team
Scientific Automation Platform is a team within the Software and AI Solutions area at Gubra. The team focuses on applying and scaling ML and data science for scientific processes and research studies at Gubra. You will join skilled data scientists and developers at Gubra HQ in Hørsholm, on the edge of Greater Copenhagen.
We work in an informal and inclusive environment where knowledge sharing is the norm. We look forward to welcoming you to the team.
Contact and application
Please apply no later than October 15, 2025 by uploading your cover letter, resume (in English), and relevant diplomas on our website.
Interviews will be conducted on a rolling basis, and we reserve the right to close the posting before the deadline if a suitable candidate is found. We aim to hire our new Developer effective December 1, 2025.
If you have any questions about the position, you are very welcome to contact Department Manager, Anders Nielsen at ani@gubra.dk.
We are looking forward to receiving your application.
About Gubra
Gubra is an ambitious contract research organisation (CRO) and biotech company striving for excellence at all levels. We insist on doing things efficiently – and often differently - to achieve the results we aim for. Our vision is to become leaders in the fight for a healthier and more sustainable world. We do that by facilitating the discovery of new medicine, and by acting and inspiring others to fight the ongoing climate and biodiversity crises.
Gubra’s activities are focused on the early stages of drug development and are organised in two highly synergistic business areas: CRO Services and Discovery & Partnerships (D&P). We generate our revenue by performing research for life science companies as well as by partnering projects from our discovery and development pipeline.
Our therapeutic focus is within metabolic and fibrotic diseases, and we specialize in in vivo pharmacology, ex vivo assays, drug profiling, histology, stereology and whole brain and organ imaging. In addition, we offer a full palette of advanced transcriptomics. Our ML/AI-driven peptide drug discovery platform streaMLine enables us to rapidly develop a peptide hit into a non-clinical candidate ready for development. Through a constant focus on high quality, scientific excellence, speed, and solid teamwork we have established ourselves as a highly professional and competent partner in the market.
People are our greatest asset, and our team consists of +270 employees all located in Hørsholm, Denmark. The mix of people from different cultures and educational backgrounds combined with our entrepreneurial mindset have greatly impacted our working environment, which is characterized by entrepreneurial drive, scientific curiosity, and teamwork – we join forces!