Ardmore is a city of about 25,000 people and the county seat of Carter County, Oklahoma. This post covers two sets of Flock audit logs from the Ardmore Police Department. The org audit lists 7,794 searches by Ardmore Flock users from June 1, 2025 through June 10, 2026. The network audit lists 71,327 searches by 80 agencies that included Ardmore’s cameras. It has gaps in four months. Thanks to the Ardmore Leader for obtaining and sharing these records.
All dates below use Central time.
#Org audit
- Type: Organization audit
- Timespan: Jun 1, 2025 – Jun 10, 2026 (about 12 months)
- Records: 7,794
- Search types: search (2,487), lookup (2,281), search - Mobile (1,556), lookup - Mobile (1,412), visual (48), convoy (7), searchSummary - Mobile (2), multiGeo (1)
- License plate attached: 4,166 (53.5%)
- Case # present: 942 (12.1%)
Every lookup in the org audit has a plate. Most searches do not, so the plate field is blank on 3,628 records.
#Search types
| Type | Count | % |
|---|---|---|
| search | 2,487 | 31.9% |
| lookup | 2,281 | 29.3% |
| search - Mobile | 1,556 | 20.0% |
| lookup - Mobile | 1,412 | 18.1% |
| visual | 48 | 0.6% |
| convoy | 7 | 0.1% |
| searchSummary - Mobile | 2 | <0.1% |
| multiGeo | 1 | <0.1% |
In the org audit, 5,382 records searched two networks or fewer. The other 2,412 searched more, up to 454 networks.
#Top operators
45 Flock users ran searches. No single operator ran more than 10.1% of them.
| Name | Count | % |
|---|---|---|
| Kelsi Collins | 791 | 10.1% |
| Matthew Dunn | 741 | 9.5% |
| Cory Reeves | 596 | 7.6% |
| Jordan Reavis | 574 | 7.4% |
| Jared Johnson | 537 | 6.9% |
| NaTonya Puente | 523 | 6.7% |
| Landon Gary | 438 | 5.6% |
| Lynsie Cantwell | 426 | 5.5% |
| Colby Copeland | 393 | 5.0% |
| Jonathan Miracle | 271 | 3.5% |
| Kevin Landers | 248 | 3.2% |
| Jazper Long | 228 | 2.9% |
| Kelsey Farve | 177 | 2.3% |
| John Cheairs | 174 | 2.2% |
| Michael Geren | 173 | 2.2% |
| Other (30 operators) | 1,504 | 19.3% |
#Reasons
The org audit contains 554 distinct reason values. “Training” is the most common, with 337 records. Reasons that contain “training” appear on 381 records from 12 operators. Lynsie Cantwell (130) and Michael Geren (128) entered most of the 337 “Training” records.
Jared Johnson entered all 522 records whose reason contains “INTEL,” from June 2025 through May 2026. That total includes “Drugs/Narcotics - INTEL” (267) and “INTEL” (225).
| Reason | Count | % |
|---|---|---|
| Training | 337 | 4.3% |
| Drugs/Narcotics - INTEL | 267 | 3.4% |
| Investigation | 245 | 3.1% |
| INTEL | 225 | 2.9% |
| Stolen Property Offenses - | 216 | 2.8% |
| Suspicious | 216 | 2.8% |
| investigation | 197 | 2.5% |
| Welfare Check - | 144 | 1.8% |
| Theft | 135 | 1.7% |
| Search | 132 | 1.7% |
| Motor Vehicle Theft/Stolen - | 129 | 1.7% |
| admin | 127 | 1.6% |
| Stolen | 120 | 1.5% |
| Hit and Run/Car Accident - | 112 | 1.4% |
| Burglary/Breaking & Entering - | 111 | 1.4% |
| Other (539 values) | 5,081 | 65.2% |
#Network audit
- Type: Network audit
- Timespan: Jun 30, 2025 – Jun 10, 2026, with gaps (see below)
- Records: 71,327
- Organizations (network): 80
- Search types: search (50,453), lookup (10,259), search - Mobile (7,539), lookup - Mobile (2,180), convoy (785), visual (54), searchSummary - Mobile (29), freeform (19), multiGeo (9)
- Operator name: redacted on all 71,327 records
- License plate: redacted on 14,124 records; blank on the rest
- Case #: redacted on 22,850 records; blank on the rest
The network audit has no records for June 1–29, 2025, July 2025, September 2025, or March 2026.
Ardmore’s own searches account for 3,182 network audit records (4.5%). The same records appear in the org audit. The other 68,145 came from 79 outside agencies. Agencies in Oklahoma, Texas, and Kansas ran nearly all of them.
#Search types
| Type | Count | % |
|---|---|---|
| search | 50,453 | 70.7% |
| lookup | 10,259 | 14.4% |
| search - Mobile | 7,539 | 10.6% |
| lookup - Mobile | 2,180 | 3.1% |
| convoy | 785 | 1.1% |
| visual | 54 | 0.1% |
| searchSummary - Mobile | 29 | <0.1% |
| freeform | 19 | <0.1% |
| multiGeo | 9 | <0.1% |
Oklahoma City OK PD ran 15 of the 19 freeform searches. Tulsa OK PD ran three and Mustang OK PD ran one. The prompts describe vehicles, such as “blue Ford Sport Trac pickup with right rear damage.”
#Top organizations
| Organization | Count | % |
|---|---|---|
| Oklahoma City OK PD | 13,935 | 19.5% |
| Fort Worth TX PD | 11,937 | 16.7% |
| Tulsa OK PD | 11,330 | 15.9% |
| Wichita KS PD | 7,712 | 10.8% |
| Ardmore OK PD | 3,182 | 4.5% |
| Tulsa County OK SO | 2,452 | 3.4% |
| OK - 477 | 2,105 | 3.0% |
| Euless TX PD | 2,036 | 2.9% |
| Chickasaw Nation Lighthorse OK PD | 1,437 | 2.0% |
| Texas Financial Crimes Intelligence Center | 1,378 | 1.9% |
| Bethany OK PD | 893 | 1.3% |
| Moore OK PD | 824 | 1.2% |
| Burleson TX PD | 707 | 1.0% |
| Lawton OK PD | 671 | 0.9% |
| Collin County TX SO | 652 | 0.9% |
| Other (65 organizations) | 10,076 | 14.1% |
Four agencies ran 63.0% of the network audit searches: Oklahoma City OK PD, Fort Worth TX PD, Tulsa OK PD, and Wichita KS PD.
#Reasons
The network audit contains 6,137 distinct reason values. Eight records have no reason. No single value covers more than 1.9% of records.
| Reason | Count | % |
|---|---|---|
| Larceny/Theft Offenses - | 1,335 | 1.9% |
| sus veh | 1,242 | 1.7% |
| sus | 1,075 | 1.5% |
| Motor Vehicle Theft/Stolen - | 1,057 | 1.5% |
| Weapons Offense (Guns/Shots Fired) - | 1,055 | 1.5% |
| Investigation | 955 | 1.3% |
| inv | 914 | 1.3% |
| theft | 863 | 1.2% |
| Wanted Person (Arrest Warrant/Fugitive) - | 856 | 1.2% |
| suspect | 837 | 1.2% |
| Burglary/Breaking & Entering - | 835 | 1.2% |
| investigation | 824 | 1.2% |
| Hit and Run/Car Accident - | 807 | 1.1% |
| Traffic Infraction - | 795 | 1.1% |
| Stolen Property Offenses - | 631 | 0.9% |
| Other (6,122 values) | 57,238 | 80.2% |
#Report highlights
#Immigration
37 network audit records have reasons that mention immigration, HSI, or ICE. Tulsa OK PD entered 23 of them, including “PER HSI” (14) and “PER HSI/OHP” (6). Collinsville OK PD entered six with the reason "Immigration (criminal) - ". Oklahoma City OK PD entered five with an HSI request reference and one with “ICE SUSP.” Tulsa County OK SO entered two with “HSI.” The org audit has no immigration-related reasons.
#First Amendment
Tulsa OK PD ran 16 searches on August 18, 2025, with the reason “08/16/25 41st and Yale Protest.” The searches ran across 359 networks, including Ardmore’s.
#Low-level offenses
In the org audit, 261 records have reasons that contain “Disorderly Conduct” (107), “Traffic Infraction” (99), “Trespass” (54), or “Illegal Dumping” (1). In the network audit, 2,967 records contain those terms or “Curfew/Loitering.” The largest groups are “Traffic Infraction” (1,583) and “Illegal Dumping” (1,017).
#How we processed the files
This section lets anyone with the released files rebuild our staged CSVs byte for byte. We used Python 3.12.15 and its standard library. Sizes and SHA-256 hashes below are for the CSV files as released, without any compression.
#Released files
The release holds 24 CSV files. Each audit series has its own file for most months, so several names appear twice.
| Released name | Series | Bytes | SHA-256 |
|---|---|---|---|
| Location of Devices.csv | camera list | 6,341 | 09a1c451f61c75f6902c972fd01913777d1f17a4ad4db4cc917379425ec036b3 |
| June 2025.csv | org audit | 221,061 | 97123c178cad8d39afe6fed6da8c507ce38f13c38c85221aeb4a153d961db64e |
| July.csv | org audit | 100,795 | 395c5d905ed378ef28cd817fc18b2792d6964cd86959f64ab50e5b26c158cbd6 |
| August.csv | org audit | 155,429 | 161cd29d9811d53d786139b5bf742e7e6c8c18bc16ec4491de44d1695a4fba14 |
| September.csv | org audit | 152,508 | f8683b996b2ef179a5f0567e4345733bdee669a5ae30bd5814757cf4fc647e00 |
| October.csv | org audit | 184,916 | 8f058971c1faad2d929f4bce777a71f6cd6de250fcc37ca668cf394a2df96af3 |
| November.csv | org audit | 100,399 | 8c5ba3e32b60f1f5313c59a9036c687cbaea18325cdb0c33417e4d9e9d15fcb0 |
| December.csv | org audit | 140,509 | 089d26cc49428f07af6a879edec9f36a67d3ddfa0ef6b62fb1143fa27b16cd39 |
| January.csv | org audit | 177,362 | 782f4d32f0c2fcc47ea33f6c6634bf30f2e3df79fa3dcc60e25b9ab0e65c3dcc |
| February.csv | org audit | 100,207 | 7222bde0b0091d60ee6e5820f8c878e46b2021b5aeb53c359d2ffcea70a45f0f |
| March.csv | org audit | 131,744 | 296fb8927b5cb44551af93fbb41292af55cbabc0222755ac283207c7215549ab |
| April.csv | org audit | 101,425 | d680334eef2ee22f5a387e5984dd0b74acc73dac0eead42f60c191bcf5065ffb |
| May.csv | org audit | 148,003 | 682bbe5138c92def6b1ab05c58792512bdd25133ecf0b7dcfb59eaf6fb0404dd |
| June 1st to end 2026.csv | org audit | 136,667 | 216eebcba90d5c1904238f50072ce8266b54fc54d57b11659b3fd226ca9eb587 |
| June 2025.csv | network audit | 330,236 | a9e7757c893b5c90c498bfc3deffc181b0bdcc2e938870732e88a132b0d2eac6 |
| August.csv | network audit | 3,140,311 | 4401d3acddfae6966caefae358566f1831dba6adf254b041ce68a8b8b5162516 |
| October.csv | network audit | 1,512,066 | d57310386030427adf3cca8322cbf35ab4767604527ae152d5f9819014c4a448 |
| November.csv | network audit | 1,318,756 | ff7d17ddc3a25a00f00b75ec357af9c81db7e7dbb3101ab271a693ac5ae9a4e0 |
| December.csv | network audit | 1,477,757 | 9ef6c84e708e8bf560cc052aed70fb58f4889a00de37cd6ba8f9aa639707303a |
| January.csv | network audit | 1,533,678 | e74672d77a4f851603f5918401743b8da61dd99a2b667a42ec2fc1a665fca3a5 |
| February.csv | network audit | 1,641,484 | 613f2c289a3c60ec8682948a4ce81f92cff6620e3e3e6130c163fab4a06b64cb |
| April.csv | network audit | 1,483,346 | 4af52fec824466f987cffcd3c6c0037247e5badfac44304514cb64a2907a623a |
| May.csv | network audit | 1,872,048 | cfbe268ce426f4692091e496f026f832472502d8e3e81b0c29357c60905a2c81 |
| June to end.csv | network audit | 619,073 | 0e18f55254a487d5dc889a56e58535af5bbbedffd1972116c32ed81a7e129f79 |
#Sorting and renaming
The 23 audit files share one 13-column header. It has a space after each comma: ID, Name, Org Name, Total Networks Searched, Time Frame, License Plate, Reason, Case #, Filters, Search Time, Search Type, Text Prompt, Moderation. The files have no byte-order mark and end each line with LF. Fields are quoted only where needed, and the Time Frame field holds a line break inside its quotes.
The Org Name column sorts the files into two series. In 13 files, every row reads “Ardmore OK PD.” These form the org audit. The other 10 files list between 38 and 69 organizations each. These form the network audit. “Location of Devices.csv” is a list of 72 cameras with five columns: Name, Network Name, Device Type, Lat, and Lng. It is not an audit log. We copied it unchanged to unprocessed/Location-of-Devices.csv.
The released names give a month but rarely a year. We named each file by the month its rows fall in. The rule: parse Search Time (format %m/%d/%Y, %I:%M:%S %p UTC) as UTC, convert it to America/Chicago, and take the year and month. Every row in 22 of the 23 audit files falls in a single Central month. The rule needs Central time. Under UTC, the last hours of each month spill into the next month in 15 files. The network “June 2025.csv” holds June 30, 2025 only, so we named it 2025-06-30-network-audit.csv. The network “June to end.csv” holds June 1–10, 2026, so we named it 2026-06-01-to-10-network-audit.csv. The org “June 1st to end 2026.csv” spans two months and needed the first change below.
#Changes
We made two changes. Every other staged file is a byte copy of its released file.
- Org audit, “June 1st to end 2026.csv.” The file holds 592 rows from May 11 through June 10, 2026. Its 513 May rows also appear in the org “May.csv,” with the same ID and identical content in every field. “May.csv” has 513 rows from May 11 onward, and all of them appear in “June 1st to end 2026.csv.” We kept the rows whose Search Time falls on or after June 1, 2026, 00:00 Central. That keeps 79 rows and drops 513. A rule that drops every row whose ID appears in “May.csv” keeps the same 79 rows in the same order. A June 1 cutoff in UTC keeps 91 rows, so the cutoff must use Central time. The output is
2026-06-01-to-10-org-audit.csv. - Network audit, “April.csv.” The file holds 6,658 rows. Two rows appear twice, identical in every field. The pairs sit at data rows 3,286–3,287 and 3,289–3,290 (counting from 1). Their IDs are
84b8f5fa-f19a-40f3-aaa8-04c5fa85080band19cc7ab4-38ac-4db9-936c-86835398d72b. We kept the first copy of each and dropped the second, leaving 6,656 rows. The output is2026-04-network-audit.csv.
Both rewritten files keep the released header line byte for byte, including its LF. Python’s csv module writes the data rows with every field quoted, LF line endings, and no byte-order mark. Row order matches the released file. This script rebuilds both files:
import csv
from datetime import datetime
from zoneinfo import ZoneInfo
CT = ZoneInfo("America/Chicago")
UTC = ZoneInfo("UTC")
def search_time_ct(row):
t = datetime.strptime(row[9], "%m/%d/%Y, %I:%M:%S %p UTC")
return t.replace(tzinfo=UTC).astimezone(CT)
def read(path):
with open(path, newline="") as f:
header = f.readline()
return header, list(csv.reader(f))
def write(path, header, rows):
with open(path, "w", newline="") as f:
f.write(header)
csv.writer(f, quoting=csv.QUOTE_ALL, lineterminator="\n").writerows(rows)
# Org audit "June 1st to end 2026.csv": keep June 1, 2026 onward (Central)
header, rows = read("org/June 1st to end 2026.csv")
cutoff = datetime(2026, 6, 1, tzinfo=CT)
write("2026-06-01-to-10-org-audit.csv", header,
[r for r in rows if search_time_ct(r) >= cutoff])
# Network audit "April.csv": drop exact duplicate rows, keep first copy
header, rows = read("network/April.csv")
seen, kept = set(), []
for r in rows:
if tuple(r) not in seen:
seen.add(tuple(r))
kept.append(r)
write("2026-04-network-audit.csv", header, kept)#Staged files
| Staged CSV | Released file | Rows | SHA-256 | Method |
|---|---|---|---|---|
2025-06-org-audit.csv | org June 2025.csv | 1,035 | 97123c178cad8d39afe6fed6da8c507ce38f13c38c85221aeb4a153d961db64e | byte copy |
2025-07-org-audit.csv | org July.csv | 472 | 395c5d905ed378ef28cd817fc18b2792d6964cd86959f64ab50e5b26c158cbd6 | byte copy |
2025-08-org-audit.csv | org August.csv | 726 | 161cd29d9811d53d786139b5bf742e7e6c8c18bc16ec4491de44d1695a4fba14 | byte copy |
2025-09-org-audit.csv | org September.csv | 718 | f8683b996b2ef179a5f0567e4345733bdee669a5ae30bd5814757cf4fc647e00 | byte copy |
2025-10-org-audit.csv | org October.csv | 852 | 8f058971c1faad2d929f4bce777a71f6cd6de250fcc37ca668cf394a2df96af3 | byte copy |
2025-11-org-audit.csv | org November.csv | 469 | 8c5ba3e32b60f1f5313c59a9036c687cbaea18325cdb0c33417e4d9e9d15fcb0 | byte copy |
2025-12-org-audit.csv | org December.csv | 650 | 089d26cc49428f07af6a879edec9f36a67d3ddfa0ef6b62fb1143fa27b16cd39 | byte copy |
2026-01-org-audit.csv | org January.csv | 750 | 782f4d32f0c2fcc47ea33f6c6634bf30f2e3df79fa3dcc60e25b9ab0e65c3dcc | byte copy |
2026-02-org-audit.csv | org February.csv | 415 | 7222bde0b0091d60ee6e5820f8c878e46b2021b5aeb53c359d2ffcea70a45f0f | byte copy |
2026-03-org-audit.csv | org March.csv | 561 | 296fb8927b5cb44551af93fbb41292af55cbabc0222755ac283207c7215549ab | byte copy |
2026-04-org-audit.csv | org April.csv | 425 | d680334eef2ee22f5a387e5984dd0b74acc73dac0eead42f60c191bcf5065ffb | byte copy |
2026-05-org-audit.csv | org May.csv | 642 | 682bbe5138c92def6b1ab05c58792512bdd25133ecf0b7dcfb59eaf6fb0404dd | byte copy |
2026-06-01-to-10-org-audit.csv | org June 1st to end 2026.csv | 79 | b8900ec52a066b4cec22ac1f923f31f1407a61d870bc7be44eb445b90f709e7d | rewritten |
2025-06-30-network-audit.csv | network June 2025.csv | 1,667 | a9e7757c893b5c90c498bfc3deffc181b0bdcc2e938870732e88a132b0d2eac6 | byte copy |
2025-08-network-audit.csv | network August.csv | 15,940 | 4401d3acddfae6966caefae358566f1831dba6adf254b041ce68a8b8b5162516 | byte copy |
2025-10-network-audit.csv | network October.csv | 7,677 | d57310386030427adf3cca8322cbf35ab4767604527ae152d5f9819014c4a448 | byte copy |
2025-11-network-audit.csv | network November.csv | 6,683 | ff7d17ddc3a25a00f00b75ec357af9c81db7e7dbb3101ab271a693ac5ae9a4e0 | byte copy |
2025-12-network-audit.csv | network December.csv | 7,405 | 9ef6c84e708e8bf560cc052aed70fb58f4889a00de37cd6ba8f9aa639707303a | byte copy |
2026-01-network-audit.csv | network January.csv | 6,885 | e74672d77a4f851603f5918401743b8da61dd99a2b667a42ec2fc1a665fca3a5 | byte copy |
2026-02-network-audit.csv | network February.csv | 7,331 | 613f2c289a3c60ec8682948a4ce81f92cff6620e3e3e6130c163fab4a06b64cb | byte copy |
2026-04-network-audit.csv | network April.csv | 6,656 | b8fcfde99c72745b5772fd07c1e075dc0419fb4a8519db032708e56d07f053aa | rewritten |
2026-05-network-audit.csv | network May.csv | 8,342 | cfbe268ce426f4692091e496f026f832472502d8e3e81b0c29357c60905a2c81 | byte copy |
2026-06-01-to-10-network-audit.csv | network June to end.csv | 2,741 | 0e18f55254a487d5dc889a56e58535af5bbbedffd1972116c32ed81a7e129f79 | byte copy |
unprocessed/Location-of-Devices.csv | Location of Devices.csv | 72 | 09a1c451f61c75f6902c972fd01913777d1f17a4ad4db4cc917379425ec036b3 | byte copy |
Row counts exclude the header. The org audit totals 7,794 rows and the network audit totals 71,327.
#Checks that changed nothing
- No other audit file has a repeated ID or a repeated row.
- No ID appears in more than one org audit file, apart from the 513 rows described above.
- No ID appears in more than one network audit file.
- 3,182 network audit rows carry the Org Name “Ardmore OK PD.” Each of their IDs also appears in the org audit. We kept these rows in both series, because each series is a separate log.
- After conversion to Central time, the network audit has no rows from June 1–29, 2025, July 2025, September 2025, or March 2026. The release contains no network file for those dates, so we staged none.
- Search Time values are in UTC in every file. We left them as released.
#Anomalies
#Missing network audit months
The network audit files cover these dates:
- June 30, 2025 only. The file labeled “June 2025” holds a single day.
- August 2025
- October 2025 through February 2026
- April and May 2026
- June 1–10, 2026
The files contain no network audit records for June 1–29, 2025, July 2025, September 2025, or March 2026. The org audit covers every month from June 2025 through June 10, 2026.
#Network volume in early August 2025
The network audit lists 9,375 searches from August 1–7, 2025. It lists 6,565 for the rest of August. The daily count fell from 1,553 on August 7 to 269 on August 8. Ten Oklahoma agencies appear in the first week of August and nowhere later in the network audit.
#Test records
The org audit has 11 records with the reason “test.” Jacob Welch entered 10 and Tavin Richards entered one, between August 29 and November 2, 2025.
The network audit has 286 records with “test” or “testing” in the reason, from 23 agencies. The most common values are “test” (95), “Jugging test” (38), and “Test” (27).