A person-level voting dataset can be numerically correct and still produce the wrong denominator. Chicago's October 16, 2025 City Council record is a useful example. The official API returns 93 zoning reclassification matters with 50 person-status rows for each matter. Twenty-one matters carry the same two Nays. The Clerk's separate divided-roll-call report shows that those 21 matters were covered by one grouped floor roll call.

The pattern is real. Counting it as 21 independent council roll calls would not be.

The result in one table

The 93 matters produce 4,650 matter-person rows because each matter endpoint returns one status for each of 50 council members. Only two status vectors appear.

A matter-person row is a status attached to a matter record. It is not necessarily a separate floor vote by that person.
API status vector Matter records Matter-person rows What the source supports
47 Yea, 0 Nay, 2 Absent, 1 Not Voting 72 3,600 The API assigns this vector to 72 matters. This review does not establish how many distinct floor motions produced it.
45 Yea, 2 Nay, 2 Absent, 1 Not Voting 21 1,050 The Clerk's divided-roll-call report identifies one grouped floor roll call covering these zoning reclassifications.
Total 93 4,650 A complete count for the defined API frame, not a count of independent floor votes.

Across all 4,650 rows, the exact source labels total 4,329 Yea, 42 Nay, 186 Absent, and 93 Not Voting. These totals describe the repeated matter-level status assignments. They should not be presented as 4,650 distinct acts of voting.

What the repeated pattern actually says

All 21 divided matter endpoints identify Alderpersons Anthony Beale and Pat Dowell as Nay, Derrick Curtis as Not Voting, and Jeanette Taylor and Gilbert Villegas as Absent. The other 45 members are recorded as Yea. No other person is assigned a Nay within those 21 matter records.

The official Attendance and Divided Roll Call report, on page 9, lists one record called Broadway Land Use Zoning Reclassifications. It describes multiple reclassifications in the 46th, 47th, and 48th wards and reports the same 45 Yea, 2 Nay, 2 Absent, 1 Not Voting result. The corresponding Zoning Committee minutes show how the matters were handled in groups at committee, including application of a previous committee roll call to a second set of matters.

The API therefore exposes 21 distinct matter records with the same person-level status vector, while the floor report identifies one grouped roll call covering those matters. This is not an error in the API. It is a relationship that downstream analysis must preserve.

What the pattern does not say

Repeated Nays can identify a useful follow-up question, but they do not explain why a member voted that way. The records reviewed here do not establish motive, ideology, opposition to zoning generally, ward custom, personal interest, or a causal relationship between any sponsor and any vote.

The source filingSponsor field assigns the 21 matters to Angela Clay for 7 records, Matthew Martin for 3, and Leni Manaa-Hoppenworth for 11. That filing field helps organize the matters. It is not evidence of a political relationship or an explanation for the two Nays.

Why the denominator matters

Suppose an analyst built a score from matter-person rows alone. The two Nays would appear 21 times for each alderperson. A frequency table might then describe 42 dissenting votes. That is a valid count of Nay-labeled matter-person rows within this frame. It is not a valid count of 42 independent choices or 21 independent roll calls.

Different questions require different units:

  • Matter exposure: On how many distinct matter records was a member assigned a given status?
  • Floor decisions: How many distinct motions or grouped roll calls occurred?
  • Policy positions: What substantive proposal did each matter contain, and was it included in a grouped action?
  • Member behavior: Across a defined and source-verified universe, how often did a member take each position?

The first question can be answered from the API rows in this case. The second requires the divided-roll-call report. The third requires reading the matters and operative documents. The fourth requires all three, plus identity, attendance, and coverage controls.

A reproducible selection and review method

  1. Query the exact source category ZONING RECLASSIFICATIONS.
  2. Use a half-open time interval from 2025-10-16T05:00:00Z through, but not including, 2025-10-17T05:00:00Z. Those UTC bounds represent midnight to midnight in Chicago on a date when the city observed Central Daylight Time.
  3. Confirm that each returned matterId appears on the official City Council meeting agenda for meeting 1BDD5AEB-3B9D-F011-B4CB-001DD80F1323.
  4. Request the official vote endpoint for every matter and preserve the exact Yea, Nay, Absent, and Not Voting labels.
  5. Group identical status vectors, then compare them with the Clerk's agenda, committee minutes, journal, and divided-roll-call report before assigning a floor-vote denominator.

The exact matter query returned 93 records when checked on August 2, 2026. The official meeting-agenda endpoint identifies the body, meeting time, attachments, attendance, and agenda items. The API's OpenAPI description documents the available matter, meeting-agenda, and vote routes.

The 21 matter records in the grouped pattern

Publishing the identifiers makes the repeated-vector result auditable without turning the identifiers into a claim about 21 independent floor roll calls.

Record numbers and matter IDs returned by the source-defined query.
Record number Matter ID
O2025-0017504C1253F4F-9F35-F011-8C4D-001DD80501AC
O2025-00175072C262C28-AC35-F011-8C4D-001DD80500AD
O2025-00175085C1F6A9B-AC35-F011-8C4D-001DD80500AD
O2025-0017509DA19ADF2-AD35-F011-8C4D-001DD80500AD
O2025-0017510F0021459-AE35-F011-8C4D-001DD80500AD
O2025-0017511FC9E5BBF-AE35-F011-8C4D-001DD80500AD
O2025-0017512D3969931-AF35-F011-8C4D-001DD80500AD
O2025-0017513991E461C-B035-F011-8C4D-001DD80500AD
O2025-0017514EB929A6A-B035-F011-8C4D-001DD80500AD
SO2025-0016310D3A2AC1E-FA0F-F011-BAE2-001DD80DF05F
SO2025-001631252A5B709-FB0F-F011-BAE2-001DD80DF05F
SO2025-0016313C4761DC3-FB0F-F011-BAE2-001DD80DF05F
SO2025-0016687E9DECE7C-331A-F011-9989-001DD830951E
SO2025-0016689643BA00C-341A-F011-9989-001DD830951E
SO2025-001669183B1D672-341A-F011-9989-001DD830951E
SO2025-00166935C735221-351A-F011-9989-001DD830951E
SO2025-00166969BDC2BCA-351A-F011-9989-001DD830951E
SO2025-0016708ED7CC7AA-3A1A-F011-9989-001DD830951E
SO2025-00167090EFDB734-3B1A-F011-9989-001DD830951E
SO2025-00167101857EF83-3B1A-F011-9989-001DD830951E
SO2025-0016711CA880E15-3C1A-F011-9989-001DD830951E

Limits and coverage

  • The 93-record frame is defined by one eLMS category and one final-action date. It does not include all Chicago land-use activity, Zoning Board of Appeals proceedings, Chicago Plan Commission proceedings, or records placed in other categories.
  • The API source may be corrected or republished after the check date. The linked official record remains controlling.
  • The 4,650 rows are matter-person status assignments, not 4,650 distinct policy decisions.
  • Only Yea and Nay are treated as cast votes. Absent and Not Voting remain separate noncast statuses.
  • The 72 zero-Nay vectors do not establish the number of independent floor motions. This analysis makes no such count.
  • The repeated Nays establish a source-record pattern within the defined frame. They do not establish motive or a broader voting tendency.

Sources

  1. Exact Chicago eLMS matter query, 93 records when checked August 2, 2026.
  2. Chicago eLMS City Council meeting-agenda endpoint, October 16, 2025.
  3. Example official matter vote endpoint for O2025-0017512. The same route pattern was requested for every matter in the frame.
  4. Clerk report page for City Council attendance and divided roll calls.
  5. Official Attendance and Divided Roll Call report, especially page 9.
  6. Official October 2025 Zoning Committee minutes, especially pages 2 and 3.
  7. Official October 16, 2025 City Council agenda.
  8. Journal of Proceedings, Volume I; Volume II.

This analysis is based on public records. It is not an assessment of any official's motives, ethics, or overall record. Verify the current official record and the denominator appropriate to your research question before publishing a score or comparison.