Pennsylvania 7th District
Bob Brooks (challenger) (D) vs Ryan Mackenzie (incumbent) (R) · messaging analysis as of 2026-10-28
Steady ~5-pt lead; Brooks's own ads now drawing fact-check fire
Why this race matters
Lean D
decisive seat for control
4 ratings
Catalyst forecast v2.2, as of 2026-10-30. Tipping-point share = share of simulations in which this race supplies the decisive seat. Rater consensus from published ratings. Methodology and sources.
Model refresh (Catalyst v2.2, viz_data.json generated 2026-10-29, ANALYST): Dem win 78.9%, band Lean D, poll margin D+4.3 across 4 polls, tipping share 2.7%. Supersedes any earlier model line below. ANALYST
FEC: Brooks, Bob (H6PA07188): receipts $5.35M, cash on hand $0.74M (through 2026-10-14); outside spending for $2.61M / against $2.63M. 48-hour notices since 10/15: 7 filings, $0.11M itemized. SOURCED
FEC: Mackenzie, Ryan Edward (H8PA15195): receipts $5.30M, cash on hand $1.07M (through 2026-10-14); outside spending for $0.00M / against $0.60M. 48-hour notices since 10/15: 5 filings, $0.09M itemized. SOURCED
Where it stands
Cease-and-desist (VERIFIED, snippets): Mackenzie's lawyer calls a Brooks ad, which says he opposed mental-health coverage for first responders as a state lawmaker, "defamatory and provably false" (https://www.inquirer.com/politics/pennsylvania/ryan-mackenzie-bob-brooks-cease-and-desist-20261027.html, 10-28). The campaign says Mackenzie voted for the bill when it passed the House in 2024; Brooks stands by the ad (https://www.mcall.com/2026/10/27/ryan-mackenzies-campaign-issues-cease-and-desist-over-bob-brooks-mental-health-bill-campaign-ad-brooks-stands-by-ad-claims/, 10-27). The state roll call (checked 2026-10-29) shows he voted YEA on final passage; see What changed.
Morning Call ad watch (10-28, VERIFIED headline and snippet): the anti-Mackenzie energy-costs ad "needs more context, could be misleading" (https://www.mcall.com/2026/10/28/ad-watch-anti-ryan-mackenzie-ad-that-blames-him-for-rising-energy-costs-needs-additional-context-could-be-misleading/).
Earlier (10-27 file, still headline-only): the ad watch called the anti-Brooks tips/overtime "garbage" ad misleading. Brooks withdrew from the only debate. His ex-wife disputes an ad's portrayal of their marriage.
Money: FEC 429.
Risks to the lead
- Credibility of Brooks's own ads. One is under legal threat, another is flagged by the ad watch.
- "Ducked the debate."
- The volume of personal attack ads.
What's working
A stable lead in three independent polls.
Independent debunks of the anti-Brooks ads.
Top 5 recommendations
Pull or recut the mental-health ad. The PA House roll call shows Mackenzie voted YEA on final passage of SB 365 (Oct 23, 2024), so the ad's claim conflicts with the record.
Recut the energy ad to address the ad watch's context concerns.
Stop the debunk-versus-debunk exchange. Close on economic contrasts using verified votes only.
Use his ex-wife's statement only with her consent, quoted exactly.
Turnout in Lehigh and Northampton. This is a judgment call.
Evidence & sources
Claims table (12 claims) — tap to expand
| # | Claim | Source | Date | Status |
|---|---|---|---|---|
| 1 | Model 78.9% / Lean D / D+4.3 | forecast-meta/site/viz_data.json | 2026-10-29 | VERIFIED |
| 2 | RedBox +4.7 (brief) | viz_data shows +5.08 | 2026-10-23 | CORRECTED |
| 3 | Cease-and-desist: "defamatory and provably false" | https://www.inquirer.com/politics/pennsylvania/ryan-mackenzie-bob-brooks-cease-and-desist-20261027.html | 2026-10-28 | VERIFIED (snippet) |
| 4 | Campaign: he voted for the bill in 2024; Brooks stands by the ad | https://www.mcall.com/2026/10/27/ryan-mackenzies-campaign-issues-cease-and-desist-over-bob-brooks-mental-health-bill-campaign-ad-brooks-stands-by-ad-claims/ | 2026-10-27 | VERIFIED (that each side says this) |
| 5 | Energy ad "could be misleading" | https://www.mcall.com/2026/10/28/ad-watch-anti-ryan-mackenzie-ad-that-blames-him-for-rising-energy-costs-needs-additional-context-could-be-misleading/ | 2026-10-28 | VERIFIED (headline and snippet) |
| 6 | Mackenzie's actual vote on the bill | PA House roll call | 2024 | UNVERIFIED |
| 7 | Tips/overtime ad misleading | Morning Call headline | 2026-10-27 | UNVERIFIED |
| 8 | Brooks pulled out of the debate | LehighValleyLive headline | 2026-10-19 | UNVERIFIED |
| 9 | Ex-wife disputes the ad | Armchair LV headline | 2026-10-26 | UNVERIFIED |
| F-H6PA07188 | Brooks, Bob (H6PA07188): receipts $5.35M, cash on hand $0.74M (through 2026-10-14); outside spending for $2.61M / against $2.63M. 48-hour notices since 10/15: 7 filings, $0.11M itemized. | https://www.fec.gov/data/candidate/H6PA07188/ ; IE: https://api.open.fec.gov/v1/schedules/schedule_e/by_candidate/?candidate_id=H6PA07188&cycle=2026 ; 48h: https://www.fec.gov/data/filings/?committee_id=C00917096&form_type=F6 | pulled 2026-10-28 | VERIFIED (FEC API) |
| F-H8PA15195 | Mackenzie, Ryan Edward (H8PA15195): receipts $5.30M, cash on hand $1.07M (through 2026-10-14); outside spending for $0.00M / against $0.60M. 48-hour notices since 10/15: 5 filings, $0.09M itemized. | https://www.fec.gov/data/candidate/H8PA15195/ ; IE: https://api.open.fec.gov/v1/schedules/schedule_e/by_candidate/?candidate_id=H8PA15195&cycle=2026 ; 48h: https://www.fec.gov/data/filings/?committee_id=C00846501&form_type=F6 | pulled 2026-10-28 | VERIFIED (FEC API) |
| Mackenzie's 2024 PA House vote on first-responder mental-health coverage | bill number not identified; legis.state.pa.us roll calls not pulled this pass | 2026-10-28 | UNVERIFIED: keep the Brooks ad line off air |
Tally: 4 VERIFIED, 1 CORRECTED, 4 UNVERIFIED.
What changed since 10-27
Energy ad, confirmed: The Morning Call's verdict says the anti-Mackenzie energy-costs ad "needs additional context and could be misleading" (10-28). https://www.mcall.com/2026/10/28/ad-watch-anti-ryan-mackenzie-ad-that-blames-him-for-rising-energy-costs-needs-additional-context-could-be-misleading/ (fetched 2026-10-29)
Mental-health ad, CORRECTED and unsafe: on Oct 23, 2024, Rep. Ryan Mackenzie voted YEA on final House passage of SB 365 (PN 1944), the Workers' Compensation PTSI amendments for first responders. It passed 201–1. https://www.palegis.us/house/roll-calls/summary?sessYr=2023&sessInd=0&rcNum=1614 (fetched 2026-10-29). An ad saying he opposed mental-health coverage for first responders conflicts with this roll call.
RedBox corrected to +5.08.
The Mackenzie cease-and-desist over the mental-health ad, and a new ad watch flagging the Democratic energy ad.
Gaps
FEC; Mackenzie's congressional roll calls; ad scripts.