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