${titleText}
`); let grid = columnOne.querySelector('.job-grid'); let allTokens = Array.from(columnOne.querySelectorAll('.joblayouttoken')); // --- 1. CAPTURE VARIABLES FOR BUSINESS RULES --- let jobLocationValue = ""; let countryRegionValue = ""; let regionValue = ""; let jobLevelValue = ""; let employeeGroupValue = ""; allTokens.forEach(el => { let labelEl = el.querySelector('.joblayouttoken-label'); if (!labelEl) return; let labelText = labelEl.innerText; let propId = generatePropertyId(labelText); let valueEl = el.querySelector('.rtltextaligneligible'); let valueText = valueEl ? valueEl.textContent.trim() : ""; if (propId === "JobLocation") { jobLocationValue = valueText; } else if (propId === "CountryRegion") { countryRegionValue = valueText; } else if (propId === "Region") { regionValue = valueText; } else if (propId === "JobLevel") { jobLevelValue = valueText.toUpperCase().trim(); } else if (propId === "EmployeeGroup") { employeeGroupValue = valueText.toLowerCase(); } }); // --- 1.5 FALLBACK DATA FROM JOB DESCRIPTION --- let descDiv = document.querySelector('.job-description') || columnOne.querySelector('[itemprop="description"]'); if (descDiv) { let descText = descDiv.innerText || ""; if (!employeeGroupValue) { let eg = descText.match(/Employee Group:\s*([^\n\r]+)/i); if (eg) employeeGroupValue = eg[1].toLowerCase().trim(); } if (!countryRegionValue) { let cr = descText.match(/Country:\s*([^\n\r]+)/i); if (cr) countryRegionValue = cr[1].toLowerCase().trim(); } if (!regionValue) { let rg = descText.match(/Region:\s*([^\n\r]+)/i); if (rg) regionValue = rg[1].toLowerCase().trim(); } if (!jobLevelValue) { let jl = descText.match(/Job Level:\s*([^\n\r]+)/i); if (jl && !jl[0].toLowerCase().includes("experience")) { jobLevelValue = jl[1].toUpperCase().trim(); } } } // --- 2. RULE VALIDATION --- let isSalaryPaid = employeeGroupValue.includes('salary'); // Job Level Rule: if >= PL09 or ZZ, hide the salary. let isJobLevelSalaryEligible = true; let plMatch = jobLevelValue.match(/PL(\d+)/); if (jobLevelValue.includes("ZZ")) { isJobLevelSalaryEligible = false; } else if (plMatch && parseInt(plMatch[1], 10) >= 9) { isJobLevelSalaryEligible = false; } let fullLocationLower = (jobLocationValue + " " + countryRegionValue).toLowerCase(); let isUSJob = fullLocationLower.includes("usa") || fullLocationLower.includes("united states") || /\bus\b/.test(fullLocationLower); let allowedUSStates = ["massachusetts", "illinois", "colorado", "minnesota", "new york", "oregon", "ohio", "california", "washington", "nevada", "maryland", "new jersey"]; let allowedUSAbbr = ["ma", "il", "co", "mn", "ny", "or", "oh", "ca", "wa", "nv", "md", "nj", "wdc", "dc"]; let allowedGlobalCountries = ["canada"]; let isSalaryLocationValid = false; if (isUSJob) { let hasFullStateName = allowedUSStates.some(state => fullLocationLower.includes(state)); let hasStateAbbr = allowedUSAbbr.some(abbr => { let regex = new RegExp(`\\b${abbr}\\b`); return regex.test(fullLocationLower); }); isSalaryLocationValid = hasFullStateName || hasStateAbbr; } else { isSalaryLocationValid = allowedGlobalCountries.some(country => fullLocationLower.includes(country)); } let showSalaryRange = isSalaryLocationValid && isJobLevelSalaryEligible && isSalaryPaid; // --- 3. TOKEN PROCESSING AND DISPLAY --- allTokens.forEach(el => { if (el.querySelector('[itemprop="description"]')) { return; } let labelEl = el.querySelector('.joblayouttoken-label'); if (labelEl) { let labelText = labelEl.innerText; let customPropertyid = generatePropertyId(labelText); // --- ABSOLUTE REMOVAL OF TOKENS USED FOR LOGIC --- if ( customPropertyid === "EmployeeGroup" || customPropertyid === "CountryRegion" || customPropertyid === "Region" || customPropertyid === "JobLevel" ) { el.style.display = 'none'; el.remove(); return; } // --- BUSINESS FILTERS --- if (customPropertyid === "SalaryRange" && !showSalaryRange) { el.style.display = 'none'; el.remove(); return; } // --- LABEL TEXT WORKAROUNDS --- if (customPropertyid === "SalaryRange" && labelText.toLowerCase().includes("recruitment salary range")) { labelEl.innerText = labelText.replace(/Recruitment Salary Range/ig, "Annual Salary Range"); } if (labelText.includes("(Short)")) { labelEl.innerText = labelText.replace(/\(Short\)/g, "(s)"); } // --- BRUTE FORCE STYLING --- labelEl.style.setProperty('font-weight', 'bold', 'important'); labelEl.style.setProperty('font-size', '14px', 'important'); labelEl.style.setProperty('color', '#303030', 'important'); labelEl.style.setProperty('font-family', 'Verdana, Geneva, sans-serif', 'important'); let valueEl = el.querySelector('.rtltextaligneligible'); if (valueEl) { valueEl.style.setProperty('font-weight', 'normal', 'important'); valueEl.style.setProperty('font-size', '15px', 'important'); valueEl.style.setProperty('color', '#303030', 'important'); valueEl.style.setProperty('font-family', 'Verdana, Geneva, sans-serif', 'important'); } // --- ADD ICONS --- let elType = labelEl.nextElementSibling; if (elType) { let icon = ''; let iconUrl = ''; switch (customPropertyid) { case 'JobLocation': icon = 'glyphicon-map-marker'; break; case 'BusinessUnit': icon = 'glyphicon-briefcase'; break; case 'JobCategory': icon = 'glyphicon-dashboard'; break; case 'EmploymentType': icon = 'glyphicon-star-empty'; break; case 'ReqID': icon = 'glyphicon-calendar'; break; case 'WorkLocationType': icon = 'glyphicon-paste'; break; case 'JobExperienceLevel': iconUrl = 'https://rmkcdn.successfactors.com/ef55fddb/b4cf3492-3cb2-4e29-a914-3.png'; break; case 'SalaryRange': iconUrl = 'https://rmkcdn.successfactors.com/ef55fddb/3bd06ab1-e5dc-4e72-abcb-3.png'; break; case 'TAPartner': iconUrl = 'https://rmkcdn.successfactors.com/ef55fddb/66a66419-f8c9-4f0e-b94a-6.png'; break; default: icon = ''; } let iconHtml = ''; if (icon) { iconHtml = ``; } else if (iconUrl) { iconHtml = ``; } labelEl.parentElement.insertAdjacentHTML('beforebegin', `
${iconHtml}`); let wrapper = el.querySelector(`.job-token-${customPropertyid}-wrapper`); wrapper.appendChild(labelEl.parentElement); let emptySibling = document.querySelector(`.job-token-${customPropertyid}-wrapper`).nextSibling; if(emptySibling && emptySibling.nodeType === 3) emptySibling.remove(); } grid.appendChild(el); } }); // --- 4. CLEAN UP JOB DESCRIPTION HARDCODED TOKENS --- if (descDiv) { let descHtml = descDiv.innerHTML; descHtml = descHtml.replace(/Employee Group:[\s\S]*?(?=
arr.some(keyword => normalized.includes(keyword)); if (contains(["employee group"])) return "EmployeeGroup"; if (contains(["country", "land", "país", "pays", "paese", "kraj", "krajina"])) return "CountryRegion"; if (contains(["region", "región", "région", "регион", "地区"])) return "Region"; if (contains(["posting job location", "job location", "joblokation", "jobsted", "arbeitsort", "ubicación", "site de l'emploi", "lokalizacja", "местоположение", "miesto", "职位地点", "sede di lavoro"])) return "JobLocation"; if (contains(["salary range", "annual recruitment salary", "løninterval", "gehaltsspanne", "przedział wynagrodzenia", "fourchette", "rango salarial", "mzdové rozpätie", "lønramme", "диапазон зарплаты"])) return "SalaryRange"; // Traduções adicionadas para o nível de experiência em Polonês, Francês e Alemão if (contains(["job experience level", "erfaringsniveau", "erfahrungsniveau", "poziom doświadczenia", "expérience professionnelle", "experiência"])) return "JobExperienceLevel"; if (contains(["posting job level", "job level", "jobniveau", "joblevel", "nivel del puesto", "niveau du poste", "poziom stanowiska", "уровень должности", "úroveň pozície"])) return "JobLevel"; if (contains(["employment type", "ansættelse", "beschäftigungsart", "tipo de emprego", "type d'emploi", "rodzaj zatrudnienia", "тип занятости", "typ pracovného pomeru", "员工类型", "tipologia di impiego", "tipo de empleo"])) return "EmploymentType"; if (contains(["work location type", "arbejdsstedstype", "arbeitsmodell", "tipo de ubicacion", "emplacement de travail", "miejsca pracy", "формат работы", "výkonu práce", "工作地点类型", "modalità di lavoro"])) return "WorkLocationType"; if (contains(["job category", "jobkategori", "stellenkategorie", "categoría", "catégorie", "kategoria", "категория должности", "kategória", "职位类别", "area professionale"])) return "JobCategory"; if (contains(["business unit", "segment", "segmento", "firmaenhed", "unternehmenseinheit", "jednostka biznesowa", "сегмент", "业务板块"])) return "BusinessUnit"; if (contains(["req id", "rek-id", "kennung", "id de solicitud", "identifiant de la demande", "identyfikator", "идентификатор", "id pracovní pozície", "需求 id", "identifikačné", "id posizione", "requisition id", "stellen-id"])) return "ReqID"; if (contains(["ta partner", "partenaire ta"])) return "TAPartner"; return jobLayoutTokenLabel.replace(/[\s:\(\)\]\[]/g,'');}
The Impact You'll Make
As a Senior Full-Stack Engineer, you will play a key role in shaping the future of Danfoss Turbocor's next-generation digital services platform. This is your opportunity to build modern, connected applications that power real-world industrial innovation across web, desktop, and cloud environments.
You will work at the intersection of software, hardware, and data, designing solutions that bring measurable value to customers and operations. Your work will directly influence how our products perform, connect, and scale globally.
If you enjoy solving complex technical challenges and want to help evolve engineering practices while building impactful products, this role gives you the platform to do it.
What You'll Be Doing
What We're Looking For
What You'll Get from Us
Ready to Make a Difference?
If this role excites you, we'd love to hear from you! Apply now to start the conversation and learn more about where your career can go with us.
Our Commitment to Transparency
Salary ranges listed reflect only primary location and currency. For local salary ranges and specific benefits in your preferred hiring location, please ask your Talent Acquisition representative for more information.
The actual salary offer will carefully consider a wide range of factors, including your skills, qualifications, experience, and location. Any benefits listed do not promise or guarantee any particular benefit or specific action. They may depend on country or contract specifics and are subject to change at any time without prior notice.
Want to know more? Please visit our FAQ Page.
All qualified applicants will receive consideration for employment without regard to race, color, religion, sex, sexual orientation, gender identity, national origin, age, disability, veteran status, or other protected category.
Information at a Glance
`); let grid = columnOne.querySelector('.job-grid'); let allTokens = Array.from(columnOne.querySelectorAll('.joblayouttoken')); // --- 1. CAPTURE VARIABLES FOR BUSINESS RULES --- let jobLocationValue = ""; let countryRegionValue = ""; let regionValue = ""; let jobLevelValue = ""; let employeeGroupValue = ""; allTokens.forEach(el => { let labelEl = el.querySelector('.joblayouttoken-label'); if (!labelEl) return; let labelText = labelEl.innerText; let propId = generatePropertyId(labelText); let valueEl = el.querySelector('.rtltextaligneligible'); let valueText = valueEl ? valueEl.textContent.trim() : ""; if (propId === "JobLocation") { jobLocationValue = valueText; } else if (propId === "CountryRegion") { countryRegionValue = valueText; } else if (propId === "Region") { regionValue = valueText; } else if (propId === "JobLevel") { jobLevelValue = valueText.toUpperCase().trim(); } else if (propId === "EmployeeGroup") { employeeGroupValue = valueText.toLowerCase(); } }); // --- 1.5 FALLBACK DATA FROM JOB DESCRIPTION --- let descDiv = document.querySelector('.job-description') || columnOne.querySelector('[itemprop="description"]'); if (descDiv) { let descText = descDiv.innerText || ""; if (!employeeGroupValue) { let eg = descText.match(/Employee Group:\s*([^\n\r]+)/i); if (eg) employeeGroupValue = eg[1].toLowerCase().trim(); } if (!countryRegionValue) { let cr = descText.match(/Country:\s*([^\n\r]+)/i); if (cr) countryRegionValue = cr[1].toLowerCase().trim(); } if (!regionValue) { let rg = descText.match(/Region:\s*([^\n\r]+)/i); if (rg) regionValue = rg[1].toLowerCase().trim(); } if (!jobLevelValue) { let jl = descText.match(/Job Level:\s*([^\n\r]+)/i); if (jl && !jl[0].toLowerCase().includes("experience")) { jobLevelValue = jl[1].toUpperCase().trim(); } } } // --- 2. RULE VALIDATION --- let isSalaryPaid = employeeGroupValue.includes('salary'); // Job Level Rule: if >= PL09 or ZZ, hide the salary. let isJobLevelSalaryEligible = true; let plMatch = jobLevelValue.match(/PL(\d+)/); if (jobLevelValue.includes("ZZ")) { isJobLevelSalaryEligible = false; } else if (plMatch && parseInt(plMatch[1], 10) >= 9) { isJobLevelSalaryEligible = false; } let fullLocationLower = (jobLocationValue + " " + countryRegionValue).toLowerCase(); let isUSJob = fullLocationLower.includes("usa") || fullLocationLower.includes("united states") || /\bus\b/.test(fullLocationLower); let allowedUSStates = ["massachusetts", "illinois", "colorado", "minnesota", "new york", "oregon", "ohio", "california", "washington", "nevada", "maryland", "new jersey"]; let allowedUSAbbr = ["ma", "il", "co", "mn", "ny", "or", "oh", "ca", "wa", "nv", "md", "nj", "wdc", "dc"]; let allowedGlobalCountries = ["canada"]; let isSalaryLocationValid = false; if (isUSJob) { let hasFullStateName = allowedUSStates.some(state => fullLocationLower.includes(state)); let hasStateAbbr = allowedUSAbbr.some(abbr => { let regex = new RegExp(`\\b${abbr}\\b`); return regex.test(fullLocationLower); }); isSalaryLocationValid = hasFullStateName || hasStateAbbr; } else { isSalaryLocationValid = allowedGlobalCountries.some(country => fullLocationLower.includes(country)); } let showSalaryRange = isSalaryLocationValid && isJobLevelSalaryEligible && isSalaryPaid; // --- 3. TOKEN PROCESSING AND DISPLAY --- allTokens.forEach(el => { if (el.querySelector('[itemprop="description"]')) { return; } let labelEl = el.querySelector('.joblayouttoken-label'); if (labelEl) { let labelText = labelEl.innerText; let customPropertyid = generatePropertyId(labelText); // --- ABSOLUTE REMOVAL OF TOKENS USED FOR LOGIC --- if ( customPropertyid === "EmployeeGroup" || customPropertyid === "CountryRegion" || customPropertyid === "Region" || customPropertyid === "JobLevel" ) { el.style.display = 'none'; el.remove(); return; } // --- BUSINESS FILTERS --- if (customPropertyid === "SalaryRange" && !showSalaryRange) { el.style.display = 'none'; el.remove(); return; } // --- LABEL TEXT WORKAROUNDS --- if (customPropertyid === "SalaryRange" && labelText.toLowerCase().includes("recruitment salary range")) { labelEl.innerText = labelText.replace(/Recruitment Salary Range/ig, "Annual Salary Range"); } if (labelText.includes("(Short)")) { labelEl.innerText = labelText.replace(/\(Short\)/g, "(s)"); } // --- BRUTE FORCE STYLING --- labelEl.style.setProperty('font-weight', 'bold', 'important'); labelEl.style.setProperty('font-size', '14px', 'important'); labelEl.style.setProperty('color', '#303030', 'important'); labelEl.style.setProperty('font-family', 'Verdana, Geneva, sans-serif', 'important'); let valueEl = el.querySelector('.rtltextaligneligible'); if (valueEl) { valueEl.style.setProperty('font-weight', 'normal', 'important'); valueEl.style.setProperty('font-size', '15px', 'important'); valueEl.style.setProperty('color', '#303030', 'important'); valueEl.style.setProperty('font-family', 'Verdana, Geneva, sans-serif', 'important'); } // --- ADD ICONS --- let elType = labelEl.nextElementSibling; if (elType) { let icon = ''; let iconUrl = ''; switch (customPropertyid) { case 'JobLocation': icon = 'glyphicon-map-marker'; break; case 'BusinessUnit': icon = 'glyphicon-briefcase'; break; case 'JobCategory': icon = 'glyphicon-dashboard'; break; case 'EmploymentType': icon = 'glyphicon-star-empty'; break; case 'ReqID': icon = 'glyphicon-calendar'; break; case 'WorkLocationType': icon = 'glyphicon-paste'; break; case 'JobExperienceLevel': iconUrl = 'https://rmkcdn.successfactors.com/ef55fddb/b4cf3492-3cb2-4e29-a914-3.png'; break; case 'SalaryRange': iconUrl = 'https://rmkcdn.successfactors.com/ef55fddb/3bd06ab1-e5dc-4e72-abcb-3.png'; break; case 'TAPartner': iconUrl = 'https://rmkcdn.successfactors.com/ef55fddb/66a66419-f8c9-4f0e-b94a-6.png'; break; default: icon = ''; } let iconHtml = ''; if (icon) { iconHtml = ``; } else if (iconUrl) { iconHtml = ``; } labelEl.parentElement.insertAdjacentHTML('beforebegin', `
${iconHtml}`); let wrapper = el.querySelector(`.job-token-${customPropertyid}-wrapper`); wrapper.appendChild(labelEl.parentElement); let emptySibling = document.querySelector(`.job-token-${customPropertyid}-wrapper`).nextSibling; if(emptySibling && emptySibling.nodeType === 3) emptySibling.remove(); } grid.appendChild(el); } }); // --- 4. CLEAN UP JOB DESCRIPTION HARDCODED TOKENS --- if (descDiv) { let descHtml = descDiv.innerHTML; descHtml = descHtml.replace(/Employee Group:[\s\S]*?(?=
arr.some(keyword => normalized.includes(keyword)); if (contains(["employee group"])) return "EmployeeGroup"; if (contains(["country", "land", "país", "pays", "paese", "kraj", "krajina"])) return "CountryRegion"; if (contains(["region", "región", "région", "регион", "地区"])) return "Region"; if (contains(["posting job location", "job location", "joblokation", "jobsted", "arbeitsort", "ubicación", "site de l'emploi", "lokalizacja", "местоположение", "miesto", "职位地点", "sede di lavoro"])) return "JobLocation"; if (contains(["salary range", "annual recruitment salary", "løninterval", "gehaltsspanne", "przedział wynagrodzenia", "fourchette", "rango salarial", "mzdové rozpätie", "lønramme", "диапазон зарплаты"])) return "SalaryRange"; // Traduções adicionadas para o nível de experiência em Polonês, Francês e Alemão if (contains(["job experience level", "erfaringsniveau", "erfahrungsniveau", "poziom doświadczenia", "expérience professionnelle", "experiência"])) return "JobExperienceLevel"; if (contains(["posting job level", "job level", "jobniveau", "joblevel", "nivel del puesto", "niveau du poste", "poziom stanowiska", "уровень должности", "úroveň pozície"])) return "JobLevel"; if (contains(["employment type", "ansættelse", "beschäftigungsart", "tipo de emprego", "type d'emploi", "rodzaj zatrudnienia", "тип занятости", "typ pracovného pomeru", "员工类型", "tipologia di impiego", "tipo de empleo"])) return "EmploymentType"; if (contains(["work location type", "arbejdsstedstype", "arbeitsmodell", "tipo de ubicacion", "emplacement de travail", "miejsca pracy", "формат работы", "výkonu práce", "工作地点类型", "modalità di lavoro"])) return "WorkLocationType"; if (contains(["job category", "jobkategori", "stellenkategorie", "categoría", "catégorie", "kategoria", "категория должности", "kategória", "职位类别", "area professionale"])) return "JobCategory"; if (contains(["business unit", "segment", "segmento", "firmaenhed", "unternehmenseinheit", "jednostka biznesowa", "сегмент", "业务板块"])) return "BusinessUnit"; if (contains(["req id", "rek-id", "kennung", "id de solicitud", "identifiant de la demande", "identyfikator", "идентификатор", "id pracovní pozície", "需求 id", "identifikačné", "id posizione", "requisition id", "stellen-id"])) return "ReqID"; if (contains(["ta partner", "partenaire ta"])) return "TAPartner"; return jobLayoutTokenLabel.replace(/[\s:\(\)\]\[]/g,'');}
The Impact You'll Make
As a Senior Full-Stack Engineer, you will play a key role in shaping the future of Danfoss Turbocor's next-generation digital services platform. This is your opportunity to build modern, connected applications that power real-world industrial innovation across web, desktop, and cloud environments.
You will work at the intersection of software, hardware, and data, designing solutions that bring measurable value to customers and operations. Your work will directly influence how our products perform, connect, and scale globally.
If you enjoy solving complex technical challenges and want to help evolve engineering practices while building impactful products, this role gives you the platform to do it.
What You'll Be Doing
- Design and deliver scalable solutions across web, desktop (Electron), and cloud-connected applications that power our digital services platform
- Lead technical decisions and architecture direction, helping shape new products and ensuring long-term maintainability and performance
- Build full-stack features using Angular, TypeScript, and Node.js (NestJS), delivering seamless and responsive user experiences
- Develop secure APIs and integrations, including RESTful services and WebSocket endpoints for internal and third-party use
- Collaborate across teams in engineering, product, and operations to turn ideas into integrated, high-quality solutions
What We're Looking For
- 5+ years of experience in full-stack development, with a Bachelor's or Master's degree in Computer Science or a related field
- Strong expertise in Angular, TypeScript, and Node.js, with experience building production-grade applications
- Experience developing desktop or hybrid applications (Electron or similar frameworks)
- Solid understanding of API design and security, including REST, WebSockets, OAuth 2.0, and JWT
- Hands-on experience with databases or data persistence layers in real-world applications
- Proven ability to own technical direction and deliver software solutions end-to-end in collaborative environments
What You'll Get from Us
- We promote from within and support your learning with mentoring, training, and access to global opportunities.
- You'll have flexibility, autonomy, and support to do your best work while maintaining a healthy work-life balance. Your well-being matters to us.
- We strive to create an inclusive work environment where people of all backgrounds are respected, and valued for who they are.
- You'll receive benefits like annual bonus, paid vacation, pension plans, personal insurance, and more. These vary by country and contract, but they're worth asking about-we think they're pretty great.
Ready to Make a Difference?
If this role excites you, we'd love to hear from you! Apply now to start the conversation and learn more about where your career can go with us.
Our Commitment to Transparency
Salary ranges listed reflect only primary location and currency. For local salary ranges and specific benefits in your preferred hiring location, please ask your Talent Acquisition representative for more information.
The actual salary offer will carefully consider a wide range of factors, including your skills, qualifications, experience, and location. Any benefits listed do not promise or guarantee any particular benefit or specific action. They may depend on country or contract specifics and are subject to change at any time without prior notice.
Want to know more? Please visit our FAQ Page.
All qualified applicants will receive consideration for employment without regard to race, color, religion, sex, sexual orientation, gender identity, national origin, age, disability, veteran status, or other protected category.
Information at a Glance