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’s mp_votes row count ÷ distinct vote_id globally.
  • 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 (from mp_discipline_rates when 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

A+
A1
A-3
B+39
B17
B-9
C+97
C150
C-24
D+3
D
D-
F
#MP NamePartyOverall
1Ziad AboultaifConservative
A86
2Gary AnandasangareeLiberal
A-81
3Mel ArnoldConservative
A-81
4Sima AcanLiberal
A-80
5Dan AlbasConservative
B+79
6Shafqat AliLiberal
B+79
7Rebecca AltyLiberal
B+79
8John BarlowConservative
B+79
9John BrassardConservative
B+79
10Burton BaileyConservative
B+78
11Parm BainsLiberal
B+78
12Jaime BattisteLiberal
B+78
13Yvan BakerLiberal
B+77
14Tony BaldinelliConservative
B+77
15Scott AitchisonConservative
B+77
16Dean AllisonConservative
B+77
17Anita AnandLiberal
B+77
18Carol AnsteyConservative
B+77
19Michael BarrettConservative
B+77
20Rachel BendayanLiberal
B+77
21James BezanConservative
B+77
22Kelly BlockConservative
B+77
23Blaine CalkinsConservative
B+77
24Sophie ChatelLiberal
B+77
25Terry BeechLiberal
B+77
26Fares Al SoudLiberal
B+76
27Chak AuConservative
B+76
28Roman BaberConservative
B+76
29Luc BertholdConservative
B+76
30Chris BittleLiberal
B+76
31Kody BloisLiberal
B+76
32Steven BonkConservative
B+76
33Larry BrockConservative
B+76
34Ben CarrLiberal
B+76
35Sean CaseyLiberal
B+76
36Bardish ChaggerLiberal
B+76
37Adam ChambersConservative
B+76
38Karim BardeesyLiberal
B+75
39Xavier Barsalou-DuvalBloc Québécois
B+75
40Kathy BorrelliConservative
B+75
41Alexis Brunelle-DuceppeBloc Québécois
B+75
42Maggie ChiLiberal
B+75
43Richard BragdonConservative
B+75
44Buckley BelangerLiberal
B74
45Scott AndersonConservative
B74
46Wade ChangLiberal
B74
47Shaun ChenLiberal
B74
48Madeleine ChenetteLiberal
B74
49Michael ChongConservative
B74
50Leslie ChurchLiberal
B74
51Mario BeaulieuBloc Québécois
B73
52David BexteConservative
B73
53Maxime Blanchette-JoncasBloc Québécois
B73
54Frank CaputoConservative
B73
55Michael CooperConservative
B72
56Patrick BoninBloc Québécois
B71
57Alexandre BoulericeIndependent
B71
58Rebecca ChartrandLiberal
B71
59Braedon ClarkLiberal
B71
60Hedy FryLiberal
B71
61Martin ChampouxBloc Québécois
B-69
62Rosemarie FalkConservative
B-69
63Terry DuguidLiberal
B-68
64Claude GuayLiberal
B-67
65Sandra CobenaConservative
B-66
66Connie CodyConservative
B-66
67Mike DawsonConservative
B-66
68Serge CormierLiberal
B-65
69Vincent HoConservative
B-65
70Élisabeth BrièreLiberal
C+64
71Paul ConnorsLiberal
C+64
72Jim BélangerConservative
C+64
73Don DaviesNDP
C+64
74Jean-Yves DuclosLiberal
C+64
75Philip EarleLiberal
C+64
76Stephen FuhrLiberal
C+64
77Leah GazanNDP
C+64
78Mark GerretsenLiberal
C+64
79Tim HodgsonLiberal
C+64
80Iqra KhalidLiberal
C+64
81Chris d'EntremontLiberal
C+63
82John-Paul DankoLiberal
C+63
83Scot DavidsonConservative
C+63
84Anju DhillonLiberal
C+63
85Ali EhsassiLiberal
C+63
86Doug EyolfsonLiberal
C+63
87Mona FortierLiberal
C+63
88Cheryl GallantConservative
C+63
89Amarjeet GillConservative
C+63
90Karina GouldLiberal
C+63
91Jason GroleauConservative
C+63
92Gabriel HardyConservative
C+63
93Angelo IaconoLiberal
C+63
94Linda LapointeLiberal
C+63
95Julie DabrusinLiberal
C+62
96Yves-François BlanchetBloc Québécois
C+62
97Mark CarneyLiberal
C+62
98Marianne DandurandLiberal
C+62
99Fred DaviesConservative
C+62
100Gérard DeltellConservative
C+62
101Sukh DhaliwalLiberal
C+62
102Kerry DiotteConservative
C+62
103Sean FraserLiberal
C+62
104Marc DaltonConservative
C+62
105Amanpreet GillConservative
C+62
106Dalwinder GillConservative
C+62
107Sukhman GillConservative
C+62
108Wade GrantLiberal
C+62
109Will GreavesLiberal
C+62
110Brendan HanleyLiberal
C+62
111Emma HarrisonLiberal
C+62
112Lisa HepfnerLiberal
C+62
113Alana HirtleLiberal
C+62
114Randy HobackConservative
C+62
115Corey HoganLiberal
C+62
116Helena JaczekLiberal
C+62
117Vince GasparroLiberal
C+62
118Emmanuella LambropoulosLiberal
C+62
119Stéphane LauzonLiberal
C+62
120Eric LefebvreConservative
C+62
121Ernie KlassenLiberal
C+61
122Peter FonsecaLiberal
C+61
123Raquel DanchoConservative
C+61
124Garnett GenuisConservative
C+61
125Mandy Gull-MastyLiberal
C+61
126Aaron GunnConservative
C+61
127Kurt HolmanConservative
C+61
128Grant JacksonConservative
C+61
129Tamara JansenConservative
C+61
130Jamil JivaniConservative
C+61
131Michael KramConservative
C+61
132Ned KurucConservative
C+61
133Andrew LawtonConservative
C+61
134David McKenzieConservative
C+61
135François-Philippe ChampagneLiberal
C+61
136Jean-Denis GaronBloc Québécois
C+60
137Bernard GénéreuxConservative
C+60
138Michael CoteauLiberal
C+60
139Caroline DesrochersLiberal
C+60
140Lena Metlege DiabLiberal
C+60
141Todd DohertyConservative
C+60
142Julie DzerowiczLiberal
C+60
143Fayçal El-KhouryLiberal
C+60
144Nathaniel Erskine-SmithLiberal
C+60
145Iqwinder GaheerLiberal
C+60
146Anna GaineyLiberal
C+60
147Harb GillConservative
C+60
148Marilyn GladuLiberal
C+60
149Jacques GourdeConservative
C+60
150Michael GuglielminConservative
C+60
151Anthony HousefatherLiberal
C+60
152Gord JohnsNDP
C+60
153Marie-Hélène GaudreauBloc Québécois
C+60
154Joël GodinConservative
C+60
155Arpan KhannaConservative
C+60
156Jeff KibbleConservative
C+60
157Jenny KwanNDP
C+60
158Mike LakeConservative
C+60
159Patricia LattanzioLiberal
C+60
160Ginette LavackLiberal
C+60
161Steeve LavoieLiberal
C+60
162Natilien JosephLiberal
C+60
163Arielle KayabagaLiberal
C+60
164Jennifer McKelvieLiberal
C+60
165Heather McPhersonNDP
C+60
166Colin ReynoldsConservative
C+60
167Mélanie JolyLiberal
C59
168Terry DowdallConservative
C59
169Dave EppConservative
C59
170Bruce FanjoyLiberal
C59
171Greg FergusLiberal
C59
172Darren FisherLiberal
C59
173Peter FragiskatosLiberal
C59
174Marilène GillBloc Québécois
C59
175Laila GoodridgeConservative
C59
176Steven GuilbeaultLiberal
C59
177Ahmed HussenLiberal
C59
178Lori IdloutLiberal
C59
179Mike KellowayLiberal
C59
180Pat KellyConservative
C59
181Rhonda KirklandConservative
C59
182Shelby Kramp-NeumanConservative
C59
183Tamara KronisConservative
C59
184Marie-France LalondeLiberal
C59
185Kevin LamoureuxLiberal
C59
186Melissa LantsmanConservative
C59
187Viviane LapointeLiberal
C59
188Dan MazierConservative
C59
189David MylesLiberal
C59
190Gurbux SainiLiberal
C59
191Tim WatchornLiberal
C59
192Salma ZahidLiberal
C59
193Matt StraussConservative
C59
194Steven MacKinnonLiberal
C58
195Claude DeBellefeuilleBloc Québécois
C58
196Helena KonanzConservative
C58
197Kelly DeRidderConservative
C58
198Guillaume Deschênes-ThériaultLiberal
C58
199Eric DuncanConservative
C58
200Ted FalkConservative
C58
201Patty HajduLiberal
C58
202Annie KoutrakisLiberal
C58
203Stephanie KusieConservative
C58
204Branden LeslieConservative
C58
205Joël LightboundLiberal
C58
206Dane LloydConservative
C58
207Wayne LongLiberal
C58
208Tim LouisLiberal
C58
209David McGuintyLiberal
C58
210Ron McKinnonLiberal
C58
211Marjorie MichelLiberal
C58
212Marc MillerLiberal
C58
213Rob MooreConservative
C58
214Glen MotzConservative
C58
215Eleanor OlszewskiLiberal
C58
216Nathalie ProvostLiberal
C58
217Aslam RanaLiberal
C58
218Gregor RobertsonLiberal
C58
219Pauline RochefortLiberal
C58
220Peter SchiefkeLiberal
C58
221Sonia SidhuLiberal
C58
222Tako Van PoptaConservative
C58
223Louis VilleneuveLiberal
C58
224Andréanne LaroucheBloc Québécois
C57
225Philip LawrenceConservative
C57
226Carlos LeitãoLiberal
C57
227Sébastien LemireBloc Québécois
C57
228Ben LobbConservative
C57
229Gaétan MaletteConservative
C57
230James MaloneyLiberal
C57
231Jacob MantleConservative
C57
232Elizabeth MayGreen Party
C57
233Greg McLeanConservative
C57
234Eric MelilloConservative
C57
235Marie-Gabrielle MénardLiberal
C57
236Alexandra MendèsLiberal
C57
237Shannon MiedemaLiberal
C57
238Giovanna MingarelliLiberal
C57
239Billy MorinConservative
C57
240Rob MorrisonConservative
C57
241Dan MuysConservative
C57
242Chi NguyenLiberal
C57
243Dominique O'RourkeLiberal
C57
244Tom OsborneLiberal
C57
245Chris MaletteLiberal
C57
246Jacques RamsayLiberal
C57
247Lianne RoodConservative
C57
248Ellis RossConservative
C57
249Jonathan RoweConservative
C57
250Zoe RoyerLiberal
C57
251Randeep SaraiLiberal
C57
252Abdelhaq SariLiberal
C57
253Francis ScarpaleggiaLiberal
C57
254Jamie SchmaleConservative
C57
255Clifford SmallConservative
C57
256William StevensonConservative
C57
257Adam van KoeverdenLiberal
C57
258John ZerucelliLiberal
C57
259Mark StrahlConservative
C57
260Jenna SuddsLiberal
C57
261Rechie ValdezLiberal
C57
262Jagsharan Singh MahalConservative
C56
263Alexis DeschênesBloc Québécois
C56
264Matt JenerouxLiberal
C56
265Tom KmiecConservative
C56
266Dominic LeBlancLiberal
C56
267Chris LewisConservative
C56
268Heath MacDonaldLiberal
C56
269Kent MacDonaldLiberal
C56
270Richard MartelConservative
C56
271Kelly McCauleyConservative
C56
272Jill McKnightLiberal
C56
273Costas MenegakisConservative
C56
274Yasir NaqviLiberal
C56
275John NaterConservative
C56
276Juanita NathanLiberal
C56
277Bienvenu-Olivier NtumbaLiberal
C56
278Pierre Paul-HusConservative
C56
279Marcus PowlowskiLiberal
C56
280Brad RedekoppConservative
C56
281Scott ReidConservative
C56
282Blake RichardsConservative
C56
283Anna RobertsConservative
C56
284Alex RuffConservative
C56
285Simon-Pierre Savard-TremblayBloc Québécois
C56
286Jake SawatzkyLiberal
C56
287Kyle SeebackConservative
C56
288Terry SheehanLiberal
C56
289Maninder SidhuLiberal
C56
290Pierre PoilievreConservative
C56
291Anita VandenbeldLiberal
C56
292Patrick WeilerLiberal
C56
293John WilliamsonConservative
C56
294Jean YipLiberal
C56
295Jeremy PatzerConservative
C56
296Shannon StubbsConservative
C56
297Joanne ThompsonLiberal
C56
298Corey TochorConservative
C56
299Ryan TurnbullLiberal
C56
300Tim UppalConservative
C56
301Dominique VienConservative
C56
302Brad VisConservative
C56
303Yves PerronBloc Québécois
C55
304Ginette Petitpas TaylorLiberal
C55
305Louis PlamondonBloc Québécois
C55
306Jasraj HallanConservative
C55
307Leslyn LewisConservative
C55
308Taleeb NoormohamedLiberal
C55
309Christine NormandinBloc Québécois
C55
310Sherry RomanadoLiberal
C55
311Ruby SahotaLiberal
C55
312Andrew ScheerConservative
C55
313Mario SimardBloc Québécois
C55
314Luc ThériaultBloc Québécois
C55
315Fraser TolmieConservative
C55
316Arnold ViersenConservative
C55
317Jessica FancyLiberal
C-54
318Rhéal Éloi FortinBloc Québécois
C-54
319Michael MaLiberal
C-54
320Tatiana AugusteLiberal
C-53
321Doly BegumLiberal
C-53
322Danielle MartinLiberal
C-53
323Stephanie McLeanLiberal
C-51
324Doug ShipleyConservative
C-51
325Amandeep SodhiLiberal
C-51
326Evan SolomonLiberal
C-51
327Eric St-PierreLiberal
C-51
328Gabriel Ste-MarieBloc Québécois
C-51
329Cathay WagantallConservative
C-51
330Bob ZimmerConservative
C-51
331Sameer ZuberiLiberal
C-51
332Robert MorrisseyLiberal
C-50
333Michelle Rempel GarnerConservative
C-50
334Judy A. SgroLiberal
C-50
335Charles SousaLiberal
C-50
336Warren SteinleyConservative
C-50
337Chris WarkentinConservative
C-50
338Kevin WaughConservative
C-50
339Jonathan WilkinsonLiberal
C-50
340Rachael ThomasConservative
C-50
341Robert OliphantLiberal
D+49
342Shuvaloy MajumdarConservative
D+49
343Kristina Tesser DerksenLiberal
D+49