Jefferson County is in eastern Missouri, south of St. Louis. Hillsboro is the county seat. About 227,000 people live in the county. We loaded 3,761 Flock audit records from the Jefferson County Sheriff’s Office. The records cover July 1–31, 2026. Thanks to Show Me Surveillance for obtaining and sharing these records.
- Type: Organization audit
- Timespan: Jul 1 – Jul 31, 2026 (1 month)
- Records: 3,761
- Search types: lookup (2,524), search (768), lookup - Mobile (393), search - Mobile (50), visual (24), freeform (2)
- License plate attached: 2,917 (77.6%)
- Case # present: 114 (3.0%)
The 844 records without a plate are search, visual, and freeform records. No lookup record lacks a plate.
The busiest week began July 13, with 1,241 records. The median search reached 337 networks. The largest reached 6,585.
#Search types
| Type | Count | % |
|---|---|---|
| lookup | 2,524 | 67.1% |
| search | 768 | 20.4% |
| lookup - Mobile | 393 | 10.4% |
| search - Mobile | 50 | 1.3% |
| visual | 24 | 0.6% |
| freeform | 2 | 0.1% |
#Top operators
75 Flock users ran searches. Gera Hamby (644) and Heather Missey (621) ran 33.6% of all searches.
| Operator | Count | % |
|---|---|---|
| Gera Hamby | 644 | 17.1% |
| Heather Missey | 621 | 16.5% |
| Zachary Gonz | 252 | 6.7% |
| Alex Kelmendi | 155 | 4.1% |
| Daniel Rodriguez | 146 | 3.9% |
| Taylor Lee | 139 | 3.7% |
| Jason Sullivan | 124 | 3.3% |
| Michael Burwell | 115 | 3.1% |
| Jimmie Stokes | 103 | 2.7% |
| Carmelo Crivello | 98 | 2.6% |
| Other (65 people) | 1,364 | 36.3% |
All 644 of Gera Hamby’s searches give a Traffic Infraction reason. They cover 42 plates. On July 14, Hamby searched one plate 239 times in three hours. On July 15, Hamby searched a second plate 99 times in two and a half hours. Hamby ran 644 of the 1,043 Traffic Infraction searches (61.7%).
#Reasons
Each reason starts with a Flock offense category. 1,680 records add free text after the category, such as “investigation”, “warrant”, or “CASE”. The table groups reasons by category.
| Category | Count | % |
|---|---|---|
| Wanted Person (Arrest Warrant/Fugitive) | 1,095 | 29.1% |
| Traffic Infraction | 1,043 | 27.7% |
| Motor Vehicle Theft/Stolen | 385 | 10.2% |
| Larceny/Theft Offenses | 315 | 8.4% |
| Drugs/Narcotics | 204 | 5.4% |
| Burglary/Breaking & Entering | 100 | 2.7% |
| Missing/Endangered Person/Runaway | 80 | 2.1% |
| Destruction/Damage/Vandalism of Property | 78 | 2.1% |
| Hit and Run/Car Accident | 62 | 1.6% |
| Weapons Offense (Guns/Shots Fired) | 60 | 1.6% |
| Stolen Property Offenses | 57 | 1.5% |
| Alcohol Offenses (Non-DUI) | 53 | 1.4% |
| Homicide/Death Investigation | 45 | 1.2% |
| Other (17 categories) | 184 | 4.9% |
Thomas Delia ran 32 of the 53 Alcohol Offenses (Non-DUI) searches. 31 of them read “Alcohol Offenses (Non-DUI) - wanted”.
22 records cite Terrorism/Terroristic Threats. Four operators searched one plate 19 times between 3:30 PM on July 21 and 12:39 AM on July 22, Central time.
#Report highlights
#Low-level offenses
19 records cite low-level offenses: Disorderly Conduct/Disturbance (14) and Trespass (5).
#First Amendment
Heather Missey ran both freeform searches on July 6. A freeform search describes a vehicle in words instead of a plate number. The two prompts describe an SUV with a St. Louis Blues sticker or emblem. Both give the reason Motor Vehicle Theft/Stolen. Flock’s moderation marked both “allow”.
#How we processed the files
The released files are one Excel workbook. We converted it to one CSV and renamed the CSV. We changed no cell values. Anyone with the released workbook can rerun the steps below and get a CSV with the same SHA-256 as ours.
#Source file
| File | Bytes | SHA-256 |
|---|---|---|
7_1_2026-7_31_2026-Jefferson County MO SO-Audit.xlsx | 345,284 | abf67e757309a239742b226554a6db9da13e9ed526f4542dfc82c34d9b40c248 |
The workbook has one sheet, 7_1_2026-7_31_2026-Jefferson Co. The sheet holds a header row and 3,761 data rows in 13 columns.
#Conversion
We ran packages/data-load/scripts/xlsx_to_csv.py under Python 3.12.15, pandas 2.3.3, and openpyxl 3.1.5:
python packages/data-load/scripts/xlsx_to_csv.py "7_1_2026-7_31_2026-Jefferson County MO SO-Audit.xlsx"The script reads each sheet with pandas.read_excel(dtype=str, keep_default_na=False). Every cell stays text, and blank cells stay blank. The script writes one CSV per sheet with Python’s csv.writer. The output is UTF-8 with no byte-order mark. Every field is quoted (QUOTE_ALL). Lines end in \n. The script strips NUL bytes from each cell; this workbook has none. Empty cells become "". With no output folder given, the script writes into a subfolder named after the workbook and names each CSV after its sheet.
#Renames and moves
7_1_2026-7_31_2026-Jefferson County MO SO-Audit/7_1_2026-7_31_2026-Jefferson Co.csvbecame7_1_2026-7_31_2026-Jefferson-County-MO-SO-Audit.csv. The new name has no space.- We deleted the empty subfolder.
- The workbook sits unchanged in
unprocessed/.
#Staged CSV
| Staged CSV | Source sheet | Rows | SHA-256 | Method |
|---|---|---|---|---|
7_1_2026-7_31_2026-Jefferson-County-MO-SO-Audit.csv | 7_1_2026-7_31_2026-Jefferson Co | 3,761 | 6912118fd711671b0ef81fcd1f2a78d30d48409bf92d142650a6b0f58196f591 | converted |
#What we checked and left unchanged
- Twelve of the 13 header names start with a space, such as
" Name"and" Org Name". We kept them as released. - Each
Time Framecell holds two timestamps on separate lines. The CSV keeps that line break inside the quoted field. The file has 7,523 lines for 3,762 records. - The workbook has no redaction markers.