Same team, a bigger platform. TalentNext’s hiring tools now sit inside JobNext’s HR & workforce module — built for contractors and facilities-management companies running crews across GCC sites, from hire to payslip.
Screens from JobNext’s own HR module — the platform TalentNext now runs on.
Punch Manager
Attendance status by month, across every site — who’s uploaded, who’s finalised, and how many punches are still outstanding before payroll can open.
Payroll reporting
Gratuity, overtime analysis, job-wise salary allocation and settlement registers — ready the moment a payroll run finalises, no extra export step.
21→7 dayspayroll cycle
Zero errorsfirst WPS run
6,000employees, 1,200 sites
One facilities-management company moved its payroll cycle from 21 days to 7, with zero errors on its first WPS-compliant run, after standardising on JobNext’s HR and payroll module.
TalentNext is now part of JobNext, a workforce management platform for contractors and facilities-management companies running crews across GCC sites. Its hiring tools sit inside JobNext's HR and workforce module, which covers the path from hire to payslip on one employee record, so data is not re-typed between steps.
Who is TalentNext built for?
It is built for contractors and facilities-management companies that run crews across GCC sites. The site describes the module as covering hiring, attendance, overtime, payroll and WPS compliance, which suits employers whose workers move between sites, live in camps and need to be paid through a compliant payroll run.
Can I still sign up for a TalentNext account?
No. TalentNext is now part of JobNext, so the signup page sends you to book a walkthrough of the HR and workforce module instead of creating an account. You tell the JobNext team about your sites and crews, and they arrange a tailored walkthrough, usually within one business day.
Which HR and payroll steps does the platform cover?
The platform covers hiring, onboarding, camp and roster assignment, attendance, overtime, payroll, the WPS file and payslips. Every stage writes to the same employee record, so attendance knows who was hired, payroll knows what attendance finalised, and the WPS run knows what payroll produced.
What is in each employee's staff record?
Each employee has a staff directory entry with twelve tabs. These hold documents, job allocation, leave, training and separation, among other details. Recruitment and site allocation open the record, and camp assignments sit in the same HR module rather than in a separate system.
How does JobNext collect attendance from different sites?
Punch Manager ingests biometric and mobile punches across every site, auto-fixes unpaired punches, and finalises the month before payroll runs. The site also lists GPS-verified mobile check-in for field teams who have no biometric device. Finalised attendance then feeds payroll, so payroll does not start from a spreadsheet.
Get in touch
Cookie notice We use cookies for essential functionality and analytics. Analytics cookies are only set with your consent. See our Cookie Policy and Privacy Policy.
', …),
// where dollar-quote and dollar-amp are special replace tokens; and it lives in a
// JS template literal that eats backslash escapes. So keep this block free of the
// dollar sign and of backslash escapes: exact-match CTA texts (no regex end-anchor)
// plus a space-only collapse regex.
var cnxCtaTexts = ['book a demo','request a demo','get a demo','book demo','schedule a demo','talk to sales','talk to us','talk to the team','get in touch','contact us','contact sales','contact the team','contact'];
function cnxIsContactCta(el){
if (el.id && el.id.indexOf('cnx-') === 0) return false;
if (el.hasAttribute && el.hasAttribute('data-cnx-contact')) return true;
var raw = ((el.getAttribute && el.getAttribute('href')) || '').toLowerCase();
var hh = raw.split('?')[0].split('#')[0];
if (raw === '#contact' || hh === '/contact' || hh === 'contact' || hh === 'contact.html'
|| (hh.length >= 8 && hh.lastIndexOf('/contact') === hh.length - 8)
|| (hh.length >= 13 && hh.lastIndexOf('/contact.html') === hh.length - 13)) return true;
var t = (el.textContent || '').replace(/ +/g, ' ').trim().toLowerCase();
if (t.length > 24) return false;
for (var k = 0; k < cnxCtaTexts.length; k++) { if (t === cnxCtaTexts[k]) return true; }
return false;
}
document.addEventListener('click', function (e) {
var el = e.target;
while (el && el !== document) {
if (el.tagName === 'A' || el.tagName === 'BUTTON') break;
el = el.parentNode;
}
if (!el || el === document) return;
if (cnxIsContactCta(el)) {
e.preventDefault();
e.stopPropagation();
openModal();
}
}, true);
if (closeBtn) closeBtn.addEventListener('click', closeModal);
if (scrim) scrim.addEventListener('click', function(e){ if(e.target === scrim) closeModal(); });
if (form) form.addEventListener('submit', function(e){
e.preventDefault();
var note = document.getElementById('cnx-note'), err = document.getElementById('cnx-err'), btn = document.getElementById('cnx-submit');
note.style.display='none'; err.style.display='none';
if (form.website_url && form.website_url.value){ note.style.display='block'; return; } // honeypot
var payload = {
name: form.name.value, email: form.email.value, company: form.company.value,
phone: form.phone.value, message: form.message.value,
subscribe_newsletter: form.subscribe_newsletter && form.subscribe_newsletter.checked,
turnstile_token: form.turnstile_token ? form.turnstile_token.value : '',
_token_ts: tsEl ? tsEl.value : tokenTs()
};
if (!payload.name || !payload.email || !payload.company || !payload.phone || !payload.message){ err.textContent='Please fill in all required fields.'; err.style.display='block'; return; }
if (payload.phone.replace(/[^0-9]/g, '').length < 7){ err.textContent='Please enter a valid phone number.'; err.style.display='block'; return; }
btn.disabled = true; btn.textContent = 'Sending…';
post(payload).then(function(d){
if (d && d.success){ form.style.display='none'; note.style.display='block'; }
else { err.textContent = (d && d.message) || 'Something went wrong — please try again.'; err.style.display='block'; btn.disabled=false; btn.textContent='Send message'; }
}).catch(function(){ err.textContent='Network error — please try again.'; err.style.display='block'; btn.disabled=false; btn.textContent='Send message'; });
});
// --- Progressive enhancement: wire a site's OWN contact form to the CRM ---
// Targets forms that look like contact forms (have an email field AND a
// textarea/message field), aren't ours, and aren't opted out. Field mapping is
// heuristic; company falls back to the entered name so the CRM never rejects.
function pick(f, res){ for (var i=0;i
Cookie notice We use cookies for essential functionality and analytics. Analytics cookies are only set with your consent. See our Cookie Policy and Privacy Policy.