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 Aug 17, 2026, 8:01 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-82 |
| 2 | Gary Anandasangaree | Liberal | B+78 |
| 3 | Mel Arnold | Conservative | B+78 |
| 4 | Kelly Block | Conservative | B+78 |
| 5 | John Brassard | Conservative | B+78 |
| 6 | Dan Albas | Conservative | B+77 |
| 7 | Shafqat Ali | Liberal | B+77 |
| 8 | Rebecca Alty | Liberal | B+77 |
| 9 | Jaime Battiste | Liberal | B+77 |
| 10 | Terry Beech | Liberal | B+77 |
| 11 | Burton Bailey | Conservative | B+76 |
| 12 | Anita Anand | Liberal | B+76 |
| 13 | Michael Barrett | Conservative | B+76 |
| 14 | Rachel Bendayan | Liberal | B+76 |
| 15 | James Bezan | Conservative | B+76 |
| 16 | Chris Bittle | Liberal | B+76 |
| 17 | Blaine Calkins | Conservative | B+76 |
| 18 | Ben Carr | Liberal | B+76 |
| 19 | Bardish Chagger | Liberal | B+76 |
| 20 | Sophie Chatel | Liberal | B+76 |
| 21 | Tony Baldinelli | Conservative | B+75 |
| 22 | Sima Acan | Liberal | B+75 |
| 23 | Dean Allison | Conservative | B+75 |
| 24 | Carol Anstey | Conservative | B+75 |
| 25 | John Barlow | Conservative | B+75 |
| 26 | Luc Berthold | Conservative | B+75 |
| 27 | Steven Bonk | Conservative | B+75 |
| 28 | Alexis Brunelle-Duceppe | Bloc Québécois | B+75 |
| 29 | Sean Casey | Liberal | B+75 |
| 30 | Yvan Baker | Liberal | B74 |
| 31 | Chak Au | Conservative | B74 |
| 32 | Roman Baber | Conservative | B74 |
| 33 | Kody Blois | Liberal | B74 |
| 34 | Larry Brock | Conservative | B74 |
| 35 | Adam Chambers | Conservative | B74 |
| 36 | Shaun Chen | Liberal | B74 |
| 37 | Parm Bains | Liberal | B73 |
| 38 | Fares Al Soud | Liberal | B73 |
| 39 | Scott Anderson | Conservative | B73 |
| 40 | Karim Bardeesy | Liberal | B73 |
| 41 | David Bexte | Conservative | B73 |
| 42 | Kathy Borrelli | Conservative | B73 |
| 43 | Frank Caputo | Conservative | B73 |
| 44 | Wade Chang | Liberal | B73 |
| 45 | Madeleine Chenette | Liberal | B73 |
| 46 | Maggie Chi | Liberal | B73 |
| 47 | Michael Chong | Conservative | B73 |
| 48 | Leslie Church | Liberal | B73 |
| 49 | Buckley Belanger | Liberal | B72 |
| 50 | Scott Aitchison | Conservative | B72 |
| 51 | Xavier Barsalou-Duval | Bloc Québécois | B72 |
| 52 | Maxime Blanchette-Joncas | Bloc Québécois | B72 |
| 53 | Richard Bragdon | Conservative | B72 |
| 54 | Mario Beaulieu | Bloc Québécois | B71 |
| 55 | Patrick Bonin | Bloc Québécois | B71 |
| 56 | Rebecca Chartrand | Liberal | B71 |
| 57 | Alexandre Boulerice | Independent | B70 |
| 58 | Braedon Clark | Liberal | B70 |
| 59 | Hedy Fry | Liberal | B70 |
| 60 | Michael Cooper | Conservative | B-69 |
| 61 | Terry Duguid | Liberal | B-68 |
| 62 | Rosemarie Falk | Conservative | B-67 |
| 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 | Connie Cody | Conservative | C+64 |
| 68 | Jean-Yves Duclos | Liberal | C+64 |
| 69 | Vincent Ho | Conservative | C+64 |
| 70 | Chris d'Entremont | Liberal | C+63 |
| 71 | Anju Dhillon | Liberal | C+63 |
| 72 | Kerry Diotte | Conservative | C+63 |
| 73 | Philip Earle | Liberal | C+63 |
| 74 | Angelo Iacono | Liberal | C+63 |
| 75 | Michael Kram | Conservative | C+63 |
| 76 | Linda Lapointe | Liberal | C+63 |
| 77 | Julie Dabrusin | Liberal | C+62 |
| 78 | Mark Carney | Liberal | C+62 |
| 79 | Sandra Cobena | Conservative | C+62 |
| 80 | Jim Bélanger | Conservative | C+62 |
| 81 | Marianne Dandurand | Liberal | C+62 |
| 82 | Caroline Desrochers | Liberal | C+62 |
| 83 | Ali Ehsassi | Liberal | C+62 |
| 84 | Mona Fortier | Liberal | C+62 |
| 85 | Stephen Fuhr | Liberal | C+62 |
| 86 | Mark Gerretsen | Liberal | C+62 |
| 87 | Lisa Hepfner | Liberal | C+62 |
| 88 | Vince Gasparro | Liberal | C+62 |
| 89 | Iqra Khalid | Liberal | C+62 |
| 90 | Yves-François Blanchet | Bloc Québécois | C+61 |
| 91 | Élisabeth Brière | Liberal | C+61 |
| 92 | Don Davies | NDP | C+61 |
| 93 | Fred Davies | Conservative | C+61 |
| 94 | Gérard Deltell | Conservative | C+61 |
| 95 | Lena Metlege Diab | Liberal | C+61 |
| 96 | Terry Dowdall | Conservative | C+61 |
| 97 | Doug Eyolfson | Liberal | C+61 |
| 98 | Peter Fonseca | Liberal | C+61 |
| 99 | Leah Gazan | NDP | C+61 |
| 100 | Sukhman Gill | Conservative | C+61 |
| 101 | Karina Gould | Liberal | C+61 |
| 102 | Jason Groleau | Conservative | C+61 |
| 103 | Mandy Gull-Masty | Liberal | C+61 |
| 104 | Alana Hirtle | Liberal | C+61 |
| 105 | Corey Hogan | Liberal | C+61 |
| 106 | Kurt Holman | Conservative | C+61 |
| 107 | Steeve Lavoie | Liberal | C+61 |
| 108 | Eric Lefebvre | Conservative | C+61 |
| 109 | Heather McPherson | NDP | C+61 |
| 110 | Claude DeBellefeuille | Bloc Québécois | C+60 |
| 111 | Paul Connors | Liberal | C+60 |
| 112 | Michael Coteau | Liberal | C+60 |
| 113 | John-Paul Danko | Liberal | C+60 |
| 114 | Kelly DeRidder | Conservative | C+60 |
| 115 | Guillaume Deschênes-Thériault | Liberal | C+60 |
| 116 | Sukh Dhaliwal | Liberal | C+60 |
| 117 | Todd Doherty | Conservative | C+60 |
| 118 | Fayçal El-Khoury | Liberal | C+60 |
| 119 | Cheryl Gallant | Conservative | C+60 |
| 120 | Marc Dalton | Conservative | C+60 |
| 121 | Raquel Dancho | Conservative | C+60 |
| 122 | Amanpreet Gill | Conservative | C+60 |
| 123 | Amarjeet Gill | Conservative | C+60 |
| 124 | Will Greaves | Liberal | C+60 |
| 125 | Aaron Gunn | Conservative | C+60 |
| 126 | Brendan Hanley | Liberal | C+60 |
| 127 | Gabriel Hardy | Conservative | C+60 |
| 128 | Emma Harrison | Liberal | C+60 |
| 129 | Randy Hoback | Conservative | C+60 |
| 130 | Tim Hodgson | Liberal | C+60 |
| 131 | Helena Jaczek | Liberal | C+60 |
| 132 | Shelby Kramp-Neuman | Conservative | C+60 |
| 133 | Mike Lake | Conservative | C+60 |
| 134 | Emmanuella Lambropoulos | Liberal | C+60 |
| 135 | Stéphane Lauzon | Liberal | C+60 |
| 136 | Ginette Lavack | Liberal | C+60 |
| 137 | Andrew Lawton | Conservative | C+60 |
| 138 | Natilien Joseph | Liberal | C+60 |
| 139 | Jennifer McKelvie | Liberal | C+60 |
| 140 | David McKenzie | Conservative | C+60 |
| 141 | David Myles | Liberal | C+60 |
| 142 | Tim Watchorn | Liberal | C+60 |
| 143 | Scot Davidson | Conservative | C59 |
| 144 | Nathaniel Erskine-Smith | Liberal | C59 |
| 145 | Bruce Fanjoy | Liberal | C59 |
| 146 | Darren Fisher | Liberal | C59 |
| 147 | Sean Fraser | Liberal | C59 |
| 148 | Garnett Genuis | Conservative | C59 |
| 149 | Dalwinder Gill | Conservative | C59 |
| 150 | Marilène Gill | Bloc Québécois | C59 |
| 151 | Grant Jackson | Conservative | C59 |
| 152 | Tamara Jansen | Conservative | C59 |
| 153 | Jamil Jivani | Conservative | C59 |
| 154 | Jenny Kwan | NDP | C59 |
| 155 | Colin Reynolds | Conservative | C59 |
| 156 | Sonia Sidhu | Liberal | C59 |
| 157 | François-Philippe Champagne | Liberal | C59 |
| 158 | Matt Strauss | Conservative | C59 |
| 159 | Louis Villeneuve | Liberal | C59 |
| 160 | Steven MacKinnon | Liberal | C58 |
| 161 | Helena Konanz | Conservative | C58 |
| 162 | Bernard Généreux | Conservative | C58 |
| 163 | Ernie Klassen | Liberal | C58 |
| 164 | Eric Duncan | Conservative | C58 |
| 165 | Julie Dzerowicz | Liberal | C58 |
| 166 | Ted Falk | Conservative | C58 |
| 167 | Iqwinder Gaheer | Liberal | C58 |
| 168 | Anna Gainey | Liberal | C58 |
| 169 | Harb Gill | Conservative | C58 |
| 170 | Wade Grant | Liberal | C58 |
| 171 | Michael Guglielmin | Conservative | C58 |
| 172 | Patty Hajdu | Liberal | C58 |
| 173 | Anthony Housefather | Liberal | C58 |
| 174 | Gord Johns | NDP | C58 |
| 175 | Joël Godin | Conservative | C58 |
| 176 | Jeff Kibble | Conservative | C58 |
| 177 | Annie Koutrakis | Liberal | C58 |
| 178 | Tamara Kronis | Conservative | C58 |
| 179 | Ned Kuruc | Conservative | C58 |
| 180 | Stephanie Kusie | Conservative | C58 |
| 181 | Patricia Lattanzio | Liberal | C58 |
| 182 | Philip Lawrence | Conservative | C58 |
| 183 | Branden Leslie | Conservative | C58 |
| 184 | Dane Lloyd | Conservative | C58 |
| 185 | Ben Lobb | Conservative | C58 |
| 186 | Wayne Long | Liberal | C58 |
| 187 | Tim Louis | Liberal | C58 |
| 188 | Arielle Kayabaga | Liberal | C58 |
| 189 | Dan Mazier | Conservative | C58 |
| 190 | David McGuinty | Liberal | C58 |
| 191 | Stephanie McLean | Liberal | C58 |
| 192 | Alexandra Mendès | Liberal | C58 |
| 193 | Marjorie Michel | Liberal | C58 |
| 194 | Marc Miller | Liberal | C58 |
| 195 | Gurbux Saini | Liberal | C58 |
| 196 | Jamie Schmale | Conservative | C58 |
| 197 | William Stevenson | Conservative | C58 |
| 198 | Salma Zahid | Liberal | C58 |
| 199 | Mélanie Joly | Liberal | C57 |
| 200 | Alexis Deschênes | Bloc Québécois | C57 |
| 201 | Dave Epp | Conservative | C57 |
| 202 | Greg Fergus | Liberal | C57 |
| 203 | Marilyn Gladu | Liberal | C57 |
| 204 | Laila Goodridge | Conservative | C57 |
| 205 | Lori Idlout | Liberal | C57 |
| 206 | Marie-Hélène Gaudreau | Bloc Québécois | C57 |
| 207 | Mike Kelloway | Liberal | C57 |
| 208 | Rhonda Kirkland | Conservative | C57 |
| 209 | Marie-France Lalonde | Liberal | C57 |
| 210 | Kevin Lamoureux | Liberal | C57 |
| 211 | Carlos Leitão | Liberal | C57 |
| 212 | Sébastien Lemire | Bloc Québécois | C57 |
| 213 | Joël Lightbound | Liberal | C57 |
| 214 | Gaétan Malette | Conservative | C57 |
| 215 | James Maloney | Liberal | C57 |
| 216 | Elizabeth May | Green Party | C57 |
| 217 | Ron McKinnon | Liberal | C57 |
| 218 | Greg McLean | Conservative | C57 |
| 219 | Eric Melillo | Conservative | C57 |
| 220 | Marie-Gabrielle Ménard | Liberal | C57 |
| 221 | Shannon Miedema | Liberal | C57 |
| 222 | Giovanna Mingarelli | Liberal | C57 |
| 223 | Glen Motz | Conservative | C57 |
| 224 | Juanita Nathan | Liberal | C57 |
| 225 | Chris Malette | Liberal | C57 |
| 226 | Aslam Rana | Liberal | C57 |
| 227 | Brad Redekopp | Conservative | C57 |
| 228 | Blake Richards | Conservative | C57 |
| 229 | Pauline Rochefort | Liberal | C57 |
| 230 | Francis Scarpaleggia | Liberal | C57 |
| 231 | Terry Sheehan | Liberal | C57 |
| 232 | Clifford Small | Conservative | C57 |
| 233 | Mark Strahl | Conservative | C57 |
| 234 | Joanne Thompson | Liberal | C57 |
| 235 | Corey Tochor | Conservative | C57 |
| 236 | Ryan Turnbull | Liberal | C57 |
| 237 | Brad Vis | Conservative | C57 |
| 238 | Jean-Denis Garon | Bloc Québécois | C56 |
| 239 | Jagsharan Singh Mahal | Conservative | C56 |
| 240 | Peter Fragiskatos | Liberal | C56 |
| 241 | Jacques Gourde | Conservative | C56 |
| 242 | Steven Guilbeault | Liberal | C56 |
| 243 | Ahmed Hussen | Liberal | C56 |
| 244 | Pat Kelly | Conservative | C56 |
| 245 | Arpan Khanna | Conservative | C56 |
| 246 | Tom Kmiec | Conservative | C56 |
| 247 | Melissa Lantsman | Conservative | C56 |
| 248 | Andréanne Larouche | Bloc Québécois | C56 |
| 249 | Dominic LeBlanc | Liberal | C56 |
| 250 | Chris Lewis | Conservative | C56 |
| 251 | Heath MacDonald | Liberal | C56 |
| 252 | Kent MacDonald | Liberal | C56 |
| 253 | Jacob Mantle | Conservative | C56 |
| 254 | Richard Martel | Conservative | C56 |
| 255 | Kelly McCauley | Conservative | C56 |
| 256 | Jill McKnight | Liberal | C56 |
| 257 | Costas Menegakis | Conservative | C56 |
| 258 | Rob Moore | Conservative | C56 |
| 259 | Billy Morin | Conservative | C56 |
| 260 | Rob Morrison | Conservative | C56 |
| 261 | Dan Muys | Conservative | C56 |
| 262 | Yasir Naqvi | Liberal | C56 |
| 263 | John Nater | Conservative | C56 |
| 264 | Chi Nguyen | Liberal | C56 |
| 265 | Dominique O'Rourke | Liberal | C56 |
| 266 | Eleanor Olszewski | Liberal | C56 |
| 267 | Tom Osborne | Liberal | C56 |
| 268 | Nathalie Provost | Liberal | C56 |
| 269 | Jacques Ramsay | Liberal | C56 |
| 270 | Anna Roberts | Conservative | C56 |
| 271 | Gregor Robertson | Liberal | C56 |
| 272 | Zoe Royer | Liberal | C56 |
| 273 | Abdelhaq Sari | Liberal | C56 |
| 274 | Jake Sawatzky | Liberal | C56 |
| 275 | Peter Schiefke | Liberal | C56 |
| 276 | Kyle Seeback | Conservative | C56 |
| 277 | Doug Shipley | Conservative | C56 |
| 278 | Maninder Sidhu | Liberal | C56 |
| 279 | Mario Simard | Bloc Québécois | C56 |
| 280 | Amandeep Sodhi | Liberal | C56 |
| 281 | Evan Solomon | Liberal | C56 |
| 282 | Eric St-Pierre | Liberal | C56 |
| 283 | Gabriel Ste-Marie | Bloc Québécois | C56 |
| 284 | Tako Van Popta | Conservative | C56 |
| 285 | Cathay Wagantall | Conservative | C56 |
| 286 | Patrick Weiler | Liberal | C56 |
| 287 | John Williamson | Conservative | C56 |
| 288 | Jean Yip | Liberal | C56 |
| 289 | John Zerucelli | Liberal | C56 |
| 290 | Bob Zimmer | Conservative | C56 |
| 291 | Sameer Zuberi | Liberal | C56 |
| 292 | Jeremy Patzer | Conservative | C56 |
| 293 | Jenna Sudds | Liberal | C56 |
| 294 | Tim Uppal | Conservative | C56 |
| 295 | Dominique Vien | Conservative | C56 |
| 296 | Yves Perron | Bloc Québécois | C55 |
| 297 | Ginette Petitpas Taylor | Liberal | C55 |
| 298 | Louis Plamondon | Bloc Québécois | C55 |
| 299 | Jasraj Hallan | Conservative | C55 |
| 300 | Viviane Lapointe | Liberal | C55 |
| 301 | Leslyn Lewis | Conservative | C55 |
| 302 | Michael Ma | Liberal | C55 |
| 303 | Taleeb Noormohamed | Liberal | C55 |
| 304 | Christine Normandin | Bloc Québécois | C55 |
| 305 | Bienvenu-Olivier Ntumba | Liberal | C55 |
| 306 | Marcus Powlowski | Liberal | C55 |
| 307 | Scott Reid | Conservative | C55 |
| 308 | Ruby Sahota | Liberal | C55 |
| 309 | Andrew Scheer | Conservative | C55 |
| 310 | Charles Sousa | Liberal | C55 |
| 311 | Warren Steinley | Conservative | C55 |
| 312 | Pierre Poilievre | 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-52 |
| 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 | Randeep Sarai | Liberal | C-51 |
| 334 | Rechie Valdez | Liberal | C-51 |
| 335 | Robert Morrissey | Liberal | C-50 |
| 336 | Michelle Rempel Garner | Conservative | C-50 |
| 337 | Alex Ruff | Conservative | 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 |