Fullstack Typescript Engineer (Copenhagen)
Copenhagen, Capital Region of Denmark, Denmark
Oct 1, 2025
 
                            Computerprogrammering
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":4571,"title":"Fullstack Typescript Engineer (Copenhagen)","company_name":"Responsibly","description":"About the job\n\nResponsibly 🌍🌱\n\n\n\n\nResponsibly is a sustainability tech start-up with a vision of making every purchase in the world responsible.\n\n\n\n\nWe're founded by serial entrepreneurs with previous successes like Ofload, Dixa, Neurons, and more, and are funded by some of Europe's top VCs and angels.\n\n\n\n\nWe’re at the most exciting part of our journey (yet!) where the product is being picked up by some of the biggest companies out there, and we have an incredibly exciting roadmap ahead of us! 🤘\n\n\n\n\nLet’s change the world together 🎯\n\n\n\n\nIf you already know why sustainable procurement is sexy, then skip this section, if not, read on!\n\n\n\n\nLook, you probably already know that there are not many bigger problems out there than the climate, but did you know that more than 40% of global emissions, or really any ESG issue, are directly or indirectly impacted by procurement? That’s because companies have an incredible amount of power (‘purchasing power’) when selecting and managing suppliers, so if we can put sustainability on every supplier scorecard out there, we really can change the world.\n\n\n\n\nBut it’s hard! A company will have anywhere from 100 - 100,000 suppliers and analyzing each of their sustainability efforts is an impossible task, and most ESG ratings suck.\n\n\n\n\nThat’s what we’re trying to change. Responsibly's ai-powered due diligence engine automates the due diligence on every supplier across every single esg data point on your suppliers (from risk and violations to positive actions), and turns that into insights to ultimately help companies build more sustainable supply chains.\n\n\n\n\nPretty cool right?\n\n(yes, this dorky description was indeed written by an overly excited founder…)\n\n\n\n\nBuild next gen products using next gen technologies 🌟\n\n\n\n\nWe’re growing our Fullstack engineering team to craft the next-generation sustainability due diligence platform.\n\n\n\n\nAt Responsibly, you’ll work on a Next.js 15 app leveraging the latest in server actions, server components, and cutting-edge serverless architectures. This is your chance to build dynamic, high-performance applications with modern tools like TypeScript, PostgreSQL, and AI integrations. Every day brings exciting challenges where you can push boundaries, innovate with the latest technologies, and create impactful solutions for a more sustainable future.\n\n\n\n\nAlso, we don’t just leverage AI for our product, but we also want to build a next generation engineering team, where you’re not only encouraged, but expected to adopt the latest technologies in your engineering.\n\n\nTasks\n\n\nWhat you’ll be doing 🙌\n\n\n\n\n\nTaking operational responsibility for the code that you write throughout the entire software development life cycle\n\n\nWorking on production code, from customer related operations to bug fixing\n\n\nWorking closely with your team on designing new features and seeing them through to completion\n\n\nBeing part of building and evolving our services and infrastructure to stay ahead of our growth curve\n\n\nBuilding exciting new features for our customers and business partners\n\n\nHelping take conceptual ideas and turn them into production-ready scalable features\n\n\nBeing a big part of finding the best possible solutions to our daily challenges\n\n\n\nRequirements\n\n\nAbout you 😎\n\n\n\n\n\nWhere you lack experience, you make up for it with passion, talent and dedication; if you’re straight out of school, you can still convince us if you can demonstrate this. But generally:\n\n\nYou have solid experience with TypeScript and a proven ability to work with modern frameworks like Next.js, including server actions, server components, and API routes.\n\n\nYou have experience, desire and passion for integrating cutting-edge AI tools and working with LLMs (e.g., OpenAI, HuggingFace).\n\n\nYou are experienced in building REST APIs and have an understanding of designing, debugging, and deploying scalable web applications.\n\n\nYou have some hands-on experience with PostgreSQL or other relational databases and understand how to design efficient, maintainable database schemas.\n\n\nYou have experience with, or a desire to work with serverless architectures, including technologies like AWS Lambda.\n\n\nYou’re comfortable working with AWS services or similar cloud providers. \n\n\nYou have experience with web scraping tools and techniques.\n\n\nYou value writing clean, testable, and maintainable code and have a track record of doing so.\n\n\n\nBenefits\n\n\nYour benefits 🤩\n\n\n\n\n\nCompetitive salary & opportunity for ESOP participation\n\n\nOnsite in our awesome office in Islands Brygge, but flexibility around hours and remote working.\n\n\nOffice located in Islands Brygge, close to the water, with awesome lunch, great coffee, and the obligatory ping pong table. \n\n\nLots of fun, like our annual company event or Friday bars!\n\n\n\n\n\nStill need to be convinced? 🤔\n\n\n\n\n\nIt’s the opportunity to join an early-stage tech & social impact company on an incredible journey. You’ll have the independence and space to release your creativity\n\n\nYou'll become a vital member of the team, and your efforts will have a direct impact on the Responsibly’s success. \n\n\nYou’ll be part of a dynamic company with enthusiastic and highly talented teammates from all backgrounds and countries – always ready to share knowledge, support, and a beer! Successes are always shared together\n\n\nWe will offer you strong personal and professional development opportunities in a dynamic and high-growth environment – we want to take you from good to great. \n\n\nWe'll encourage you to push boundaries and be the greatest version of yourself by providing the balance of freedom and structure with a good dose of fun.\n\n\nWe have fun and we make an impact - life is about more than work!","brief_summary_of_job":null,"existing_skills_from_job":["On-site","Full-time","Web Applications","Representational State Transfer (REST)","Writing","REST APIs","Application Programming Interfaces (API)","Software Development","TypeScript","HTML","SQL","XML","Next.js","PostgreSQL","AWS"],"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": 4571,
  "extracted_skills": [
    {
      "skill_name": "TypeScript",
      "category": "languages",
      "confidence": 100,
      "mentioned_as": ["TypeScript"],
      "context": "You have solid experience with TypeScript and a proven ability to work with modern frameworks like Next.js."
    },
    {
      "skill_name": "Next.js",
      "category": "frameworks",
      "confidence": 100,
      "mentioned_as": ["Next.js"],
      "context": "You have solid experience with TypeScript and a proven ability to work with modern frameworks like Next.js."
    },
    {
      "skill_name": "PostgreSQL",
      "category": "databases",
      "confidence": 100,
      "mentioned_as": ["PostgreSQL"],
      "context": "You have some hands-on experience with PostgreSQL or other relational databases."
    },
    {
      "skill_name": "AWS",
      "category": "tools",
      "confidence": 100,
      "mentioned_as": ["AWS", "AWS services"],
      "context": "You’re comfortable working with AWS services or similar cloud providers."
    }
  ],
  "reasoning": {
    "total_skills_found": 4,
    "skills_by_category": {
      "languages": ["TypeScript"],
      "frameworks": ["Next.js"],
      "databases": ["PostgreSQL"],
      "tools": ["AWS"]
    },
    "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
Responsibly 🌍🌱
Responsibly is a sustainability tech start-up with a vision of making every purchase in the world responsible.
We're founded by serial entrepreneurs with previous successes like Ofload, Dixa, Neurons, and more, and are funded by some of Europe's top VCs and angels.
We’re at the most exciting part of our journey (yet!) where the product is being picked up by some of the biggest companies out there, and we have an incredibly exciting roadmap ahead of us! 🤘
Let’s change the world together 🎯
If you already know why sustainable procurement is sexy, then skip this section, if not, read on!
Look, you probably already know that there are not many bigger problems out there than the climate, but did you know that more than 40% of global emissions, or really any ESG issue, are directly or indirectly impacted by procurement? That’s because companies have an incredible amount of power (‘purchasing power’) when selecting and managing suppliers, so if we can put sustainability on every supplier scorecard out there, we really can change the world.
But it’s hard! A company will have anywhere from 100 - 100,000 suppliers and analyzing each of their sustainability efforts is an impossible task, and most ESG ratings suck.
That’s what we’re trying to change. Responsibly's ai-powered due diligence engine automates the due diligence on every supplier across every single esg data point on your suppliers (from risk and violations to positive actions), and turns that into insights to ultimately help companies build more sustainable supply chains.
Pretty cool right?
(yes, this dorky description was indeed written by an overly excited founder…)
Build next gen products using next gen technologies 🌟
We’re growing our Fullstack engineering team to craft the next-generation sustainability due diligence platform.
At Responsibly, you’ll work on a Next.js 15 app leveraging the latest in server actions, server components, and cutting-edge serverless architectures. This is your chance to build dynamic, high-performance applications with modern tools like TypeScript, PostgreSQL, and AI integrations. Every day brings exciting challenges where you can push boundaries, innovate with the latest technologies, and create impactful solutions for a more sustainable future.
Also, we don’t just leverage AI for our product, but we also want to build a next generation engineering team, where you’re not only encouraged, but expected to adopt the latest technologies in your engineering.
Tasks
What you’ll be doing 🙌
Taking operational responsibility for the code that you write throughout the entire software development life cycle
Working on production code, from customer related operations to bug fixing
Working closely with your team on designing new features and seeing them through to completion
Being part of building and evolving our services and infrastructure to stay ahead of our growth curve
Building exciting new features for our customers and business partners
Helping take conceptual ideas and turn them into production-ready scalable features
Being a big part of finding the best possible solutions to our daily challenges
Requirements
About you 😎
Where you lack experience, you make up for it with passion, talent and dedication; if you’re straight out of school, you can still convince us if you can demonstrate this. But generally:
You have solid experience with TypeScript and a proven ability to work with modern frameworks like Next.js, including server actions, server components, and API routes.
You have experience, desire and passion for integrating cutting-edge AI tools and working with LLMs (e.g., OpenAI, HuggingFace).
You are experienced in building REST APIs and have an understanding of designing, debugging, and deploying scalable web applications.
You have some hands-on experience with PostgreSQL or other relational databases and understand how to design efficient, maintainable database schemas.
You have experience with, or a desire to work with serverless architectures, including technologies like AWS Lambda.
You’re comfortable working with AWS services or similar cloud providers.
You have experience with web scraping tools and techniques.
You value writing clean, testable, and maintainable code and have a track record of doing so.
Benefits
Your benefits 🤩
Competitive salary & opportunity for ESOP participation
Onsite in our awesome office in Islands Brygge, but flexibility around hours and remote working.
Office located in Islands Brygge, close to the water, with awesome lunch, great coffee, and the obligatory ping pong table.
Lots of fun, like our annual company event or Friday bars!
Still need to be convinced? 🤔
It’s the opportunity to join an early-stage tech & social impact company on an incredible journey. You’ll have the independence and space to release your creativity
You'll become a vital member of the team, and your efforts will have a direct impact on the Responsibly’s success.
You’ll be part of a dynamic company with enthusiastic and highly talented teammates from all backgrounds and countries – always ready to share knowledge, support, and a beer! Successes are always shared together
We will offer you strong personal and professional development opportunities in a dynamic and high-growth environment – we want to take you from good to great.
We'll encourage you to push boundaries and be the greatest version of yourself by providing the balance of freedom and structure with a good dose of fun.
We have fun and we make an impact - life is about more than work!