City Council
Altoona City Council.
Member profiles and recent named roll-call positions, drawn from the City’s published council information and the structured vote tracker.
The mayor and council
Current council roster
Open a member for their named roll-call positions and the records behind them. A position the minutes don't name is never inferred.
What the Mayor and Council members are paid, as set by City ordinance, is on Public pay.
The mayor and council
The council by era
Roll-call marks as printed in the minutes; an absence is a mark, not an attendance record. A member is listed in an era when a roll call in it names them. Each profile has the full record on People.
From the minutes and the City’s website
Meeting time and attendance
Every City Council meeting since 2020 whose minutes have readable text: how long it ran, who was there, what the roll calls were on, who spoke, and when the City posted the records. Open a heading for its chart or table.
Workshops are left out, and a meeting without readable minutes is a gap, not a zero. Sources and caveats
Times run from the printed roll-call time to the printed adjournment time, so a meeting is as short or long as its minutes print it. Attendance is the opening roll call, including the mayor; “arrived late” counts arrival times the minutes print. When the mayor is absent, the Mayor Pro Tem usually presides. Each meeting’s details are on the Votes page.
Average meeting length by year Loading…Open for the chart and table
Pay per meeting hour is an estimate, not an hourly wage. Sources and caveats
The Mayor’s and five Council seats’ annual pay, set by ordinance, divided by that year’s total meeting time. Every year with any timed meeting shows a figure. An asterisk marks a year where some meetings have no printed start and end time; in that case, the pay is scaled to the timed share before dividing. The breakdown by office, per meeting, per vote, and per agenda item is under Mayor and Council pay per meeting.
What Council’s roll calls are on Loading…Open for the breakdown
These count votes taken, not items or decisions: a consent agenda is one roll call, and each ordinance reading is its own. Sources and caveats
Every recorded roll-call vote, grouped by the title of the agenda item it was taken on. Each bar is that category’s share of the year’s roll calls, on one scale for every row, and each row labels its highest year; the table gives the counts. A consent agenda bundles several routine items into a single roll call, and each ordinance reading is its own roll call, so these are counts of votes taken, not of items or decisions. Categories come from the agenda-item titles as printed, by the rules listed under the table.
How each roll call is assigned a category
Each rule is checked against the agenda-item title in this order, and the first match wins. A title that matches none is counted as Other.
Mayor and Council pay per meeting, hour, vote, and agenda item Loading…Open for the full table
Estimates: pay covers every duty of the office, not only meetings, so these are ratios, not hourly wages. Sources and caveats
Annual pay for each office, from the Council's pay ordinances, divided by what the minutes record. Each cell gives the Mayor and all five seats together, with the Mayor’s office and one Council seat beneath. Every figure the records support is shown; a superscript asterisk marks one built on incomplete records — open the notes below the table for what is missing and which way it leans.
An asterisk marks a figure built on incomplete records. What's missing
Attendance summary by person Loading…Open for the roll-call breakdown
Presence over time Loading…Open for the grid
One row per person and one column per known meeting since 2020, in date order. Sources and caveats
Council members and the mayor show their opening roll call; city officials show whether the minutes list them under City Officials Present (officials have no expected attendance). Shaded columns are meetings with no readable minutes. Hover or tab to a cell for the details; click to open that meeting.
Consecutive meetings present Loading…Open for the streak table
A longer run is often a longer time in office, so this is not a ranking. Sources and caveats
Runs of back-to-back Council meetings at which each person on the roll call, including the mayor, was present. Only meetings where the roll call lists that person count, so a run stays inside their time in office, and meetings where they held no seat (such as a leave whose seat was filled) are skipped. Arriving after the roll call counts as present; absent at the roll call with no recorded arrival ends a run. A known meeting with no readable minutes neither breaks nor extends a run: it is skipped, and the Notes column says how many a run crosses. The workshop is left out. A longer run is often a longer time in office, so each bar is drawn against that person’s roll calls; this is not a ranking.
City officials Loading…Open for the list
City officials are not on the roll call, so there is no expected attendance or absence for them. These counts are the meetings whose minutes list them under “City Officials Present”; the minutes do not say why anyone is not listed.
* Virtual: meetings whose minutes print “via GoToMeeting”, “via Zoom”, or “and GoToMeeting” (City Hall and online) under the heading, April 2020 to May 2021, during the COVID-19 pandemic. The minutes of those meetings do not say which members joined online, so the Remote column counts only members the minutes name as joining remotely or by phone.
* Absent: not at the roll call, and the minutes record no later arrival. A member who arrived after the roll call is counted under Arrived late, not Absent. Present, Arrived late, and Absent add up to Roll calls.
Every number in these tables links to the meetings it counts. Sources and caveats
Roll calls list only members who held a seat at that meeting, so a member on leave whose seat was filled (for example Josh Dunwoody, 2025–2026) is not counted absent. The minutes do not give reasons for ordinary absences, and none are inferred. The mayor’s presided count includes April 6 and April 20, 2020: the roll call lists the mayor absent, but the minutes record Mayor O’Connor asking for approval of the agenda.
Public turnout Loading…Open for turnout by meeting
From the minutes
A year or meeting with no documented turnout is a gap in what the minutes print, not evidence that no one came. Sources and caveats
What the minutes document about who else was present, beyond Council, the mayor, and City officials and staff: how many people the minutes name under “Audience Present,” and how many people the minutes record speaking during public comment. The minutes record attendance inconsistently; a year or meeting with no documented turnout is a gap in what the minutes print, not evidence that no one came. Counts are of names printed, not a headcount. Individual audience members’ names are never published; only counts are. Full detail, including which meetings drew the most participation, is on the Vote tracker’s Public comment tab.
When the City posts agendas and minutes Loading…Open for each meeting
From the City’s website
Counted in whole days from the day each file was saved on the City’s web server; a gap means that date can’t stand for the first posting. How this is measured
Agenda posted ahead:
Minutes posted after:
The server keeps only the latest save of each file. If the City replaced a file, its time is later than the first posting, so an agenda may have gone up earlier, and minutes sooner, than shown. Source: the City of Altoona’s agendas and minutes archive; file times last updated . Each meeting’s file links and times are in /council/records-timeliness.json.
Each known meeting
Member profile
All-time record
All recorded years
Recent meetings
Recorded vote history by year
Activity by recorded year
Select a year to view that period’s recorded positions and source-linked vote history.
No named roll-call entries are linked to this member yet.
The current vote feed does not list a vote position for this member. That is left as unknown rather than inferred. See the vote tracker for the current state of the dataset.