Don’t wait — scroll down and apply filters now to uncover opportunities that match your ambitions.
New roles are posted every hour, and your next big break could be just one click away.
Pro tip: Bookmark this page, set your filters (you can even filter by benefits important to you) and subscribe to alerts — you'll stay ahead of the competition.
Search by benefits important to your life and future. Select one or more to
refine your search.
At OneMain, Loan Sales Specialists empower customers by listening to their needs and providing access to friendly, fast, and affordable financing for life’s expenses. In this role, our team members thrive in a competitiv...
At OneMain, Loan Sales Specialists empower customers by listening to their needs and providing access to friendly, fast, and affordable financing for life’s expenses. In this role, our team members thrive in a competitiv...
Job Description & Requirements Gynecologic - Oncology Physician StartDate: ASAP Available Shifts: Regular 8 This facility is looking for a Gynecologic - Oncology Physician for locum tenens support as they look to fil...
Job Description & Requirements Gynecologic - Oncology Physician StartDate: ASAP Available Shifts: Regular 8 This facility is looking for a Gynecologic - Oncology Physician for locum tenens support as they look to fil...
Indiana University Health is seeking patient-centered, collaborative, and supportive Anesthesiologists to join our growing teams across Indiana, location(s) including: IU Health Methodist & University Hospitals in In...
Community Physician Network is seeking a board certified/board eligible Advanced Therapeutic Gastroenterologist who is motivated to make a difference in their community. Community Physician Network Gastroenterology Care...
Community Physician Network is seeking a board certified/board eligible Advanced Therapeutic Gastroenterologist who is motivated to make a difference in their community. Community Physician Network Gastroenterology Care...
Community Physician Network is seeking a board certified/board eligible Advanced Therapeutic Gastroenterologist who is motivated to make a difference in their community. Community Physician Network Gastroenterology Care...
Job Description & Requirements Vascular Surgery Physician StartDate: ASAP Pay Rate: $3104.00 - $3360.00 This facility is seeking a Vascular Physician for locum tenens support as they look to fill a current need. Deta...
Job Description & Requirements Gynecologic - Oncology Physician StartDate: ASAP Available Shifts: Regular 8 This facility is looking for a Gynecologic - Oncology Physician for locum tenens support as they look to fil...
Job Description & Requirements Gynecologic - Oncology Physician StartDate: ASAP Available Shifts: Regular 8 This facility is looking for a Gynecologic - Oncology Physician for locum tenens support as they look to fil...
Indiana University Health is seeking patient-centered, collaborative, and supportive Anesthesiologists to join our growing teams across Indiana, location(s) include: IU Health Methodist & University Hospitals in Indi...
Job Description & Requirements Gynecologic - Oncology Physician StartDate: ASAP Available Shifts: Regular 8 This facility is looking for a Gynecologic - Oncology Physician for locum tenens support as they look to fil...
Job Description & Requirements Gynecologic - Oncology Physician StartDate: ASAP Available Shifts: Regular 8 This facility is looking for a Gynecologic - Oncology Physician for locum tenens support as they look to fil...
Job Description & Requirements Gynecologic - Oncology Physician StartDate: ASAP Available Shifts: Regular 8 This facility is looking for a Gynecologic - Oncology Physician for locum tenens support as they look to fil...
';
}
/* ── CORE ────────────────────────────────────────────────────────── */
function injectStyles() {
if (document.getElementById('gzj-sc-styles')) return;
var style = document.createElement('style');
style.id = 'gzj-sc-styles';
style.textContent = CSS;
(document.head || document.body).appendChild(style);
}
function kv(line) {
var sep = line.indexOf(': ');
if (sep === -1) return null;
return [line.slice(0, sep).toLowerCase().trim(), line.slice(sep + 2).trim()];
}
function isDivider(line) {
return /^={5,}/.test(line);
}
function parseSections(lines) {
var sections = {};
var name = null;
var buf = [];
for (var i = 0; i < lines.length; i++) {
var line = lines[i].trim();
if (isDivider(line) && i + 2 < lines.length && isDivider(lines[i + 2].trim())) {
if (name) sections[name] = buf;
name = lines[i + 1].trim().toUpperCase();
buf = [];
i += 2;
} else if (name && line) {
buf.push(line);
}
}
if (name) sections[name] = buf;
return sections;
}
function parseText(container) {
/* Read one line per
element to avoid double-newline issues with
innerText across different browsers. Falls back to innerText split
if no
elements are found (e.g. plain text node). */
var paras = container.querySelectorAll('p');
var lines;
if (paras.length) {
lines = Array.prototype.map.call(paras, function (p) {
return p.textContent;
});
} else {
var raw = (typeof container.innerText !== 'undefined') ? container.innerText : container.textContent;
lines = raw.split('\n');
}
var secs = parseSections(lines);
var data = { stats: [], badges: [], industries: [], highlights: [], pros: [], cons: [] };
/* CITY INFO */
var groups = {};
(secs['CITY INFO'] || []).forEach(function (line) {
var p = kv(line);
if (!p) return;
var k = p[0], v = p[1];
if (k === 'city') data.city = v;
else if (k === 'state') data.state = v;
else if (k === 'page title') data.tagline = v;
else if (k === 'intro') data.intro = v;
else if (/^stat \d+$/.test(k)) {
var parts = v.split('|');
data.stats.push({ value: parts[0].trim(), label: (parts[1] || '').trim() });
}
else if (/^tag \d+$/.test(k)) data.badges.push(v);
});
/* INDUSTRIES */
groups = {};
(secs['INDUSTRIES'] || []).forEach(function (line) {
var p = kv(line);
if (!p) return;
var k = p[0], v = p[1];
if (k === 'section title') data.industries_heading = v;
else if (k === 'section intro') data.industries_intro = v;
else {
var m = k.match(/^industry (\d+) - (\w+)$/);
if (m) {
var n = m[1], prop = m[2];
groups[n] = groups[n] || {};
if (prop === 'icon') groups[n].icon = v;
else if (prop === 'title') groups[n].title = v;
else if (prop === 'salary') groups[n].salary = v;
else if (prop === 'description') groups[n].description = v;
}
}
});
Object.keys(groups).sort(function (a, b) { return a - b; }).forEach(function (n) { data.industries.push(groups[n]); });
/* CITY HIGHLIGHTS */
groups = {};
(secs['CITY HIGHLIGHTS'] || []).forEach(function (line) {
var p = kv(line);
if (!p) return;
var k = p[0], v = p[1];
if (k === 'section title') data.highlights_heading = v;
else {
var m = k.match(/^highlight (\d+) - (\w+)$/);
if (m) {
var n = m[1], prop = m[2];
groups[n] = groups[n] || {};
if (prop === 'icon') groups[n].icon = v;
else if (prop === 'title') groups[n].title = v;
else if (prop === 'text') groups[n].text = v;
}
}
});
Object.keys(groups).sort(function (a, b) { return a - b; }).forEach(function (n) { data.highlights.push(groups[n]); });
/* FIT CHECK */
(secs['FIT CHECK'] || []).forEach(function (line) {
var p = kv(line);
if (!p) return;
var k = p[0], v = p[1];
if (k === 'section title') data.fit_heading = v;
else if (/^good fit \d+$/.test(k)) data.pros.push(v);
else if (/^think twice \d+$/.test(k)) data.cons.push(v);
});
/* CALL TO ACTION */
(secs['CALL TO ACTION'] || []).forEach(function (line) {
var p = kv(line);
if (!p) return;
var k = p[0], v = p[1];
if (k === 'heading') data.cta_heading = v;
else if (k === 'subtext') data.cta_subtext = v;
else if (k === 'button text') data.cta_text = v;
else if (k === 'button url') data.cta_url = v;
});
return data;
}
function transform() {
var container = document.querySelector(TARGET);
if (!container) return false;
container.style.visibility = 'hidden';
var data = parseText(container);
if (!data.city) {
container.style.visibility = '';
return false;
}
injectStyles();
container.innerHTML = buildAll(data);
container.style.visibility = '';
return true;
}
function init() {
if (transform()) return;
var observer = new MutationObserver(function () {
if (transform()) observer.disconnect();
});
observer.observe(document.body, { childList: true, subtree: true });
setTimeout(function () { observer.disconnect(); }, 10000);
}
document.readyState === 'loading'
? document.addEventListener('DOMContentLoaded', init)
: init();
})();
Never Miss a New Opportunity
Subscribe and get the latest jobs directly to your inbox