Every record I pry loose
ends up right here.
The whole file, plus the paperwork that pried it loose. The only rows I touch are the ones with somebody's name typed into them, and every one of those is logged.
Read it without downloading it
These three are in the zip as well. They open in the browser so nobody has to pull 18 MB onto a phone to find out whether this is real.
- Start here What this is, where it came from, and what it does not contain. 00_OPEN_FIRST.pdf
- What is in the log Every number I pulled out, with the definition used for each one so you can reproduce it. Findings.pdf
- How I handled it What came out, how many rows it touched, and why. 417 rows out of 140,561. Method_and_Redaction.pdf
Count the rows and you get a bigger number
The file the City produced has 140,561 rows in it. There are not 140,561 searches in there.
Flock hands over two overlapping reports. One logs every search that queried Kalamazoo's camera network. The other logs every search run by a Kalamazoo Public Safety account, wherever it reached. A search that is both gets written down twice.
− 24,544 repeat rows
= 116,017 distinct search IDs
24,542 search IDs show up more than once. All but one show up exactly twice, and one shows up four times. The repeats are identical on all 10 substantive columns and differ only on which report they came from and on the officer name field, which is blank on the network report. Both files are in the download, so you can run the dedupe yourself and get the same answer.
Which number should you use
Use 116,017 for searches. The 140,561 figure is the row count of the export, and it inflates Kalamazoo's own department by about 21% because the doubling only touches the agency that owns the cameras.
Who else was searching
78.5% of the searches of Kalamazoo's cameras came from somewhere other than Kalamazoo. Michigan State Police alone ran 74,448 of them, which is 64.2% of the whole log. Behind that, 4,953 from the Department of Corrections and 4,428 from Grand Rapids.
The Mayor's determination says the City supplemented its response by providing "complete and unredacted versions of all data-sharing agreements, memoranda of understanding, or interoperability agreements between the Kalamazoo Department of Public Safety and any federal agency, state agency, or private entity governing access to or use of Flock Safety ALPR data."
What arrived was one memorandum of understanding, with Kalamazoo County Consolidated Dispatch. It is in the download. Nothing was produced that covers Michigan State Police, who ran 64.2% of the searches.
That one memorandum has two problems on its face. Only Flock signed it, on June 11, 2026, and the signature and date fields for both Kalamazoo County Consolidated Dispatch and Kalamazoo Public Safety are empty, while the document says it starts once fully executed. Its numbered sections also run 8, 10, 11. There is no section 9. It is in the download exactly as it was produced.
What I took out
Agencies get named. People do not.
417 rows carry a redaction, which is 0.30% of the file. That is 103 distinct entries: free-text operator notes where somebody typed a name, an address or a plate into a field nobody was checking. 225 case labels were replaced with tags like [CASE-A] so you can still count how often one investigation repeats without me republishing a case number the City itself withheld.
The City had already redacted the plate and case-number columns before it sent me the file. That is the City's call, not mine, and it is why nobody, including me, can tie a search in this log to a car or a person.
Worth knowing, because it is the first thing a skeptic asks. The blanks in those two columns are not redactions. 98,737 rows read REDACTED under License Plate and the other 17,280 are blank because those search types take no plate at all. Under Case #, 49,617 read REDACTED, meaning a case number was there. The other 66,400 are blank because nobody entered one. That is the 57.2% above, and it is a gap in the record rather than a gap in what the City handed over.
Full row-by-row accounting is in REDACTION_LOG.csv inside the download.
Who paid for this
Getting this file took a records request, a partial denial, an appeal, and the Mayor's signature on a written determination. That was before anybody read anything.
Then came the reading. 140,561 rows. 1,611 operator notes gone through one at a time, because that is the only way to find the ones where somebody typed a person's name into a field nobody was checking. 417 rows came out by hand.
Nobody funds this. No organization behind it, no sponsor. It's me, a records budget I do not actually have, and a pile of Claude credits.
The file stays free either way. If it was worth something to you, what your money buys is the next one.
Fund the next requestNobody has to vote to keep it
The contract is in the download. It runs $99,900 a year for 39 plate readers and one Flex camera, and it renews for another 12 months on its own unless somebody sends a written notice of non-renewal 30 days before the term ends. Keeping it takes no vote and no signature. Ending it takes a letter.
The copy in the download was signed for the City by its Chief Operating Officer in August 2025. Kalamazoo put its first Flock cameras up in 2021, and I have not gone back to check whether anybody voted on that. I am not going to tell you nobody approved it when I have not looked.
The order form also does not state a term commencement date on its face, so I am not going to tell you when the notice window opens or closes. The City can answer both of those in a sentence each. Those are fair things to ask them.