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