Matt1up/guertin-mcro-forensic-corpus
Guertin MCRO Forensic Corpus The public court record of State of Minnesota v. Matthew David Guertin (Hennepin County, 27-CR-23-1886) and 2,902 other Minnesota dockets, collected from Minnesota Court Records Online (MCRO) — the Minnesota Judicial Branch's public access to its own case records — together with the database built from them, screen recordings of the collection, four federal cases, the email record, and a forensic analysis of all of it. Every filing is the PDF the… See the full description on the dataset page: https://huggingface.co/datasets/Matt1up/guertin-mcro-forensic-corpus.
Guertin MCRO Forensic Corpus
The public court record of State of Minnesota v. Matthew David Guertin (Hennepin County, 27-CR-23-1886) and 2,902 other Minnesota dockets, collected from Minnesota Court Records Online (MCRO) — the Minnesota Judicial Branch's public access to its own case records — together with the database built from them, screen recordings of the collection, four federal cases, the email record, and a forensic analysis of all of it. Every filing is the PDF the court's system served, and 4,206 of the 4,251 carry the court's own MCRO Watermark signature. Assembled by Matthew David Guertin, the defendant in 27-CR-23-1886 and the inventor named on US 11,577,177 B2, between April 2024 and September 2026.
The full story: The Story · Where the data led: A Patent Worth Billions. An Inventor to Dispose Of. · Human Disposal as Lawfare
At a glance: 4,251 court filings · 2,903 dockets (2,078 criminal, 787 civil commitment, 38 guardianship) · 155,357 docket events · 11,645 hearing entries · 606,037 SHA-256-hashed text lines · a PostgreSQL database (53 tables, about 2.9 million rows) published as 144 Parquet tables · 16 screen-recorded capture sessions · 4 federal cases · 8 repositories, 62,439 files, 71.14 GB.
The 24 days
The full dated spine is the story_timeline table: 281 rows with source_ref, evidence_path and check columns. The patents on the author's site: Netflix Patent Theft — Guertin US 11,577,177 B2 vs. Scanline VFX
What the data shows
Every measurement below reproduces from this repository. Download the tables (see Using the data) and run the queries with DuckDB from the repository root.
Set A is the seed of the collection: the 163 criminal cases that appear on all three hearing calendars searched on 2024-04-28 — Referee Danielle Mercurio, Referee George Borer and Judge Julia Dayton Klein, hearings 2023-01-01 through 2024-04-26. 27-CR-23-1886 is one of the 163.
1. One case file in 163 reads like writing by a person
- The word `hello` occurs in 1 of the 163 case files — [27-CR-23-1886](https://huggingface.co/datasets/Matt1up/guertin-mcro-forensic-corpus-court-filings/blob/main/parents-pdf/27-CR-23-1886.pdf), 37 times. The text of the other 162 never contains it.
- 1,068 common English words (from the 10,000 most frequent words of the Brown corpus) occur in exactly one of the 163 case files, and that file is 27-CR-23-1886. The case with the next-most such words has 44.
- Controlled for size, 27-CR-23-1886 ranks first of 163 at 70.92 such words per 10,000 tokens; the next case has 20.91.
- Blind test. A model with no knowledge of the project read 60 redacted excerpts — 30 from 27-CR-23-1886 and one from each of 30 other cases — and labeled each one human-authored or templated. It labeled 15 excerpts human-authored: all 15 are from 27-CR-23-1886. It labeled none of the 30 excerpts from other cases human-authored. Five more runs in fresh, isolated sessions — one on the same prompt, four on redacted copies that also replace other names, dates, numbers, addresses, contact details and company names — labeled 19, 18, 18, 18 and 19 excerpts human-authored, every one from 27-CR-23-1886, and none from the other cases. The prompt, excerpts and ground truth are in `language-analysis/pass-b/phase5_llm_classification/`; the redacted copy, all five runs and a scoring script are in `language-analysis/blind-test-2026-09-14/`. Run it on any model.
The vocabulary measurements come from the language-analysis package (`language-analysis/`: two passes of the same pipeline with their scripts, and a combined write-up in `language-analysis/final/`).
<details><summary>Check <code>hello</code></summary>
WITH cohort AS (SELECT DISTINCT evidence_uid FROM 'tables/public/children_case_set.parquet' WHERE value = 'MCRO'),
txt AS (SELECT h.case_id, lower(r.text_clean) AS t
FROM 'tables/public/hashpack_rows.parquet' r
JOIN 'tables/public/hashpack.parquet' h USING (evidence_uid)
WHERE r.evidence_uid IN (SELECT evidence_uid FROM cohort))
SELECT case_id, sum(len(regexp_extract_all(t, '\bhello\b'))) AS hello
FROM txt GROUP BY case_id HAVING hello > 0;
-- 27-CR-23-1886 | 37</details>
The author's write-up: Missing Words. Newspeak.
2. Competency evaluations and findings, by set
Evaluation ordered = the docket has an "Order-Evaluation for Competency to Proceed (Rule 20.01)". Found incompetent = the docket has "Found Incompetent" or "Finding of Incompetency and Order".
<details><summary>Check the table</summary>
WITH s AS (SELECT DISTINCT trim(case_set_json, '"') AS set_tag, case_uid
FROM 'tables/public/parents_case_set.parquet' WHERE trim(case_set_json, '"') IN ('A', 'B', 'C')),
e AS (SELECT case_uid,
bool_or(event_name = 'Order-Evaluation for Competency to Proceed (Rule 20.01)') AS evaluated,
bool_or(event_name IN ('Found Incompetent', 'Finding of Incompetency and Order')) AS incompetent
FROM 'tables/public/parents_case_events.parquet' GROUP BY case_uid)
SELECT set_tag, count(*) AS cases,
count(*) FILTER (WHERE evaluated) AS evaluated,
count(*) FILTER (WHERE incompetent) AS incompetent,
count(*) FILTER (WHERE evaluated AND incompetent) AS incompetent_of_evaluated
FROM s LEFT JOIN e USING (case_uid) GROUP BY set_tag ORDER BY set_tag;</details>
3. From a finding of incompetency to civil commitment
The 163 seed cases belong to 77 people (the author's cluster_id groups one person's cases across spellings of the name). Across all 412 of their cases — 282 criminal, 125 civil commitment, 5 guardianship:
- 69 of the 77 were found incompetent in a criminal case.
- 45 of those 69 have a civil-commitment case. None of the other 8 does.
- Of the 69, 39 (56.5%) have a commitment order (initial, continued or recommitment), 23 (33.3%) an Order Authorizing Use of Neuroleptic Medications, and 17 (24.6%) a petition, affidavit or order for ECT or other intrusive treatment.
<details><summary>Check the counts</summary>
WITH people AS (SELECT DISTINCT p.cluster_id FROM 'tables/public/parents.parquet' p
JOIN 'tables/public/parents_case_set.parquet' s USING (case_uid)
WHERE trim(s.case_set_json, '"') = 'A'),
ev AS (SELECT p.cluster_id, p.case_type, e.event_name FROM 'tables/public/parents.parquet' p
LEFT JOIN 'tables/public/parents_case_events.parquet' e USING (case_uid)
WHERE p.cluster_id IN (SELECT cluster_id FROM people)),
f AS (SELECT cluster_id,
bool_or(case_type = 'CR' AND event_name IN ('Found Incompetent', 'Finding of Incompetency and Order')) AS incompetent,
bool_or(case_type = 'MH') AS commitment_case,
bool_or(case_type = 'MH' AND event_name IN ('Order for Commitment', 'Order for Indeterminate Commitment',
'Order for Temporary Commitment', 'Order for Commitment and Treatment with NTP',
'Order for Continued Commitment', 'Order for Recommitment')) AS commitment_order,
bool_or(case_type = 'MH' AND event_name IN ('Order Authorizing Use of Neuroleptic Medications',
'Order for Commitment and Treatment with NTP')) AS neuroleptic_order,
bool_or(case_type = 'MH' AND event_name IN ('Affidavit in Support of Imposed Treatment by ECT or NTP',
'Petition for Authorization to Impose Treatment ECT', 'Findings and Order for Intrusive Treatment')) AS ect_or_intrusive
FROM ev GROUP BY cluster_id)
SELECT count(*) AS people,
count(*) FILTER (WHERE incompetent) AS found_incompetent,
count(*) FILTER (WHERE commitment_case) AS with_commitment_case,
count(*) FILTER (WHERE commitment_case AND NOT incompetent) AS commitment_case_never_found_incompetent,
count(*) FILTER (WHERE commitment_order) AS commitment_order,
count(*) FILTER (WHERE neuroleptic_order) AS neuroleptic_order,
count(*) FILTER (WHERE ect_or_intrusive) AS ect_or_intrusive
FROM f;
-- 77 | 69 | 45 | 0 | 39 | 23 | 17</details>
The author's write-up: 77 Defendants — What a 15-Month Hearing Search Surfaced
4. Orders with no text of their own
The corpus holds 157 filings titled "Finding of Incompetency and Order". Every text line of every PDF is SHA-256 hashed (hashpack_rows.row_sha256). In 118 of the 157 (75.2%), every line also occurs in at least one other of these orders — no line of text belongs to that order alone.
<details><summary>Check</summary>
WITH d AS (SELECT evidence_uid FROM 'tables/public/children.parquet' WHERE filing_type = 'Finding of Incompetency and Order'),
r AS (SELECT DISTINCT evidence_uid, row_sha256 FROM 'tables/public/hashpack_rows.parquet'
WHERE evidence_uid IN (SELECT evidence_uid FROM d)),
shared AS (SELECT row_sha256, count(DISTINCT evidence_uid) AS n_orders FROM r GROUP BY row_sha256)
SELECT count(*) AS orders, count(*) FILTER (WHERE unique_lines = 0) AS orders_with_no_unique_line
FROM (SELECT r.evidence_uid, count(*) FILTER (WHERE shared.n_orders = 1) AS unique_lines
FROM r JOIN shared USING (row_sha256) GROUP BY r.evidence_uid);
-- 157 | 118</details>
The author's write-up: The Clone — Template Pipeline Font Injection
5. 138 cases on one calendar, the day the patent was granted
On 2023-02-14 — the day [US 11,577,177 B2](https://patents.google.com/patent/US11577177B2/en) was granted — Referee George Borer's 1:30 PM calendar lists 138 cases. Five months later the same referee signed the Finding of Incompetency in 27-CR-23-1886.
<details><summary>Check</summary>
SELECT hearing_judicial_officer_norm, hearing_date, hearing_time, count(DISTINCT case_id) AS cases
FROM 'tables/public/source_hearings.parquet'
WHERE hearing_date = DATE '2023-02-14' AND hearing_judicial_officer_norm = 'George Borer'
GROUP BY ALL;
-- George Borer | 2023-02-14 | 13:30:00 | 138</details>
6. What the files record about who made them
PDF metadata is written by the software that produced the file. The four Rule 20 evaluation reports in 27-CR-23-1886 (hub author-papers/fourth-report-2026-07-10/01__… to 04__…):
None of the four author fields names the examiner who signed the report.
Two orders in 27-CR-23-1886 carry another defendant's name in their document title: the 2023-06-14 Order for Continuance and the 2024-07-15 Order to Recuse are both titled "Contested Competency for Adrian Wesley (incompetent) (doctors disagree)". No other filing of the 4,251 carries that name in its title.
<details><summary>Check</summary>
exiftool -Title -Author -Producer "author-papers/fourth-report-2026-07-10/02__rule_20_exam_report__dr_adam_milz__2024-01-11/Jan-2024-Rule-20-Evaluation-Report.pdf"SELECT case_id, filing_date, filing_type, metadata__xmp_title
FROM 'tables/public/children.parquet' WHERE metadata__xmp_title ILIKE '%Adrian Wesley%';
-- 27-CR-23-1886 | 2023-06-14 | Order for Continuance | Contested Competency for Adrian Wesley (incompetent) (doctors disagree)
-- 27-CR-23-1886 | 2024-07-15 | Order to Recuse | Contested Competency for Adrian Wesley (incompetent) (doctors disagree)</details>
The author's write-ups: 2nd & 3rd Rule 20.01 Exam Reports — Same Author, Same XMP Toolkit · The Wesley File — Four Years, Four Oaths, One Forgery
7. The statute took effect after both findings
The operative sections of Minnesota's competency statutes (Minn. Stat. §§ 611.40–611.59) took effect on 2024-04-01. The earliest filing in the corpus whose text cites any § 611.40–611.49 section is dated 2023-10-09 (46 filings cite one). Both findings of incompetency in 27-CR-23-1886 — 2023-07-13 and 2024-01-17 — came before the statutes took effect.
<details><summary>Check</summary>
SELECT count(DISTINCT r.evidence_uid) AS filings_citing_611_4x, min(c.filing_date) AS earliest
FROM 'tables/public/hashpack_rows.parquet' r
JOIN 'tables/public/children.parquet' c USING (evidence_uid)
WHERE regexp_matches(r.text_clean, '611\.4[0-9]');
-- 46 | 2023-10-09</details>
The author's write-up: Minnesota Competency Statute 611.40–611.59
The author's thesis (`thesis/thesis.pdf`, 27 pages, 2026-06-07; online at /thesis/) builds on these measurements and tiers every claim.
Where the case stands
As of the MCRO register printed 2026-09-12 (court-filings `most-recent-events/Case Search - Minnesota Court Records Online__20206-09-12.pdf`, 27 pages):
- Seven [Rule 20.01](https://www.revisor.mn.gov/court_rules/cr/id/20/) evaluation orders: 2023-01-25, 2023-11-15, 2024-05-09, 2024-10-15, 2025-04-29, 2026-01-27, 2026-03-11.
- Four Rule 20 reports: 2023-03-10 (Rogstad), 2024-01-11 (Milz), 2024-12-20 (Cranbrook), 2026-07-10 (Barbo).
- Found competent on 2025-04-03 (Judge Koch); a new evaluation was ordered on 2025-04-29 (Judge Hudleston).
- Two pro se motions to dismiss, filed 2026-06-02 (Counts II–IV, Index #252) and 2026-08-20 (all charges, with prejudice, Index #266). No ruling on either appears in the register.
- 2026-07-13: three years from the first finding of incompetency (Minn. Stat. § 611.45, subd. 3(c)). The register shows no Notice of Intent to Prosecute and no § 611.49 continuing-supervision order through 2026-09-12.
- 2026-08-20: evidentiary hearing on the fourth report (Referee Skibbie), taken under advisement.
- Next: hearing on 2026-09-15 at 1:30 PM before Judge Sarah Hudleston.
The filed copies of both motions are in the same folder. The author's write-up: The Court's Own Words
The story as data
story_timeline rows are grouped into acts; threads (swimlanes) are biography, patent, patent_context, watching, correspondence, index_case, commitment_case, federal, collection and discovery.
Repository map
Every repository carries its own README.md and manifest.tsv (path, bytes, SHA-256 for every file).
This hub:
Using the data
from datasets import load_dataset
timeline = load_dataset("Matt1up/guertin-mcro-forensic-corpus", "story_timeline", split="train")
events = load_dataset("Matt1up/guertin-mcro-forensic-corpus", "public__parents_case_events", split="train")Every Parquet table is its own configuration, named <folder>__<table>: 113 tables from the 2026-03-10 CSV export (`tables/public/`, `tables/api/`) and 31 tables of the star-schema, inventory and provenance views computed from the 2026-03-10 dump (`tables/core/`, `tables/inv/`, `tables/prov/`). The database's tables, views and columns are described in `database/postgres/MCRO_export/MCRO__Database_Schema.md`.
To run the queries in this card locally:
hf download Matt1up/guertin-mcro-forensic-corpus --repo-type dataset --include "tables/*" --local-dir guertin-mcro
cd guertin-mcro && duckdbTo restore the full database (dumped by pgdump 18.3 from PostgreSQL 17.6; use pgrestore 18 or later):
createdb mcro
pg_restore --no-owner --no-privileges -d mcro database/postgres/MCRO_export/MCRO_Supabase__20260310.dumpThe database covers docket events through 2025-12-12; 2026 events are in the register printout and filings in court-filings `most-recent-events/`.
How it was collected
- Searches. On 2024-04-28, six MCRO hearing searches: the criminal and the probate/mental-health calendars of Referee Danielle Mercurio, Referee George Borer and Judge Julia Dayton Klein, for hearings 2023-01-01 through 2024-04-26. On 2025-06-27, seven upcoming-calendar hearing searches; on 2025-06-29, a case search (1,263 cases). Each search is a row in `tables/public/source.parquet`.
- The seed is the 163 criminal cases on all three criminal calendars (Set A).
- Filings. MCRO offers no bulk download. For each docket in turn, the author opened the docket and launched a custom Selenium script that downloaded every filing in it, switching ProtonVPN server locations on his router each time MCRO blocked one. Download windows: 2024-04-29/30 (3,596 filings), 55 filings of 27-CR-23-1886 from 2024-05 to 2024-09, 2025-11-19/26 (425) and 2025-12-08 (18); the other 157 file names carry no timestamp (122 of them are filings of 27-CR-23-1886 saved under descriptive names). The timestamp at the end of a filename is the signing time of the MCRO Watermark signature the court's system applied when it served the file. The full account: The Download
- Dockets were captured in 2024-04 (212), 2025-11 (599), 2025-12 (2,091, including all 787 civil-commitment and 38 guardianship dockets) and on 2026-03-29 (1).
- How cases entered (people / cases): seed 77 / 412 · comparison sets 354 / 807 · person-keyed searches 626 / 1,456 · related cases only 58 / 228 · total 1,115 / 2,903. Civil-commitment and guardianship dockets entered through each person's related cases.
- Capture sessions. Sixteen OneWayVideo sessions (started 2025-11-19 to 2026-05-13) recorded the screen while every downloaded file was hash-chained into bundles with OpenTimestamps proofs.
- Database. The files were parsed into PostgreSQL (Supabase); the dumps are dated 2026-03-03 and 2026-03-10, the CSV export 2026-03-10.
- Metadata eras. Filings downloaded in 2024 keep their original authoring metadata. Filings downloaded in November and December 2025 were served after MCRO converted its documents, so their PDF creation dates record the download.
How to verify
- Files. Each repository's
manifest.tsvlists every file with its size and SHA-256 (rows containing#are members inside tar archives):
awk -F'\t' 'NR > 1 && $1 !~ /#/ {print $3 " " $1}' manifest.tsv | sha256sum -c --quiet- Court signatures.
pdfsig "<filing>.pdf"lists the signatures inside a filing. A filing downloaded on 2024-04-30 shows, among others, "Minnesota Court Records Online (MCRO) Watermark" (O=State of MN Judicial Branch), signed at the time in its filename —…_20240430072357.pdfis signed Apr 30 2024 07:23:57. The full signature sweep across the corpus is `authentication/packages/MCRO_SigExtraction_Snapshot_2026-04-03T08-03-16Z.zip`. - Timestamps. OpenTimestamps proofs (
.ots) sit beside the files they cover; the per-file proofs for filings, extracted objects and docket pages are packed in court-filings `proofs/`.ots info <file>.otsprints the Bitcoin block a proof is anchored in;ots verify -f <file> <file>.otschecks it against a Bitcoin node, and opentimestamps.org checks it in the browser. - Capture sessions. Each bundle records the hash of the bundle before it; the session recording shows each download as it happened. The recorder and its verification pipeline: Matt1Up/One-Way-Video.
- Email. The
.emlfiles are exports from the author's Proton Mail mailbox. The DKIM results are the ones recorded at delivery in each message'sAuthentication-Resultsheader; the export rebuilt the MIME bodies, so a sender's body hash cannot be recomputed on the stored bytes (emails `method/eml_authentication_report.md`). - Federal cases. PACER documents from the RECAP archive (CourtListener), with the docket JSON and docket snapshots.
Records and the author's analysis
- Records — as served, captured or recorded: the court-filings, capture-sessions, federal-cases, emails, wayback-photorobot-2022 and hearing-media repositories; in this hub, `database/postgres/`, `tables/`, `authentication/`, and the four Rule 20 reports inside `author-papers/fourth-report-2026-07-10/`.
- Author's analysis — by Matthew David Guertin: `thesis/`, `reports/`, `database/reports/`, `packets/`, `author-papers/`, `language-analysis/`, and the
author_annotationcolumn ofstory_timeline. - Both — `provenance/` (the collection's search sets and working files, with the reports built on them) and `site-exhibits/` (exhibits as published on mncourtfraud.com, including records such as both patents).
The thesis and the timeline tier their claims: ESTABLISHED — reproducible by any reader from public files or the project database; DOCUMENTED — the strongly evidenced best explanation, with minor alternatives noted; REASONED — an inference, labeled as one.
Author's analysis and interactive viewers
mncourtfraud.com — the author's site, with the analysis and viewers over the same files:
- Story and analysis: /story/, /thesis/, /missing-words/, /the-download/, /human-disposal/, /courts-own-words/, /77/, /the-clone/, /2nd-and-3rd-rule20-reports/, /wesley/, /competency/, /netflix/
- Viewers: /source-files/ (filings and dockets), /evidence/ (capture-session playback), /transcripts/ (hearing card sets), /reports/, /federal-cases/, /emails/, /database/
- Large-file mirror: files.mncourtfraud.com · Substack: matt1up.substack.com
Author: Matthew David Guertin — mncourtfraud.com
License and citation
CC-BY-4.0.
@misc{guertin_mcro_forensic_corpus_2026,
author = {Guertin, Matthew David},
title = {Guertin MCRO Forensic Corpus},
year = {2026},
publisher = {Hugging Face},
url = {https://huggingface.co/datasets/Matt1up/guertin-mcro-forensic-corpus}
}