**Investment Banking Managing Director - Medical Technology | **Medical Technology**
Lead investment banking activities for medical technology clients. Manage team, mentor analysts, and drive strategic transactions. Key skills: investment banking experience (10+ years), medical technology realm (peers, trends), strong financial modeling and valuation skills. Mergers & Acquisitions, financial advisory, and capital raising expertise required. Proven transaction execution experience for medical technology companies.
Full Job Description
// get job ID from URL query string (e.g. https://www.williamblair.com/careers/job-board-showjob.html?gh_jid=4175523007) // load job listing from https://boards-api.greenhouse.io/v1/boards/williamblair/jobs/{job_id} into an array // example job ID: 4175523007 // with fields: title, location, absolute_url, updated_at, content // metadata[0] holds AreasOfInterest // metadata[1] holds Location // metadata[2] holds Additional Locations // Put the title in first h1 with class hero-content-title // Put the content in jobcontent div // Put the locations in joblocation div // Put the areas of interest in jobareasofinterest div // If jobid is blank output error message "We're sorry but this job is no longer available." to jobcontent div and make jobtitle say "Job Not Found" window.addEventListener('DOMContentLoaded', async () => { // Get job ID from URL query string const urlParams = new URLSearchParams(window.location.search); const jobId = urlParams.get('gh_jid'); if (!jobId) { // If jobid is blank, output error message // document.querySelector('h1.hero-content-title').textContent = 'Job Not Found'; // document.getElementById('jobcontent').textContent = "We're sorry but this job is no longer available."; window.location.href = '/careers/job-search'; return; } else { // Load job listing const response = await fetch(`https://boards-api.greenhouse.io/v1/boards/williamblair/jobs/${jobId}`); const job = await response.json(); // Exit if Job Not Found if (job.status === 404 && job.error === 'Job not found') { // document.querySelector('h1.hero-content-title').textContent = 'We\'re sorry but this job is no longer available.'; window.location.href = '/careers/job-search'; return; } let areasOfInterest = []; if (job.metadata[0] && Array.isArray(job.metadata[0].value) && job.metadata[0].value[0] !== '' && job.metadata[0].value[0] !== undefined) { areasOfInterest.push(...job.metadata[0].value); } areasOfInterest = areasOfInterest.length > 0 ? areasOfInterest : ['No Specified Area of Interest']; // Sort the areas of interest alphabetically areasOfInterest = areasOfInterest.sort(); // add in job.requisition_id as an extra area of interest if (job.requisition_id !== '' && job.requisition_id !== undefined) { areasOfInterest.push(job.requisition_id); } let locations = []; if (typeof job.metadata[1].value === 'string' && job.metadata[1].value !== '' && job.metadata[1].value !== undefined) { locations.push(job.metadata[1].value); } if (Array.isArray(job.metadata[2].value) && job.metadata[2].value[0] !== '' && job.metadata[2].value[0] !== undefined) { locations.push(...job.metadata[2].value); } locations = locations.length > 0 ? locations : ['No Specified Location']; // Normalize "X - Remote" to just "Remote" locations = [...new Set(locations.map(loc => / - Remote$/i.test(loc) ? 'Remote' : loc))]; // Sort the locations alphabetically locations = locations.sort(); // Put the title in the first h1 with class hero-content-title document.querySelector('h1.hero-content-title').textContent = job.title; // Create a temporary div let tempDiv = document.createElement('div'); // Set the innerHTML of the temp div to the escaped HTML string tempDiv.innerHTML = job.content; // Get the unescaped HTML string let unescapedHTML = tempDiv.textContent; // Put the unescaped content in the jobcontent div document.getElementById('jobcontent').innerHTML = unescapedHTML; // Put the locations in hero-content-type p document.getElementById('joblocation').textContent = locations.flat().join(' | '); // Put the areas of interest in hero-content-type document.getElementById('jobareasofinterest').textContent = areasOfInterest.flat().join(' | '); // Add "Job Description" header in and H3 after the content-intro div that comes back inside jobcontent, but only if content-intro div exists if (document.querySelector('.content-intro')) { let jobDescriptionHeader = document.createElement('h3'); jobDescriptionHeader.textContent = 'Job Description'; document.querySelector('.content-intro').insertAdjacentElement('afterend', jobDescriptionHeader); } // Add the correct fields to these elements too: //
//
//
document.getElementById('applyAreasOfInterest').textContent = areasOfInterest.flat().join(' | '); document.getElementById('applyTitle').textContent = job.title; document.getElementById('applyLocations').textContent = locations.flat().join(' | '); } });
Apply now View all open jobs