Who votes with whom

Three ways to explore how council members vote together. All of them count only the 73 recorded votes that were not unanimous, from 42 meetings.

Voting Alliance Network

Councillors are connected based on how frequently they voted the same way on votes both attended. Thicker lines indicate stronger agreement, while colours represent groups identified through voting-pattern analysis. These groups reflect observed voting similarities, not necessarily political affiliations.

How this network is built

Lines and percentages come straight from the votes: of the 73 non-unanimous recorded votes, the share both people attended on which they voted the same way. Pairs who never voted together have no line, because that is unknown rather than 0%.

Positions: every known pair pulls toward a distance set by its agreement, including pairs below the slider, so moving the slider never rearranges the network. Layout starts from fixed positions, so it comes out the same on every visit.

Communities use the Louvain method on the full network, whatever the slider says. On average, any two members here agree 65% of the time, and with raw percentages those moderate links would blur everything into one group. So only agreement above that average counts as a link, and an unknown pair counts as no evidence either way. Modularity is 0.25, where 0 means no community structure, so these communities are real but overlapping.

How firm they are: on 300 random resamples of the votes, 3 communities came out 63% of the time. Each person's detail panel shows how often they stayed with their community. Bridging marks someone whose average agreement within their community is less than 10 points above their average with everyone else; that cutoff is a judgement call.

These communities can differ from the voting groups further down the page, which use a different method. Comparing the two shows which memberships are firm: people in the same group under both are the most consistent allies.

Agreement circle

The thicker the line, the larger the share of votes on which two council members voted the same way.

Mayor CamGuthrieMicheleRichardsonDominiqueO'RourkeErinCatonPhilAlltLindaBusuttilKatherineHauserLeanneCaronCathyDownerCarlyKlassenRodrigoGollerKen YeeChewDanGibsonChristineBillings
32%64%95%of votes in agreement

Select a name to see only their lines, or select a line for its count.

Agreed most

Leanne Caron & Katherine Hauser95% (20 of 21)
Katherine Hauser & Carly Klassen95% (20 of 21)
Cathy Downer & Katherine Hauser91% (20 of 22)
Cathy Downer & Carly Klassen91% (60 of 66)
Phil Allt & Linda Busuttil88% (60 of 68)

Agreed least

Erin Caton & Dan Gibson32% (21 of 65)
Christine Billings & Erin Caton35% (24 of 68)
Phil Allt & Christine Billings35% (23 of 65)
Linda Busuttil & Dan Gibson38% (24 of 64)
Phil Allt & Dan Gibson39% (24 of 62)

Voting groups

Each portrait is a council member. The closer two portraits are, the more often those two voted the same way. Hover over or select someone to see how often they agreed with each colleague, as a percentage of these votes that both attended. The groups agree with each other on only 55% of these votes.

Group AGroup BAlltBillingsBusuttilCaronCatonChewDownerGibsonGollerHauserKlassenGuthrieO'RourkeRichardson

Group A

Agree with each other on 80% of these votes. Dominique O'Rourke fits this group least firmly.

Phil Allt
Linda Busuttil
Erin Caton
Leanne Caron
Katherine Hauser
Cathy Downer
Carly Klassen
Dominique O'Rourke

Group B

Agree with each other on 76% of these votes.

Christine Billings
Ken Yee Chew
Dan Gibson
Michele Richardson
Mayor Cam Guthrie

Between the groups

About as close to one group as the other.

Rodrigo Goller
How the groups were found

Starting from how often each pair disagreed, multidimensional scaling placed everyone on this plane; two dimensions hold about 76% of the differences, so distances are close but not exact. Hierarchical clustering (average linkage) then formed the groups, and the silhouette score chose how many: 2 groups 0.44, 3 groups 0.42, 4 groups 0.33, 5 groups 0.33, where higher means better separated. Clustering used the full data, not the 2D positions.

To test this, we re-ran it on 1,000 random resamples of the 73 votes. 2 groups came out best in 72% of them, and members of a group stayed together 92% to 94% of the time. Rodrigo Goller is shown between them because their silhouette score is 0.03, below our 0.1 cutoff; in the resamples they land with Group A 51% of the time and B 38% of the time. Dominique O'Rourke is the loosest fit, with a silhouette of 0.29 (everyone else in a group is 0.34 or higher), and lands with Group A in 81% of resamples.

People who never voted together have no real distance, so theirs is estimated from how alike they are with everyone else. With 73 votes these are working patterns, not fixed blocs. Left and right on the map come from the maths and don't mean political left and right. Portraits with near-identical records are eased apart so each can be seen, so very small gaps mean nothing. Group names are arbitrary.

The numbers

Every pair, as a table

Percent of the votes both attended on which they agreed.

Mayor Cam GuthrieMichele RichardsonDominique O'RourkeErin CatonPhil AlltLinda BusuttilKatherine HauserLeanne CaronCathy DownerCarly KlassenRodrigo GollerKen Yee ChewDan GibsonChristine Billings
Mayor Cam Guthrie72614246487356726951756675
Michele Richardson72824854535962706862827275
Dominique O'Rourke618274727085828262805460
Erin Caton42487483837779706745443235
Phil Allt46547283888578716949473935
Linda Busuttil48537083888676757150493839
Katherine Hauser735977858695919550574164
Leanne Caron56628579787695858365614751
Cathy Downer72708270717591859170725565
Carly Klassen69688267697195839174765263
Rodrigo Goller51626245495050657074664659
Ken Yee Chew75828044474957617276668086
Dan Gibson66725432393841475552468079
Christine Billings75756035353964516563598679
The 73 votes counted
Jun 27, 2023Additional Motion
Jun 27, 2023Additional Motion
Jul 25, 2023Clause 2 as Amended
Jul 25, 2023Clause 3 of the Main Motion
Sep 26, 2023First amendment to main motion
Sep 26, 2023Main motion restated
Oct 24, 2023Amendment to the Motion
Oct 24, 2023Motion
Sep 24, 2024Mayor’s Announcements
Oct 29, 2024Main Motion as Amended
Oct 29, 2024Additional Motion
Oct 29, 2024Additional Motion
Oct 29, 2024Additional Motion
Nov 26, 2024Amendment
Dec 11, 2024Amendment
Dec 11, 2024Amendment
Dec 11, 2024Amendment
Mar 25, 2025Amendment to Main Motion
Mar 25, 2025Main Motion
Apr 23, 2025First Motion
Apr 23, 2025Second Motion
Oct 28, 2025Amendment to Main Motion
Oct 28, 2025Amendment to Main Motion
Dec 16, 2025By-laws
Jan 27, 2026Main Motion
Feb 24, 2026Third Motion
Mar 31, 2026Clause three of Main Motion
Mar 31, 2026Main Motion
Apr 21, 2026Second Additional Motion
Jul 21, 2026Main Motion as Amended