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