MP Performance Scorecard
Performance grades for every MP across 12 metrics in 4 categories: Parliamentary Activity, Financial Stewardship, Independence, and Alignment & Access. Click any row to see the full metric breakdown.
Active allocation model: 343 MPs / 10 agents = 34 MPs per agent.
Underlying scorecard data is sampled through (latest of votes, speeches, expense updates, lobbying, donations, and pipeline cursor activity). Latest source refresh: openparliament_votes at Jul 1, 2026, 8:00 a.m. (success).
Primary datasets and refresh cadence are listed on Data sources. How we grade is below.
Scoring Methodology — 4 Categories, 12 Metrics
Party discipline uses voting-alignment data from mp_discipline_rateswhen present; otherwise a neutral default of 85% is used and is flagged as estimated in the row detail. Donation totals match Elections Canada recipient names to MPs using normalized “First Last” and “Last, First” forms.
Parliamentary Activity (25%)
- Engagement — Speech count, committees, vote participation ratio
- Attendance — Same participation ratio plus speaker bonus
- Legislative Productivity — Speeches, committee seats, chair/vice-chair bonus
Financial (25%)
- Transparency — Expense disclosure completeness
- Fiscal Responsibility — Spending vs party peers
- Expense Efficiency — Below-average spending bonus
Independence (25%)
- Accountability — Ethics record and contraventions
- Lobbying Risk — Lobbying exposure from top organizations
- Donor Concentration — Reliance on largest donors
Alignment & Access (25%)
- Responsiveness — Voting attendance + speech activity
- Party Discipline — Alignment rate with party
- Constituent Access — Accessibility to riding constituents
Full formula reference (how each 0–100 metric is computed)
Each metric is clamped to 0–100. Each category score is the simple average of its three metrics. The overall scoreis the average of the four categories (25% each). Letter grades map from the numeric score (e.g. A+ if ≥90, A if ≥85, …, F below 35); see scoreToGrade in compute-scorecard.ts.
Parliamentary Activity
- Engagement: round(
speechCount×1.5 + committeeCount×8 + participation×40 + wordBoost), clamp 0–100;wordBoost = min(12, round(wordCount/2500)); participation = MP’smp_votesrow count ÷ distinctvote_idglobally. - Attendance: round(
participation×80 + (speeches ? 20 : 0)), clamp 0–100. - Legislative productivity: round(
speechCount×2 + committeeCount×15 + (chair ? 20 : 0)), clamp 0–100.
Financial
- Transparency: if no expense rows, 40; else score from party expense rank (top 5% of party spenders → 95, top 10% → 90, top 25% → 80, top 50% → 70), with floors when totals exist.
- Fiscal responsibility:quartiles by party spend rank (top quarter → 90, next → 75, …); +10 if MP total below party average (capped at 100).
- Expense efficiency:
expenseTotal / (speechCount + round(participation×50)); lower CAD per “activity unit” scores higher (tiers at 5k / 10k / 20k / 50k).
Independence
- Accountability: start 100; −30 per ethics contravention row; −4 per block of 35 lobbying contacts above 50; small deductions for large donation totals received.
- Lobbying risk: start 100; tiered deductions from max contacts with one org and from total lobbying rows.
- Donor concentration: if no donations matched to the MP, 80; else penalties from largest-donor % and top-3-donor % thresholds, plus a small hit for very large totals.
Alignment & Access
- Responsiveness: round(
participation×80 + speechBonus), clamp;speechBonus = speeches>5 ? 20 : speeches×4. - Party discipline:
disciplineRate×100(frommp_discipline_rateswhen present; else default 0.85). - Constituent access: base 50; +speech terms; +15 if any committee; +15 if not a minister.
Showing 343 of 343 MPs
Grade Distribution
| # ▲ | MP Name | Party | Overall |
|---|---|---|---|
| 1 | Ziad Aboultaif | Conservative | A-83 |
| 2 | Gary Anandasangaree | Liberal | B+79 |
| 3 | Mel Arnold | Conservative | B+78 |
| 4 | Jaime Battiste | Liberal | B+78 |
| 5 | Kelly Block | Conservative | B+78 |
| 6 | John Brassard | Conservative | B+78 |
| 7 | Dan Albas | Conservative | B+77 |
| 8 | Shafqat Ali | Liberal | B+77 |
| 9 | Rebecca Alty | Liberal | B+77 |
| 10 | Terry Beech | Liberal | B+77 |
| 11 | Burton Bailey | Conservative | B+76 |
| 12 | Tony Baldinelli | Conservative | B+76 |
| 13 | Sima Acan | Liberal | B+76 |
| 14 | Anita Anand | Liberal | B+76 |
| 15 | Michael Barrett | Conservative | B+76 |
| 16 | Rachel Bendayan | Liberal | B+76 |
| 17 | James Bezan | Conservative | B+76 |
| 18 | Chris Bittle | Liberal | B+76 |
| 19 | Blaine Calkins | Conservative | B+76 |
| 20 | Ben Carr | Liberal | B+76 |
| 21 | Bardish Chagger | Liberal | B+76 |
| 22 | Sophie Chatel | Liberal | B+76 |
| 23 | Yvan Baker | Liberal | B+75 |
| 24 | Dean Allison | Conservative | B+75 |
| 25 | Carol Anstey | Conservative | B+75 |
| 26 | John Barlow | Conservative | B+75 |
| 27 | Luc Berthold | Conservative | B+75 |
| 28 | Kody Blois | Liberal | B+75 |
| 29 | Steven Bonk | Conservative | B+75 |
| 30 | Alexis Brunelle-Duceppe | Bloc Québécois | B+75 |
| 31 | Sean Casey | Liberal | B+75 |
| 32 | Parm Bains | Liberal | B74 |
| 33 | Xavier Barsalou-Duval | Bloc Québécois | B74 |
| 34 | Chak Au | Conservative | B74 |
| 35 | Roman Baber | Conservative | B74 |
| 36 | Kathy Borrelli | Conservative | B74 |
| 37 | Larry Brock | Conservative | B74 |
| 38 | Frank Caputo | Conservative | B74 |
| 39 | Adam Chambers | Conservative | B74 |
| 40 | Shaun Chen | Liberal | B74 |
| 41 | Madeleine Chenette | Liberal | B74 |
| 42 | Maggie Chi | Liberal | B74 |
| 43 | Leslie Church | Liberal | B74 |
| 44 | Fares Al Soud | Liberal | B73 |
| 45 | Scott Anderson | Conservative | B73 |
| 46 | Karim Bardeesy | Liberal | B73 |
| 47 | David Bexte | Conservative | B73 |
| 48 | Wade Chang | Liberal | B73 |
| 49 | Michael Chong | Conservative | B73 |
| 50 | Richard Bragdon | Conservative | B73 |
| 51 | Mario Beaulieu | Bloc Québécois | B72 |
| 52 | Buckley Belanger | Liberal | B72 |
| 53 | Scott Aitchison | Conservative | B72 |
| 54 | Maxime Blanchette-Joncas | Bloc Québécois | B72 |
| 55 | Patrick Bonin | Bloc Québécois | B71 |
| 56 | Rebecca Chartrand | Liberal | B71 |
| 57 | Alexandre Boulerice | Independent | B70 |
| 58 | Braedon Clark | Liberal | B70 |
| 59 | Michael Cooper | Conservative | B70 |
| 60 | Hedy Fry | Liberal | B70 |
| 61 | Terry Duguid | Liberal | B-68 |
| 62 | Rosemarie Falk | Conservative | B-68 |
| 63 | Martin Champoux | Bloc Québécois | B-66 |
| 64 | Mike Dawson | Conservative | B-66 |
| 65 | Claude Guay | Liberal | B-66 |
| 66 | Serge Cormier | Liberal | B-65 |
| 67 | Jean-Yves Duclos | Liberal | B-65 |
| 68 | Connie Cody | Conservative | C+64 |
| 69 | Anju Dhillon | Liberal | C+64 |
| 70 | Vincent Ho | Conservative | C+64 |
| 71 | Iqra Khalid | Liberal | C+64 |
| 72 | Mark Carney | Liberal | C+63 |
| 73 | Chris d'Entremont | Liberal | C+63 |
| 74 | Kerry Diotte | Conservative | C+63 |
| 75 | Philip Earle | Liberal | C+63 |
| 76 | Karina Gould | Liberal | C+63 |
| 77 | Angelo Iacono | Liberal | C+63 |
| 78 | Michael Kram | Conservative | C+63 |
| 79 | Linda Lapointe | Liberal | C+63 |
| 80 | Julie Dabrusin | Liberal | C+62 |
| 81 | Sandra Cobena | Conservative | C+62 |
| 82 | Jim Bélanger | Conservative | C+62 |
| 83 | Marianne Dandurand | Liberal | C+62 |
| 84 | Fred Davies | Conservative | C+62 |
| 85 | Gérard Deltell | Conservative | C+62 |
| 86 | Guillaume Deschênes-Thériault | Liberal | C+62 |
| 87 | Caroline Desrochers | Liberal | C+62 |
| 88 | Sukh Dhaliwal | Liberal | C+62 |
| 89 | Lena Metlege Diab | Liberal | C+62 |
| 90 | Ali Ehsassi | Liberal | C+62 |
| 91 | Mona Fortier | Liberal | C+62 |
| 92 | Stephen Fuhr | Liberal | C+62 |
| 93 | Leah Gazan | NDP | C+62 |
| 94 | Mark Gerretsen | Liberal | C+62 |
| 95 | Jason Groleau | Conservative | C+62 |
| 96 | Brendan Hanley | Liberal | C+62 |
| 97 | Lisa Hepfner | Liberal | C+62 |
| 98 | Alana Hirtle | Liberal | C+62 |
| 99 | Corey Hogan | Liberal | C+62 |
| 100 | Vince Gasparro | Liberal | C+62 |
| 101 | Stéphane Lauzon | Liberal | C+62 |
| 102 | Steeve Lavoie | Liberal | C+62 |
| 103 | Yves-François Blanchet | Bloc Québécois | C+61 |
| 104 | Élisabeth Brière | Liberal | C+61 |
| 105 | Paul Connors | Liberal | C+61 |
| 106 | Michael Coteau | Liberal | C+61 |
| 107 | Terry Dowdall | Conservative | C+61 |
| 108 | Doug Eyolfson | Liberal | C+61 |
| 109 | Peter Fonseca | Liberal | C+61 |
| 110 | Raquel Dancho | Conservative | C+61 |
| 111 | Sukhman Gill | Conservative | C+61 |
| 112 | Mandy Gull-Masty | Liberal | C+61 |
| 113 | Kurt Holman | Conservative | C+61 |
| 114 | Grant Jackson | Conservative | C+61 |
| 115 | Shelby Kramp-Neuman | Conservative | C+61 |
| 116 | Mike Lake | Conservative | C+61 |
| 117 | Eric Lefebvre | Conservative | C+61 |
| 118 | Heather McPherson | NDP | C+61 |
| 119 | Claude DeBellefeuille | Bloc Québécois | C+60 |
| 120 | John-Paul Danko | Liberal | C+60 |
| 121 | Scot Davidson | Conservative | C+60 |
| 122 | Don Davies | NDP | C+60 |
| 123 | Kelly DeRidder | Conservative | C+60 |
| 124 | Todd Doherty | Conservative | C+60 |
| 125 | Julie Dzerowicz | Liberal | C+60 |
| 126 | Fayçal El-Khoury | Liberal | C+60 |
| 127 | Bruce Fanjoy | Liberal | C+60 |
| 128 | Sean Fraser | Liberal | C+60 |
| 129 | Cheryl Gallant | Conservative | C+60 |
| 130 | Marc Dalton | Conservative | C+60 |
| 131 | Amanpreet Gill | Conservative | C+60 |
| 132 | Amarjeet Gill | Conservative | C+60 |
| 133 | Will Greaves | Liberal | C+60 |
| 134 | Aaron Gunn | Conservative | C+60 |
| 135 | Gabriel Hardy | Conservative | C+60 |
| 136 | Emma Harrison | Liberal | C+60 |
| 137 | Randy Hoback | Conservative | C+60 |
| 138 | Tim Hodgson | Liberal | C+60 |
| 139 | Helena Jaczek | Liberal | C+60 |
| 140 | Emmanuella Lambropoulos | Liberal | C+60 |
| 141 | Patricia Lattanzio | Liberal | C+60 |
| 142 | Ginette Lavack | Liberal | C+60 |
| 143 | Andrew Lawton | Conservative | C+60 |
| 144 | Natilien Joseph | Liberal | C+60 |
| 145 | Jennifer McKelvie | Liberal | C+60 |
| 146 | David McKenzie | Conservative | C+60 |
| 147 | David Myles | Liberal | C+60 |
| 148 | Tim Watchorn | Liberal | C+60 |
| 149 | Helena Konanz | Conservative | C59 |
| 150 | Nathaniel Erskine-Smith | Liberal | C59 |
| 151 | Darren Fisher | Liberal | C59 |
| 152 | Garnett Genuis | Conservative | C59 |
| 153 | Dalwinder Gill | Conservative | C59 |
| 154 | Marilène Gill | Bloc Québécois | C59 |
| 155 | Tamara Jansen | Conservative | C59 |
| 156 | Jamil Jivani | Conservative | C59 |
| 157 | Marie-Hélène Gaudreau | Bloc Québécois | C59 |
| 158 | Mike Kelloway | Liberal | C59 |
| 159 | Jenny Kwan | NDP | C59 |
| 160 | Philip Lawrence | Conservative | C59 |
| 161 | Dan Mazier | Conservative | C59 |
| 162 | Marc Miller | Liberal | C59 |
| 163 | Colin Reynolds | Conservative | C59 |
| 164 | Sonia Sidhu | Liberal | C59 |
| 165 | François-Philippe Champagne | Liberal | C59 |
| 166 | Matt Strauss | Conservative | C59 |
| 167 | Louis Villeneuve | Liberal | C59 |
| 168 | Steven MacKinnon | Liberal | C58 |
| 169 | Jean-Denis Garon | Bloc Québécois | C58 |
| 170 | Bernard Généreux | Conservative | C58 |
| 171 | Ernie Klassen | Liberal | C58 |
| 172 | Alexis Deschênes | Bloc Québécois | C58 |
| 173 | Eric Duncan | Conservative | C58 |
| 174 | Ted Falk | Conservative | C58 |
| 175 | Greg Fergus | Liberal | C58 |
| 176 | Iqwinder Gaheer | Liberal | C58 |
| 177 | Anna Gainey | Liberal | C58 |
| 178 | Harb Gill | Conservative | C58 |
| 179 | Laila Goodridge | Conservative | C58 |
| 180 | Wade Grant | Liberal | C58 |
| 181 | Michael Guglielmin | Conservative | C58 |
| 182 | Patty Hajdu | Liberal | C58 |
| 183 | Anthony Housefather | Liberal | C58 |
| 184 | Gord Johns | NDP | C58 |
| 185 | Joël Godin | Conservative | C58 |
| 186 | Jeff Kibble | Conservative | C58 |
| 187 | Annie Koutrakis | Liberal | C58 |
| 188 | Tamara Kronis | Conservative | C58 |
| 189 | Ned Kuruc | Conservative | C58 |
| 190 | Stephanie Kusie | Conservative | C58 |
| 191 | Carlos Leitão | Liberal | C58 |
| 192 | Branden Leslie | Conservative | C58 |
| 193 | Dane Lloyd | Conservative | C58 |
| 194 | Ben Lobb | Conservative | C58 |
| 195 | Wayne Long | Liberal | C58 |
| 196 | Tim Louis | Liberal | C58 |
| 197 | Arielle Kayabaga | Liberal | C58 |
| 198 | Gaétan Malette | Conservative | C58 |
| 199 | David McGuinty | Liberal | C58 |
| 200 | Greg McLean | Conservative | C58 |
| 201 | Stephanie McLean | Liberal | C58 |
| 202 | Eric Melillo | Conservative | C58 |
| 203 | Marie-Gabrielle Ménard | Liberal | C58 |
| 204 | Alexandra Mendès | Liberal | C58 |
| 205 | Marjorie Michel | Liberal | C58 |
| 206 | Shannon Miedema | Liberal | C58 |
| 207 | Giovanna Mingarelli | Liberal | C58 |
| 208 | Juanita Nathan | Liberal | C58 |
| 209 | Aslam Rana | Liberal | C58 |
| 210 | Gurbux Saini | Liberal | C58 |
| 211 | Jamie Schmale | Conservative | C58 |
| 212 | William Stevenson | Conservative | C58 |
| 213 | Salma Zahid | Liberal | C58 |
| 214 | Joanne Thompson | Liberal | C58 |
| 215 | Corey Tochor | Conservative | C58 |
| 216 | Mélanie Joly | Liberal | C57 |
| 217 | Jagsharan Singh Mahal | Conservative | C57 |
| 218 | Dave Epp | Conservative | C57 |
| 219 | Marilyn Gladu | Liberal | C57 |
| 220 | Steven Guilbeault | Liberal | C57 |
| 221 | Ahmed Hussen | Liberal | C57 |
| 222 | Lori Idlout | Liberal | C57 |
| 223 | Pat Kelly | Conservative | C57 |
| 224 | Rhonda Kirkland | Conservative | C57 |
| 225 | Tom Kmiec | Conservative | C57 |
| 226 | Marie-France Lalonde | Liberal | C57 |
| 227 | Kevin Lamoureux | Liberal | C57 |
| 228 | Melissa Lantsman | Conservative | C57 |
| 229 | Andréanne Larouche | Bloc Québécois | C57 |
| 230 | Dominic LeBlanc | Liberal | C57 |
| 231 | Sébastien Lemire | Bloc Québécois | C57 |
| 232 | Joël Lightbound | Liberal | C57 |
| 233 | James Maloney | Liberal | C57 |
| 234 | Elizabeth May | Green Party | C57 |
| 235 | Kelly McCauley | Conservative | C57 |
| 236 | Ron McKinnon | Liberal | C57 |
| 237 | Rob Moore | Conservative | C57 |
| 238 | Billy Morin | Conservative | C57 |
| 239 | Rob Morrison | Conservative | C57 |
| 240 | Glen Motz | Conservative | C57 |
| 241 | Dan Muys | Conservative | C57 |
| 242 | Yasir Naqvi | Liberal | C57 |
| 243 | Chris Malette | Liberal | C57 |
| 244 | Nathalie Provost | Liberal | C57 |
| 245 | Jacques Ramsay | Liberal | C57 |
| 246 | Brad Redekopp | Conservative | C57 |
| 247 | Blake Richards | Conservative | C57 |
| 248 | Gregor Robertson | Liberal | C57 |
| 249 | Pauline Rochefort | Liberal | C57 |
| 250 | Abdelhaq Sari | Liberal | C57 |
| 251 | Jake Sawatzky | Liberal | C57 |
| 252 | Francis Scarpaleggia | Liberal | C57 |
| 253 | Peter Schiefke | Liberal | C57 |
| 254 | Terry Sheehan | Liberal | C57 |
| 255 | Doug Shipley | Conservative | C57 |
| 256 | Clifford Small | Conservative | C57 |
| 257 | Eric St-Pierre | Liberal | C57 |
| 258 | Gabriel Ste-Marie | Bloc Québécois | C57 |
| 259 | Cathay Wagantall | Conservative | C57 |
| 260 | Patrick Weiler | Liberal | C57 |
| 261 | John Williamson | Conservative | C57 |
| 262 | Jean Yip | Liberal | C57 |
| 263 | Sameer Zuberi | Liberal | C57 |
| 264 | Mark Strahl | Conservative | C57 |
| 265 | Jenna Sudds | Liberal | C57 |
| 266 | Ryan Turnbull | Liberal | C57 |
| 267 | Tim Uppal | Conservative | C57 |
| 268 | Brad Vis | Conservative | C57 |
| 269 | Ginette Petitpas Taylor | Liberal | C56 |
| 270 | Louis Plamondon | Bloc Québécois | C56 |
| 271 | Peter Fragiskatos | Liberal | C56 |
| 272 | Jacques Gourde | Conservative | C56 |
| 273 | Arpan Khanna | Conservative | C56 |
| 274 | Chris Lewis | Conservative | C56 |
| 275 | Heath MacDonald | Liberal | C56 |
| 276 | Kent MacDonald | Liberal | C56 |
| 277 | Jacob Mantle | Conservative | C56 |
| 278 | Richard Martel | Conservative | C56 |
| 279 | Jill McKnight | Liberal | C56 |
| 280 | Costas Menegakis | Conservative | C56 |
| 281 | John Nater | Conservative | C56 |
| 282 | Chi Nguyen | Liberal | C56 |
| 283 | Dominique O'Rourke | Liberal | C56 |
| 284 | Eleanor Olszewski | Liberal | C56 |
| 285 | Tom Osborne | Liberal | C56 |
| 286 | Anna Roberts | Conservative | C56 |
| 287 | Zoe Royer | Liberal | C56 |
| 288 | Randeep Sarai | Liberal | C56 |
| 289 | Maninder Sidhu | Liberal | C56 |
| 290 | Mario Simard | Bloc Québécois | C56 |
| 291 | Amandeep Sodhi | Liberal | C56 |
| 292 | Evan Solomon | Liberal | C56 |
| 293 | Pierre Poilievre | Conservative | C56 |
| 294 | Tako Van Popta | Conservative | C56 |
| 295 | John Zerucelli | Liberal | C56 |
| 296 | Bob Zimmer | Conservative | C56 |
| 297 | Jeremy Patzer | Conservative | C56 |
| 298 | Dominique Vien | Conservative | C56 |
| 299 | Yves Perron | Bloc Québécois | C55 |
| 300 | Jasraj Hallan | Conservative | C55 |
| 301 | Viviane Lapointe | Liberal | C55 |
| 302 | Leslyn Lewis | Conservative | C55 |
| 303 | Michael Ma | Liberal | C55 |
| 304 | Taleeb Noormohamed | Liberal | C55 |
| 305 | Christine Normandin | Bloc Québécois | C55 |
| 306 | Bienvenu-Olivier Ntumba | Liberal | C55 |
| 307 | Marcus Powlowski | Liberal | C55 |
| 308 | Scott Reid | Conservative | C55 |
| 309 | Andrew Scheer | Conservative | C55 |
| 310 | Kyle Seeback | Conservative | C55 |
| 311 | Charles Sousa | Liberal | C55 |
| 312 | Warren Steinley | Conservative | C55 |
| 313 | Luc Thériault | Bloc Québécois | C55 |
| 314 | Adam van Koeverden | Liberal | C55 |
| 315 | Anita Vandenbeld | Liberal | C55 |
| 316 | Chris Warkentin | Conservative | C55 |
| 317 | Kevin Waugh | Conservative | C55 |
| 318 | Jonathan Wilkinson | Liberal | C55 |
| 319 | Shannon Stubbs | Conservative | C55 |
| 320 | Fraser Tolmie | Conservative | C55 |
| 321 | Arnold Viersen | Conservative | C55 |
| 322 | Jessica Fancy | Liberal | C-54 |
| 323 | Rhéal Éloi Fortin | Bloc Québécois | C-54 |
| 324 | Matt Jeneroux | Liberal | C-54 |
| 325 | Sherry Romanado | Liberal | C-54 |
| 326 | Tatiana Auguste | Liberal | C-53 |
| 327 | Doly Begum | Liberal | C-52 |
| 328 | Danielle Martin | Liberal | C-52 |
| 329 | Pierre Paul-Hus | Conservative | C-51 |
| 330 | Lianne Rood | Conservative | C-51 |
| 331 | Ellis Ross | Conservative | C-51 |
| 332 | Jonathan Rowe | Conservative | C-51 |
| 333 | Rechie Valdez | Liberal | C-51 |
| 334 | Robert Morrissey | Liberal | C-50 |
| 335 | Michelle Rempel Garner | Conservative | C-50 |
| 336 | Alex Ruff | Conservative | C-50 |
| 337 | Ruby Sahota | Liberal | C-50 |
| 338 | Simon-Pierre Savard-Tremblay | Bloc Québécois | C-50 |
| 339 | Judy A. Sgro | Liberal | C-50 |
| 340 | Rachael Thomas | Conservative | C-50 |
| 341 | Robert Oliphant | Liberal | D+49 |
| 342 | Shuvaloy Majumdar | Conservative | D+49 |
| 343 | Kristina Tesser Derksen | Liberal | D+49 |