How we count
Every councillor made promises when they asked for our vote. This site checks how they voted against those promises.
It is a record of votes only. It doesn't measure debate, questions, committee work, or the help a councillor gives residents.
- Their wordsA promise from the documents they lodged when they won their seat.
- The votes that test itChosen from the minutes before looking at how anyone voted.
- In line or notEach of their votes either went the promise's way or didn't.
- The countFor example, 5 votes in line out of 12.
- The words5 of 12 is 42%, which reads "voted a mixture of for and against".
1. The promises
The promises are each member's own words, from the candidate profiles and statements they lodged when they stood for election, which the City published. I don't write the promises, and I don't decide what anyone should have promised. Every quote is word for word and links to the document, and a copy of every document is kept on this site exactly as the City published it.
- An election they wonEvery race they ran at that election. Stand for Lord Mayor and Councillor at once, win the Councillor seat, and both sets of promises count.Counts
- An election they lostDoesn't count
- Won more than onceTheir earliest winning promises come first, because they have had longest to keep them. A later document is used only where the earlier ones held nothing a vote could test.Earliest first
A promise counts only if a Council vote could test it.
- “More CCTV”A promise. A Council vote can add CCTV or decline it.Counts
- “Safe and vibrant”A slogan. No vote can test it.Doesn't count
- “I have done X”A record of the past, not a promise.Doesn't count
Where several members promised the same thing, it is listed once as a shared promise, with everyone who made it named.
A promise is measured against all of a member's votes, including votes before they made it. That shows whether the promise matched how they already voted.
What a member's page leads with. Each member's page opens with their promises most tested, up to three. Their own promises, the ones only they made, lead once they have voted on them at least five times. The list is then topped up with the promises where their votes split most often, shared or not. Everything else that has enough votes for a record sits under Their other promises. Their two most-tested own promises always appear somewhere on the page once a vote has tested them, however few the votes. A promise no vote has tested yet is listed on the Commitments page, under Not yet tested by a vote.
2. Which votes count
- The final decisionCarried or lost, whoever wrote it.Counts
- An amendmentCarried or lost, where it moves the decision towards or away from a promise.Counts
- A unanimous or en bloc voteAgreement is part of the record.Counts
- A procedural vote, such as a deferralShown on the page, never counted.Doesn't count
- A member who wasn’t in the roomNo vote, so nothing to count. Attendance is shown instead.Doesn't count
The final decision counts, whether it started as the officer's recommendation, a notice of motion or an alternate motion.
Amendments count too. An amendment is a member changing what Council does, in writing, and the vote on it is often where members show their hand. Where an amendment moves a decision towards or away from a promise, it counts as a vote of its own, carried or lost. Each one shows what it changed and the reasons the minutes print.
Unanimous and en bloc votes count. Agreement is part of the record. Every figure also shows the split votes, where at least one member voted the other way, because that is where members differ.
Procedural votes are shown but never counted. Deferring an item can be tactical, or a genuine request for more information, and the minutes rarely say which.
3. Matching votes to promises
- Decide the testWhich votes test the promise, and which way is in line. Votes hidden.
- Then look at the votesWho voted for, who voted against.
- CountAny call changed after step 2 is marked Decided after the votes were known.
For each promise, I decide which votes test it, and which way a vote in line goes, before looking at how anyone voted. The reason sits beside every vote on the promise's page.
A few calls were made after I had seen the votes: a vote dropped on a closer reading, or one found later. Each is marked Decided after the votes were known, so you can judge it yourself.
4. Budgets, rates and fees
Adopting the budget is one vote on hundreds of things at once. If it counted against every promise it touches, one vote a year would swamp everything else. So a budget vote counts in only two cases, and never for anything else.
- A promise about ratesMeasured on the total rates the City collects.Always counts
- A promise of more CCTV or more ranger patrolsA clear expansion, such as a new line or a rise well beyond the rest of the budget: in line. Flat, a rise in step with everything else, or a cut: not in line. Can't tell from the budget: doesn't count.Counts if the budget shows a change
- Anything else, parking includedParking counts on the separate parking fee votes.Doesn't count
Rates. The budget is where Council sets the rates, so it counts for a promise about rates every year. I measure the total rates the City collects (the rates yield), not any one bill. In a year when properties are revalued, individual bills can move further than the total, and that vote's page says so.
The rates half, measured as lower rates:
2022/23: the rates yield rose 1.1%, well below inflation of 7.6%. It is still a rise, so a vote for it is not in line with lower rates. See the vote
CCTV and ranger patrols. The promises here are for more. So I read that year's budget and compare it with the year before. A clear expansion counts as in line: a new CCTV or patrol line, or a rise well beyond the rest of the budget. A flat year does not, and nor does a rise that only keeps pace with everything else, because standing still is not more. A cut does not either. Where the budget documents cannot show which way it went, the vote does not count at all. Every one of these votes names the budget line and page it rests on.
A vote to adopt the budget is in line in a year marked in line, and not in line in a year marked not in line. Each vote's page names the budget page.
Parking. A budget vote never counts for parking. Parking fees are set in separate votes on the City's parking fee review, and those are the votes that count. How a rise is judged depends on what was promised. A promise of cheaper parking is not kept by any rise. A promise of no steep rises is judged against Perth's inflation rate (CPI): a rise at or below it is in line, a rise above it is not. I use the latest figure the Australian Bureau of Statistics had published when Council voted, because that is what members could see.
Measured as cheaper parking, a promise Cr Ko shares:
February 2025: Council raised parking fees, hourly rates mostly by 7% to 12.5%. A vote for that is not in line with cheaper parking. See the vote
A budget does not arrive on the night it is adopted. For 2026/27, members had budget workshops on 18 February, 15 April and 22 April 2026, five months before Council adopted the budget on 22 July (the City's 2026 meeting calendar, Ordinary Council Meeting minutes of 9 December 2025, page 798). A member who wanted more had time to ask for it before voting.
5. From votes to words
Every vote counts once, whoever wrote the motion. Moving a motion adds nothing. So a record is simple arithmetic: the votes in line, out of the votes cast.
▲ 5 of 12, 42%
- 95 to 100%voted consistently for
- 85 to 95%voted almost always for
- 60 to 85%voted generally for
- 40 to 60%voted a mixture of for and against
- 15 to 40%voted generally against
- 5 to 15%voted almost always against
- 0 to 5%voted consistently against
For example: a member cast 12 votes that test a promise, and 5 went in line. That is 42%, in the 40 to 60% band, so their record reads “voted a mixture of for and against”.
The bands are the ones They Vote For You and TheyWorkForYou use.
Exactly on the edge of a band. When a share lands exactly on an edge, such as 3 of 5 (60%), the member's votes on motions written by members (notices of motion, alternate motions and amendments) decide which side it falls. If those went more in line than the edge, it takes the band above; if less, the band below. With none, or level, 60% reads "generally for" and 40% reads "generally against".
How many votes a record needs.
- 3 votes or moreThe full words and the meter, such as “voted generally for”.Full record
- 1 or 2 votes, for a newer memberA member needs one vote for each full year on Council, never fewer than one. From that minimum up to 3 votes, the words are plain, such as “voted for it so far”, “voted against it so far” or “voted both ways on it so far”, marked as an early record, with no meter.Early record
- Fewer than the member’s minimumThe count only, and “not enough votes to say”.Count only
6. When Council agrees
When nobody dissents, rating members one by one would suggest a fight that never happened. So a promise with at least 3 votes is marked as agreed when either test is met:
Test A
Everyone on the same sideEvery member with 3 or more votes on it reads “for”, or every one reads “against”, and Council went that way on most decisions. However many votes split.Test B
Council rarely splitFewer than 3 split votes, and less than a third of all the votes.Then the page says which way Council went, such as "Council backed it: 30 of 31 decisions for it". Each member still gets their own phrase, from their own votes, next to their own count, and their meter is framed and marked as a consensus.
How strongly Council agrees comes from Council's own share of decisions, on the same bands:
| Council's decisions that went one way | Consensus |
|---|---|
| 95 to 100% | strong |
| 85 to 95% | moderate |
| 60 to 85% | weak |
7. Projects
A promise to deliver a particular project goes ahead one decision at a time, usually unanimously. Counting those would only tell you the project moved, so projects aren't scored. Their page lists every decision in order, and shows how members voted where Council split.
8. Absences
A member who wasn't in the room has no vote to count. Their attendance is shown on their page instead, from the minutes, which say when leave was approved. The minutes don't say why anyone else was away, and neither do I. If the minutes leave someone off the attendance list but record them voting, I count them as there and say so.
9. Sources
Every vote links to its page in the City's published minutes. The final minutes are the authority, and where the City has reissued them I use the reissue.
Occasionally the minutes contradict themselves, listing someone as voting after recording that they had left the room. Then I check the meeting recording. Where it settles the question, the record follows it and the vote's page says so. Where it doesn't, the minutes' account of who left stands.
Each member is measured only on meetings from their first vote in our record, and every page says the date the data runs to.
Vote summaries were drafted with AI help, and each was checked against the resolution as printed. Where one didn't match, I rewrote it.
Changes to this method
| Date | Change |
|---|---|
| 15 Oct 2026 | First published |