Seattle's 2027-2028 proposed budget adds up on paper. But once you get past the headline number, the city gets there largely by using the JumpStart payroll tax for expenses outside the role it was created to fill.

JumpStart was created in 2020 to pay for affordable housing, equitable development, the Green New Deal, and recovery for small firms. The City later changed the fund to allow more leeway, including direct General Fund transfers, but this proposal pushes that leeway further than any earlier version of JumpStart. The budget sends $183 million from JumpStart directly into the General Fund, shifts another $65 million from the General Fund back into JumpStart for homelessness services, and moves several million more in General Fund and property-tax costs onto the fund through smaller line items. All told, about 55% of JumpStart now pays for costs beyond its original four purposes, up from roughly 49% in this year's budget. Funding that actually reaches housing, equitable development, the Green New Deal, and small firms falls by about $14 million even though the fund itself grows by $25 million.

The shelter numbers tell much the same story. The budget and the mayor's own shelter action plan, released only weeks apart, both describe "960 new or accelerated units of shelter" funded partly with new money and partly with money already in the system. Only two line items in the budget add new shelter funding: $18.3 million in new money and $4.9 million freed up from shelters that are closing. That comes to $23.2 million. The budget describes the remaining $13.8 million only as "existing resources," without saying where it comes from. The two documents also diverge on key details: the shelter plan counts all 960 beds starting from 2026, including 405 added this year, while the budget says all 960 arrive "in 2027."

JumpStart's cash cushion is also thinner than the fund's total size suggests. Affordable-housing awards are reimbursed over several years as projects are built, so the fund has historically carried a large pool of money already promised to projects. At the start of this year, the fund held $373.7 million, with about $303 million of that already committed to prior approvals. Next year, JumpStart is projected to spend $42.8 million more than it brings in, using that balance to cover the shortfall. By 2028, JumpStart's uncommitted balance is projected to drop to about $1.6 million - before the budget begins pre-committing future years' JumpStart revenue to housing projects awarded today but built later.

2029 is when several of these pressures hit together. The state extended sales tax to a range of professional and digital services in 2025, helping push Seattle's own sales-tax revenue up by more than 21% this year - but the legislature's 2026 "millionaire's tax" bill pulls back part of that same revenue starting in 2029, and the budget never estimates the hit to the General Fund. That same year, the city's plan to shift homelessness costs back onto the General Fund takes effect, and JumpStart needs a single-year cut to its original four purposes just to remain balanced.

The widely cited "128 positions eliminated" figure is softer than it sounds, too: about 36 of those were already unfunded or eliminated in earlier budgets, leaving the real cuts closer to 90. A third of those are permit staff at the Seattle Department of Construction and Inspections, tied to falling permit-fee revenue, with seven actual layoffs among them. On the public-safety side, the budget cuts 28 civilian SPD positions - including crisis responders and 911 call-takers, who keep their job authorization even as their funding disappears - while funding 66 additional sworn officers.

None of this means the budget fails to pencil out. It means the city gets there by asking JumpStart to absorb far more than its backers envisioned in 2020, by relying on shelter figures that do not fully line up with the mayor's own public plan, and by leaving a 2029 squeeze with no real explanation for how the city will cover it. The page numbers are all in the budget document itself, for readers who want to verify the math before next year's version shows up.