U.S. House - PA-07 · Pennsylvania · 2026
General election · 2 on the November ballot · Incumbent running
Result
CalledFlip: R to DBob Brooks (D) won this race, defeating incumbent Ryan Mackenzie.
- Bob BrooksDemocraticWinnerno count in the source
Also on the ballot, no count in the source: Ryan Mackenzie (R).
- Called
- Called by Wikipedia editors, Nov 3, 10:30 PM ET (revision)
- Seat
- Changed party: held by Ryan Mackenzie (R)
- Last updated
- Nov 7, 8:53 AM ET
Called it: hit Our locked call before polls closed was D; the winner is D. See every locked call
Unofficial until the state certifies the result.
Before the election
Polls, ratings and the Vugol Tensor below were published before votes were counted. They are not results.
Model rating Leans Democratic (Tilting) on the Vugol Vector model, a snapshot of today, not a probability.
5 polls on file, none verified yet (pollster not verified or no public source), shown below, not averaged. Model inputs: 4 of 7, updated today. Page updated 2026-11-14. Sources · What is validated
ExperimentalNews attention 36/100, how much coverage the race gets, not who is winning. Updated 4 days ago. How it works
On the November ballot (2)
From reported primary results, checked 2026-11-14. Each state certifies its own ballot; see the source below.
Ran in the primary (3)
Lost a primary or runoff for this seat, not on the November ballot.
Other filers (1)
Registered with the FEC or listed in public records, but not on the November ballot as far as the results show.
Ballot source: https://en.wikipedia.org/w/index.php?title=2026_United_States_House_of_Representatives_elections_in_Pennsylvania&oldid=1385332593
Early vote in Pennsylvania
276,438 ballots cast statewide as of 2026-10-13 · registered Democrats 71.8%, Republicans 20.2%, unaffiliated 0.0%. Turnout by registration, not votes; never part of the rating. Full tracker →
Latest verified field polling
Verified = published by the pollster that conducted it, with a public source we link to.
No verified poll has been published for this race. The Vugol Vector call from our model is below, it is not a poll.
Polling average
5 polls on file for this race, none verified yet (pollster not verified or no public source), visible below, not averaged.
Campaign money (FEC)
Candidate committee totals for the cycle from the Federal Election Commission (public domain), as of each committee's latest report.
| Candidate | Raised | Spent | Cash on hand | Through |
|---|---|---|---|---|
| Ryan Edward Mackenzie | $5,296,664 | $4,329,911 | $1,069,993 | 2026-10-14 |
| Bob Brooks | $5,347,353 | $4,605,775 | $741,579 | 2026-10-14 |
| Carol Obando-Derstine | $593,313 | $592,545 | $768 | 2026-09-30 |
| Lamont McClure | $515,144 | $515,144 | $0 | 2026-09-30 |
| Mark Pinsley | $179,912 | $125,388 | $54,524 | 2026-04-29 |
| Ryan Crosswell | $1,872,528 | $1,859,887 | $12,641 | 2026-09-30 |
Ad spending (FEC)
What each campaign reported paying for ads, and what outside groups (super PACs, PACs and parties) reported spending for and against each candidate. Federal Election Commission filings, public domain.
| Candidate | Campaign's own ads | Outside groups for | Outside groups against |
|---|---|---|---|
| Ryan Edward Mackenzie | $11K | $881K | $9.6M |
| Bob Brooks | $758K | $4.6M | $2.3M |
| Lamont McClure | $0 | $1.1M | |
| Ryan Crosswell | $518K | $103K | $397K |
| Carol Obando-Derstine | $16K | ||
| Mark Pinsley | $2,878 |
Biggest outside spenders
- Ryan Edward Mackenzie. For: NO GOING BACK PAC INC. $295K, America PAC $271K, AMERICA FIRST AGRICULTURE ACTION INC. $239K. Against: HMP $7.7M, LCV Victory Fund $584K, J Street Action Fund $279K
- Bob Brooks. For: Stronger Together PA $1.7M, Progressive Turnout Project $515K, JOBS AND DEMOCRACY PAC $263K. Against: SAFETY & AFFORDABILITY PAC INC. $1.2M, NO GOING BACK PAC INC. $373K, America PAC $363K
- Lamont McClure. For: LEAD LEFT PAC $1.1M
- Ryan Crosswell. For: INTEGRITY PAC $103K. Against: LEAD LEFT PAC $312K, Renew Northeast PAC $85K
Outside groups: 24- and 48-hour independent expenditure reports for the 2026 primary and general, through 2026-11-09, each expenditure counted once after amendments; "ads" is TV, radio, digital and other media, and the rest is mail, phones, canvassing and similar. Campaign's own ads: TV, radio, digital, other media and ad production in the campaign committee's itemized payments, as the campaign described them, from the reports the FEC has processed (latest through 2026-09-30); newer reports appear as the FEC processes them. These are amounts committees reported paying, not airtime tracked by ad-monitoring firms, so very recent buys and future reservations may not show yet. Parser fec-ad-spend-1.0.0.
Results
Vote counts as reported by the state; transcribed from the Wikipedia election article (CC BY-SA 4.0), which cites the state’s official results.
Democratic primary
| Bob Brooks won | 28,232 | 41.0% |
| Ryan Crosswell | 14,660 | 21.3% |
| Lamont McClure | 13,736 | 19.9% |
| Carol Obando-Derstine | 12,237 | 17.8% |
Republican primary
| Ryan Mackenzie (incumbent) won | 35,048 | 100.0% |
Source: Wikipedia article revision (CC BY-SA 4.0), retrieved 2026-11-14 · parser wiki-race-1.0.0
Key dates
Official federal election dates for this state from the FEC. Registration deadlines and early voting: see the state election office.
- 2026-05-19, Primary election: U.S. House
- 2026-11-03, General election: U.S. House
Source: FEC election dates (public domain).
Primary and hypothetical polls (5)
Kept on file, never averaged into this race. Polls listed on the Wikipedia election article (CC BY-SA 4.0), each linked to that article revision and, where we know it, to the pollster's own site.
- Democratic primary · Tavern Research (partisan) · 2026-05-17–2026-05-17 · n=613 · Bob Brooks (D) 26%,Lamont McClure (D) 17%,Ryan Crosswell (D) 16%,Carol Obando- Derstine (D) 8% · release
- Democratic primary · GBAO (partisan) · 2026-04-16–2026-04-19 · n=400 · Bob Brooks (D) 24%,Lamont McClure (D) 17%,Carol Obando- Derstine (D) 12%,Ryan Crosswell (D) 9% · release
- Democratic primary · GBAO (partisan) · 2026-02-25–2026-03-01 · n=500 · Lamont McClure (D) 19%,Bob Brooks (D) 13%,Carol Obando- Derstine (D) 13%,Ryan Crosswell (D) 8% · release
- Democratic primary · Change Research (partisan) · 2025-12-16–2025-12-19 · n=892 · Lamont McClure (D) 17%,Bob Brooks (D) 11%,Carol Obando- Derstine (D) 10%,Ryan Crosswell (D) 5% · pollster's site · release
- Democratic primary · Public Policy Polling (partisan) · 2025-07-29–2025-07-30 · n=518 · Lamont McClure (D) 23%,Carol Obando- Derstine (D) 7%,Bob Brooks (D) 3%,Ryan Crosswell (D) 3% · release
In the news
- Jeffries and Schumer have plenty of critics – but no challengers: From the Politics Desk
- All the Republican House members ousted from Congress
- Rating changes: 30 races shift toward Democrats
- All the House districts that flipped in the midterm elections
- An hour-by-hour guide to watching the 2026 midterms, and when we’ll know who controls Congress
- At the Races: Seeing red in Minnesota?
- The biggest races Democrats won in the midterms
- Shapiro favors minimum wage hike over more progressive items if Democrats sweep Pennsylvania midterms
- Democrat bets on anti-corruption pitch in Pennsylvania swing district
- Childcare costs weigh on some voters before the midterm elections
Headlines from outlets across the political spectrum, linked to the publisher. Vugol.me doesn’t write or endorse them. How we choose them · All election news
LabVugol Vector & Vugol Attention
Vugol Attention 36 Vugol Vector D · Tilting
Vugol Me model signals, not polls. Verified polling is in the Polls section above.
Vugol Me Attention (attention intensity)
Vugol Attention intensity index 0–100 · not a poll · normalized nightly
Vugol Vector
Proprietary ensemble model · a call, not a probability · model confidence: medium
The breakdown of this call (the model's multi-signal input matrix, input by input) is on Ultra Pro plans.
Vugol Tensor
How far this call can miss · a range, not a prediction · no verified poll here, so the range is wider and untested
Centre D+4.9. Four times in five the result lands between D+14.3 and R+4.5; nine in ten between D+17.0 and R+7.2. Chance the Democrat finishes ahead: 75%.
Polls have missed by about four points in a typical race and they miss together. How Tensor works →
Desk data: daily telemetry
Per-source daily series, CSV export and the Vugol Vector breakdown · paid plans
Sources
- Roster, official filings; fundraising from FEC datapoints where on file (https://api.open.fec.gov/).
- Vugol Attention inputs, Wikipedia pageviews (https://wikimedia.org/api/rest_v1/) and GDELT news volume and tone (https://www.gdeltproject.org/).
- Polls and results, individual polls and primary results listed on the Wikipedia election article (CC BY-SA 4.0), each poll linked to the pollster's release; money and election dates from the FEC (public domain). How rows are checked.
- Models attention-1.0.0 · vector-1.1.0 · attention inputs SHA-256 838d18dcc964 · methodology · license CC BY 4.0 (data license).
Vugol Vector band: D · Tilting. Have a say in the Vugol race poll; it is open to signed-in voters and never feeds these numbers.
The four Vugol signals, side by side
They answer different questions and are kept apart. Full method: Methodology.
- Vugol Vector
- Our call for every race if today’s polls hold. A snapshot, not a win probability or a vote share.
- Vugol Tensor
- How sure we are: ranges and chamber-control odds around the Vector, built from past polling error. An experiment about uncertainty, not a better guess.
- Vugol Attention
- How much news and online noise a race gets, 0 to 100. It measures noise, not support: a high score says nothing about who is ahead.
- Vugol Pulse
- Our daily thumbs-up or thumbs-down question for readers. Anyone can answer, so it describes our readers, not the public. It is not a vote and never enters a poll average or any other signal.


