91³Ô¹ÏÍø

Watch CBS News

O'Connor administration ready to close $30 million to $40 million budget gap

Mayor Corey O'Connor's administration this week will begin taking a scalpel to Pittsburgh's finances as it tries to close a $30 million to $40 million budget gap. 

The new administration accuses the Gainey administration of raiding city trust funds to pay for some programs and departments while underfunding others. One of those is the newly renovated Oliver Bath House on the South Side. 

The city spent $8 million on the renovation of the Oliver Bath House, but the mayor's office says the prior administration didn't budget any money to run it in 2026. Now, the O'Connor administration says it needs to make tough choices to keep the city afloat.  

"Our team has put together a beautiful facility," Dan Gilman, O'Connor's chief of staff, said. "It's the anchor of the South Side neighborhood. We want it to be open as much as possible. That takes lifeguards, that take supervisors, that takes building maintenance, not accounted for in the budget."

Gilman said the absence of that funding is just one of the many surprises the new administration has uncovered in the budget that has been left to them, saying programs like it have been underfunded to the tune of $30 million to $40 million — with no money budgeted to fill those gaping holes. 

"It's time to be honest with the taxpayers about it," Gilman said. "The only way to fix your problem is when you first admit what the problem is."

The problem is falling revenue and rising costs. Federal COVID dollars have dried up, and Downtown property values are in free fall. It's all at a time when staffing shortages of police and paramedics have resulted in runaway overtime. The Gainey administration says it needed to dip into the city's rainy day fund and other city trust funds to try to keep up with those costs. But Gilman calls that a slippery slope to bankruptcy. 

"We can't raid trust funds in perpetuity," Gilman said. "They are all going to run out, whether that's the rainy day fund, the parks tax. These are not meant to be annual fixes. These are emergencies." 

And now, the city must take a scalpel to the budget to keep operations running and address the looming crisis. This week, it will petition the Pittsburgh City Council to reopen the budget and begin outlining a series of cuts to close the budget gap. These include not filling budgeted positions and canceling contracts, all while looking longer term to grow the city and bring in new tax dollars.  

"Our savings over the next five years are going to be very diligent about every single dollar that the taxpayer pays," Gilman said. 

But the Oliver Bath House will stay open as the city plans to muddle through the next year as it hopes to raise new revenue and live within its means. 

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=50747257b890e014813016b79ece0fb2'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });