Software Engineer (Part-Time, Full-Stack)
Copenhagen, Capital Region of Denmark, Denmark
Sep 27, 2025
Fremstilling af elektriske motorer, generatorer og transformatorer
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":4572,"title":"Software Engineer (Part-Time, Full-Stack)","company_name":"Oktogrid","description":"About the job\n\nThe Ideal Candidate\n\nThe ideal candidate for this role is a curious, technically driven individual who enjoys building and maintaining full-stack software. You should have hands-on experience with JavaScript, TypeScript, and React.js, which form the core of our website's tech stack. In addition, a strong interest in expanding your experience as back-end developer (C# \/ Python) is highly valued. Finally, you should be genuinely enthusiastic about the opportunity for long-term part-time work, allowing you to balance professional responsibilities with other activities you might be engaged in.\n\nKey Responsibilities\n\n\nFully own the on-going development of the next version of our website (JavaScript, TypeScript, React.js, DatoCMS).\nDevelop small tools and APIs for internal use (C# \/ Python).\nDeploy your applications on AWS.\nWrite clean and modular code according to the provided Contribution Guidelines.\nBe generous and detailed while writing suites of unit tests for your code.\nActively contribute to our Product Development Team and work closely with your colleagues on a daily basis.\nCollaborate with our UI\/UX Designer.\n\n\nRequirements\n\n\nResiding within commuting distance of our Copenhagen office – no remote, no relocation, no outsourcing.\nA genuine preference for part-time work as a key factor in your decision to apply for this position.\nExcellent communication skills in English (Danish or other languages are a plus).\nSome hands-on experience with some of these technologies: JavaScript, TypeScript, React.js, DatoCMS, C#, Python.\nStrong interest in full-stack development and internal tooling.\nCommitted to documenting all software products and processes.\nAbility to work collaboratively with a team and towards the common goal to make a small company succeed.\nAbility to work with a high degree of independence.\nAbility to take initiative and meet deadlines.\n\n\nGood To Have\n\n\nSome degree of knowledge of one or more of these applications: Git, Jira (or equivalent issue tracking tool), Confluence, Office, Google Suite.\nSome degree of knowledge of REST APIs, Content Management Systems, microservices.\nAwareness of clean architecture, unit testing, and Agile development.\nFamiliarity with cloud providers such as AWS.\nA public GitHub (or similar) portfolio showing your software work.\n\n\nWhat We Offer\n\n\nA part-time, in-office position (80h\/month, 2.5 days per week) with some degree of flexibility about the working days within the week.\nA professional, informal and positive working environment.\nA great opportunity to learn and kickstart your professional career!\nA cozy office close to public transportation (Nørrebro St.).\nThe possibility to be mentored by experienced professionals.\nThe possibility to work in an environment that genuinely awards pro-activeness, meritocracy and ideas.\nBeing incentivized to develop your own toolset and processes.\n\n\nHow To Apply\n\nPlease apply with your resume in English and in PDF format thru The Hub. Only candidates who apply thru The Hub will end up in the candidate pool. Applications via email will be discarded. The email address is provided only for asking questions or requesting additional information.","brief_summary_of_job":null,"existing_skills_from_job":["Part-time","JavaScript","Representational State Transfer (REST)","React.js","Python (Programming Language)","Git","C (Programming Language)","REST APIs","HTML","English","Writing","Python","TypeScript","React","GitHub","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": 4572,
"extracted_skills": [
{
"skill_name": "JavaScript",
"category": "languages",
"confidence": 100,
"mentioned_as": ["JavaScript", "javascript", "JS"],
"context": "mentioned as part of the core tech stack for the website"
},
{
"skill_name": "TypeScript",
"category": "languages",
"confidence": 100,
"mentioned_as": ["TypeScript", "typescript"],
"context": "mentioned as part of the core tech stack for the website"
},
{
"skill_name": "React",
"category": "frameworks",
"confidence": 100,
"mentioned_as": ["React.js", "React", "react"],
"context": "mentioned as part of the core tech stack for the website"
},
{
"skill_name": "C#",
"category": "languages",
"confidence": 100,
"mentioned_as": ["C#", "C sharp", "C sharp"],
"context": "mentioned as a back-end development language"
},
{
"skill_name": "Python",
"category": "languages",
"confidence": 100,
"mentioned_as": ["Python", "python"],
"context": "mentioned as a back-end development language"
},
{
"skill_name": "AWS",
"category": "tools",
"confidence": 100,
"mentioned_as": ["AWS", "amazon web services"],
"context": "mentioned in the context of deploying applications"
},
{
"skill_name": "Git",
"category": "tools",
"confidence": 100,
"mentioned_as": ["Git"],
"context": "mentioned in the good to have section"
},
{
"skill_name": "GitHub",
"category": "tools",
"confidence": 100,
"mentioned_as": ["GitHub"],
"context": "mentioned in the good to have section"
}
],
"reasoning": {
"total_skills_found": 7,
"skills_by_category": {
"languages": ["JavaScript", "TypeScript", "C#", "Python"],
"frameworks": ["React"],
"databases": [],
"tools": ["AWS", "Git", "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
The Ideal Candidate
The ideal candidate for this role is a curious, technically driven individual who enjoys building and maintaining full-stack software. You should have hands-on experience with JavaScript, TypeScript, and React.js, which form the core of our website's tech stack. In addition, a strong interest in expanding your experience as back-end developer (C# / Python) is highly valued. Finally, you should be genuinely enthusiastic about the opportunity for long-term part-time work, allowing you to balance professional responsibilities with other activities you might be engaged in.
Key Responsibilities
Fully own the on-going development of the next version of our website (JavaScript, TypeScript, React.js, DatoCMS).
Develop small tools and APIs for internal use (C# / Python).
Deploy your applications on AWS.
Write clean and modular code according to the provided Contribution Guidelines.
Be generous and detailed while writing suites of unit tests for your code.
Actively contribute to our Product Development Team and work closely with your colleagues on a daily basis.
Collaborate with our UI/UX Designer.
Requirements
Residing within commuting distance of our Copenhagen office – no remote, no relocation, no outsourcing.
A genuine preference for part-time work as a key factor in your decision to apply for this position.
Excellent communication skills in English (Danish or other languages are a plus).
Some hands-on experience with some of these technologies: JavaScript, TypeScript, React.js, DatoCMS, C#, Python.
Strong interest in full-stack development and internal tooling.
Committed to documenting all software products and processes.
Ability to work collaboratively with a team and towards the common goal to make a small company succeed.
Ability to work with a high degree of independence.
Ability to take initiative and meet deadlines.
Good To Have
Some degree of knowledge of one or more of these applications: Git, Jira (or equivalent issue tracking tool), Confluence, Office, Google Suite.
Some degree of knowledge of REST APIs, Content Management Systems, microservices.
Awareness of clean architecture, unit testing, and Agile development.
Familiarity with cloud providers such as AWS.
A public GitHub (or similar) portfolio showing your software work.
What We Offer
A part-time, in-office position (80h/month, 2.5 days per week) with some degree of flexibility about the working days within the week.
A professional, informal and positive working environment.
A great opportunity to learn and kickstart your professional career!
A cozy office close to public transportation (Nørrebro St.).
The possibility to be mentored by experienced professionals.
The possibility to work in an environment that genuinely awards pro-activeness, meritocracy and ideas.
Being incentivized to develop your own toolset and processes.
How To Apply
Please apply with your resume in English and in PDF format thru The Hub. Only candidates who apply thru The Hub will end up in the candidate pool. Applications via email will be discarded. The email address is provided only for asking questions or requesting additional information.