footnote4a

Mass surveillance, government contracts, and other bedtime reading.

Data update: Alachua County FL SO (Mar 2025 – Jul 2026)

4,295 network audit records from Alachua County FL SO covering four one-month windows in 2025 and 2026.

by HaveIBeenFlocked Team
10 min read
logs
florida

Alachua County is in north central Florida. Gainesville is the county seat. About 292,000 people live in the county.

We loaded 4,295 Flock network audit records from the Alachua County Sheriff’s Office. The records cover four one-month windows: March 24 – April 23 and June 4 – July 4, in both 2025 and 2026.

Every record is a search by the Florida Fish and Wildlife Conservation Commission (FWC). The files include no other agencies’ searches.

  • Type: Network audit
  • Timespan: Mar 24 – Apr 23 and Jun 4 – Jul 4, in 2025 and 2026 (four one-month windows)
  • Records: 4,295
  • Organizations (network): 1
  • Search types: search (2,540), lookup (1,537), freeform (119), lookup - Mobile (99)
  • License plate: 3,507 masked as *** (81.7%); 788 blank
  • Case #: 1,907 masked as *** (44.4%); the rest blank

Every plate and case number that is filled in reads ***. Every operator name reads ***. Times below are Eastern time.

#2025 and 2026

The four files cover the same two date windows in each year.

WindowRecordssearchlookuplookup - MobilefreeformMedian networks searched
Mar 24 – Apr 23, 20251,6091,42917640727
Jun 4 – Jul 4, 20258667877900762
Mar 24 – Apr 23, 20269221906418471,532
Jun 4 – Jul 4, 2026898134641111121,559

FWC ran 42.7% fewer searches in the spring 2026 window than in spring 2025: 922 against 1,609. The summer counts stayed close, at 866 in 2025 and 898 in 2026. Across both windows, the total fell 26.5%, from 2,475 to 1,820.

The search mix changed. search entries made up 89.5% of 2025 records. lookup and lookup - Mobile entries made up 75.7% of 2026 records.

The typical 2026 search reached about twice as many networks as in 2025. The median “Total Networks Searched” rose from 727 and 762 in the 2025 windows to 1,532 and 1,559 in the 2026 windows. The largest 2026 search reached 6,230 networks.

The June – July 2025 file has no records after July 2, 2025.

#Search types

TypeCount%
search2,54059.1%
lookup1,53735.8%
freeform1192.8%
lookup - Mobile992.3%

#Reasons

The reason format changed between years. In 2025, operators typed free text. The 2025 files hold 154 distinct reasons. In 2026, every reason pairs an offense category with an investigation type, such as “Other - Resource Investigation”. The 2026 files hold 33 distinct reasons.

#2025

Most 2025 reasons ask to identify a vehicle or a person. They read “Vehicle ID” or “Subject ID” followed by a surname, or name a person’s “workup”.

Reason patternCount%
Identify a vehicle or person, or a “workup”1,54962.6%
fwc or investigation alone36114.6%
An FWC or other agency case number1867.5%
Other37915.3%

Searches tied to one surname make up 598 of the 1,609 spring 2025 records (37.2%). Searches tied to a second surname make up 318 of the 866 summer 2025 records (36.7%). Other 2025 reasons include “Illegal Take of Turkey” (37), “Missing person” (11), and “Potential Threat to FWC Employee” (7).

#2026

ReasonCount%
Other - Resource Investigation72439.8%
Trespass - General Criminal Investigation1669.1%
Immigration (criminal) - I.C.E.1307.1%
Other - General Criminal Investigation894.9%
Immigration (civil/administrative) - General Criminal Investigation864.7%
Illegal Dumping/Littering - General Criminal Investigation784.3%
Animal Offenses (cruelty/neglect) - General Criminal Investigation764.2%
Other - Fraud Investigation693.8%
Larceny/Theft Offenses - General Criminal Investigation673.7%
Destruction/Damage/Vandalism of Property - General Criminal Investigation663.6%
Immigration (civil/administrative) - I.C.E.532.9%
Animal Offenses (cruelty/neglect) - Resource Investigation452.5%
Trespass - Resource Investigation412.3%
Illegal Dumping/Littering - Resource Investigation241.3%
Financial Crime (Embezzlement/Fraud) - Fraud Investigation221.2%
Other (18 reasons)844.6%

All 76 “Animal Offenses (cruelty/neglect) - General Criminal Investigation” records fall on June 12, 2026.

#Report highlights

#Immigration

288 records give an immigration reason. All of them are from 2026. No 2025 reason mentions immigration, ICE, or deportation. Immigration reasons account for 107 of the spring 2026 records (11.6%) and 181 of the summer 2026 records (20.2%). 190 of the 288 name “I.C.E.” as the investigation type. 146 cite criminal immigration and 142 cite civil or administrative immigration.

#Low-level offenses

317 records cite trespass or illegal dumping and littering. 314 of them are from 2026: trespass (207) and illegal dumping or littering (107). The other three are from spring 2025, all “criminal trespass”.

#Freeform searches

119 records are freeform searches, all from 2026. A freeform search describes a vehicle in words instead of a plate number. 112 fall in the summer 2026 window. 92 of those 112 prompts mention a trailer. The two most repeated prompts are “Silver Ford truck with stickers on back window pulling trailer” (29) and “black ford truck with topper towing small trailer” (28). Two prompts describe a trailer sign that reads “caution live alligators”. Flock’s moderation marked all 112 prompts “allow”. 95 of the 119 freeform records give the reason “Other - Resource Investigation”.

The seven spring 2026 freeform records carry no prompt text and no moderation value.

#How we processed the files

The four staged CSVs can be rebuilt byte for byte from the four released files. Two staged files are exact copies. One staged file adds a header row. One staged file comes from a spreadsheet.

#Released files

Released fileBytesSHA-256
3_24_2025-4_23_2025-Alachua County FL SO-Network-Audit - FWC.csv327764984e1603a40182154368ca1d101a71cab7cc27832486e4ed745e5d3731e8aa55
6_4_2025-7_4_2025-Alachua County FL SO-Network-Audit - FWC.csv174750d47dbbb30e327996934eef56a28c56ba55cfbc6978d5346c503f4c97b89dfd15
3_24_2026-4_23_2026-Alachua County FL SO-Network-Audit.csv2111567593248440f19020c9cb5513c9b5b5a27fb062ddd0c7a8be3420c21d4cbf67fc
6_4_2026-7_4_2026-Alachua County FL SO-Network-Audit FWC.xlsx8998328f9e4165d8569fc77dced20248999a7ad2ab72ce88df8ee0de7c625374979fc

The XLSX holds one visible sheet, named 060426 - 070426 Alachua County with a trailing space. It has 899 rows (one header row and 898 data rows) and 13 columns, A1:M899. It has no hidden rows, no hidden columns, and no merged cells.

#Changes, in order

  1. Rename. Each file takes the name YYYY-MM-DD_YYYY-MM-DD-Alachua-County-FL-SO-Network-Audit. The suffix -FWC follows when the released name ends in FWC. The extension is .csv. The rename touches no bytes.

  2. Copy two CSVs unchanged. The March–April 2025 and March–April 2026 CSVs are staged as exact copies. All 1,609 and 922 records keep their original bytes, CRLF row endings included.

  3. Add a header to the June–July 2025 CSV. The released file has no header row. Its first line is a data record with 11 fields. We wrote one header line in front of the released bytes. The header uses the same leading space after each comma as the other files’ headers. It ends in a bare LF (\n), not CRLF. The 866 data records below it are unchanged, CRLF row endings included. The file grows by 122 bytes.

    header = (
        b"ID, Name, Org Name, Total Networks Searched, Time Frame, License Plate,"
        b" Reason, Case #, Filters, Search Time, Search Type\n"
    )
    src = "6_4_2025-7_4_2025-Alachua County FL SO-Network-Audit - FWC.csv"
    out = "2025-06-04_2025-07-04-Alachua-County-FL-SO-Network-Audit-FWC.csv"
    with open(src, "rb") as f:
        body = f.read()
    with open(out, "wb") as f:
        f.write(header + body)
  4. Convert the XLSX to CSV. We ran packages/data-load/scripts/xlsx_to_csv.py inside the project virtualenv with Python 3.12.15, pandas 2.3.3, and openpyxl 3.1.5. The script reads each sheet with pd.read_excel(..., dtype=str, keep_default_na=False). It writes each sheet with csv.writer(quoting=csv.QUOTE_ALL, lineterminator="\n") to a file opened with encoding="utf-8" and newline="". The output has no BOM. The script strips NUL bytes from every cell. It writes empty cells as "". It names the output after the sheet, so we renamed 060426 - 070426 Alachua County.csv to the staged name. The output has 898 data records and 13 columns. Every field is quoted, and every line ends in LF. The XLSX stores Total Networks Searched as integers, and the CSV writes them as plain digits such as "762". The sheet holds no NUL bytes, so the strip removed nothing. The sheet has 2,375 empty cells, in License Plate, Filters, Text Prompt, and Moderation. Each became "".

    source .venv/bin/activate
    python packages/data-load/scripts/xlsx_to_csv.py \
      "6_4_2026-7_4_2026-Alachua County FL SO-Network-Audit FWC.xlsx" out/
    mv "out/060426 - 070426 Alachua County.csv" \
      2026-06-04_2026-07-04-Alachua-County-FL-SO-Network-Audit-FWC.csv

#Staged files

Staged CSVSourceRecordsSHA-256
2025-03-24_2025-04-23-Alachua-County-FL-SO-Network-Audit-FWC.csv3_24_2025-4_23_2025-…-Network-Audit - FWC.csv1,609984e1603a40182154368ca1d101a71cab7cc27832486e4ed745e5d3731e8aa55
2025-06-04_2025-07-04-Alachua-County-FL-SO-Network-Audit-FWC.csv6_4_2025-7_4_2025-…-Network-Audit - FWC.csv86626d2c8d9b98eedde9ee11fa75f0ffc6f6a3b45447db2af28b971215b73fa79bd
2026-03-24_2026-04-23-Alachua-County-FL-SO-Network-Audit.csv3_24_2026-4_23_2026-…-Network-Audit.csv9227593248440f19020c9cb5513c9b5b5a27fb062ddd0c7a8be3420c21d4cbf67fc
2026-06-04_2026-07-04-Alachua-County-FL-SO-Network-Audit-FWC.csv6_4_2026-7_4_2026-…-Network-Audit FWC.xlsx, sheet 060426 - 070426 Alachua County 898af14352c46af5d17c1f73bd735b1d122c9f65b535ae7ea0f4964c84b75192977

The four files hold 4,295 records. We rebuilt all four staged files from the released files with the steps above, and each SHA-256 matched.

#What we checked and left unchanged

  • No staged CSV has a BOM, a NUL byte, or a non-ASCII byte.
  • Every record in each file has the same field count as its header: 13 in three files, 11 in the June–July 2025 file.
  • No staged CSV has a duplicate ID, a duplicate row, or a blank row.
  • Every Time Frame cell holds a line break between its start and end dates. The released CSVs use a bare LF inside that quoted cell and CRLF between rows. We kept both. Line counts from wc -l therefore run about double the record counts.
  • The released headers keep a leading space before every column name after ID. We kept the spaces.
  • The June–July 2025 file lacks the Text Prompt and Moderation columns. We did not add them.
  • Search Time keeps its released form, such as 03/24/2025, 01:54:17 PM UTC. We converted no times.
  • *** masks in Name, License Plate, and Case # stay as released.

#Anomalies

#Test records

Two spring 2025 records give the reason “test”.