Lucius-Morningstar/enron-correspondence-dedup
Enron Correspondence Deduplicated (Enriched GT, Agent-Blind Default) The deduplicated, ground-truth-enriched Enron correspondence benchmark: exact-duplicate bodies removed from the cleaned CMU Enron corpus (517,390 rows in → 247,523 unique-text rows out, 269,867 duplicates dropped; first occurrence wins on maildir-path order; empty bodies never deduped against each other). This dataset is the core evaluation corpus for the LLM Mailroom agent-sorting stack. ⚠️… See the full description on the dataset page: https://huggingface.co/datasets/Lucius-Morningstar/enron-correspondence-dedup.
Enron Correspondence Deduplicated (Enriched GT, Agent-Blind Default)
The deduplicated, ground-truth-enriched Enron correspondence benchmark: exact-duplicate bodies removed from the cleaned CMU Enron corpus (517,390 rows in → 247,523 unique-text rows out, 269,867 duplicates dropped; first occurrence wins on maildir-path order; empty bodies never deduped against each other). This dataset is the core evaluation corpus for the LLM Mailroom agent-sorting stack.
⚠️ Two-config layout: agents get NO answers by default
This dataset ships TWO configs. `default` is agent-blind — it carries the email content plus routing metadata and ZERO ground-truth columns. The answer keys live in the separate ground_truth config, keyed 1:1 on filename.
from datasets import load_dataset
# what a sorting/extraction agent may see:
blind = load_dataset("Lucius-Morningstar/enron-correspondence-dedup")
# what the scorer joins against (explicit opt-in):
gt = load_dataset("Lucius-Morningstar/enron-correspondence-dedup",
"ground_truth", split="test")Ground truth is hidden from the default config so automated agents cannot be tipped off; humans can still audit every label in the viewer by switching to the ground_truth config. This is separation of concerns, NOT encryption — the Hub is public and any deliberate download can fetch both configs.
File layout
Both configs point at pre-sharded parquet (parquet/<config>/<split>/*.parquet, zstd). The original blind/*.jsonl and ground_truth/*.jsonl files remain in the repo unchanged — row-for-row identical to the parquet shards (same order, same schema; verified 2026-08-23) — for pipelines that prefer line-delimited JSON. The single-file 548 MB blind/train.jsonl crashed the Dataset Viewer's conversion worker (JobManagerCrashedError); serving parquet directly removes that conversion step entirely.
A machine-readable build manifest (manifest.txt) records schema version, row counts, and the dedup/enrichment provenance chain.
Ground-truth dimensions
- doc_type / subclass (
expected,expected_subclass,label_evidence) — heuristic form taxonomy from the shared `correspondence_subclasses` labeler: attorneydemand, demand, email, letter, meetingrequest, memo, notice, press_release. - content_topic (
content_topic,topic_evidence) — WHAT the message body is about: an 11-key priority-scored marker taxonomy (`content_topics.py`): legalcontracts, regulatory, financeearnings, energymarket, hrpersonnel, itsystems, travellogistics, marketing_clients, announcements, scheduling. - sentiment (
sentiment_score∈ [-1, 1],sentiment_label∈ negative/neutral/positive,sentiment_evidence) — deterministic lexicon polarity over the subject + forwarded-tail-stripped body (`sentiment_scorer.py`), negation/intensifier-aware, politeness-formula controlled.
All three dimensions are HEURISTIC ground truth (deterministic pure functions, human-reviewed via spot checks where noted) — not hand annotations. Honest gaps: single-topic assignment for multi-topic emails; head-window scanning (~2000 chars); lexicon sentiment cannot read sarcasm or long-range context — treat scores as weak labels/routing priors. Attorney detection relies on domain/name lists; voicemail cannot occur in this text-only corpus.
Splits
Per-row split follows the family rule md5(filename) % 10 == 0 -> test (~10%), recomputed and asserted row-by-row at build time. Filename-keyed, so dedup/enrichment cannot change any surviving row's split. Coverage: train 222,572 / test 24,951.
Source data & original download
All content derives from the CMU Enron Email Dataset — Bryan Klimt and Yiming Yang, Carnegie Mellon University, 2004. Original public download source: https://www.cs.cmu.edu/~enron/
- Roughly 500,000 messages from ~150 Enron employees, released by the Federal Energy Regulatory Commission during the fraud investigation and cleaned and published for research by CMU.
- We ingest the cleaned
maildirvariant; each row preserves its provenance inmetadata.source(cmu_enron_maildir),metadata.custodian,metadata.folder, andmetadata.message_id. - The full-corpus export step (sha256-verified, 517,390 rows) was produced by `publish_enron_correspondence.py`; dedup uses
body_hashfrom `scripts/dedupe.py` in Enron-Evaluation-Environment.
Licensing and appropriate use
- Released for research use, consistent with the original CMU Enron release terms (recorded per-row in
metadata.license: "Enron corpus — released for research use"). Hub license badge:research-only-enron-corpus(custom,license: other). - The corpus contains real personally identifying information (names, addresses, phone numbers) of Enron employees and correspondents. Treat all rows as sensitive research data: no redistribution of raw PII outside research contexts, and no use in production or consumer-facing systems.
- Label columns are deterministic heuristics (see honest-gaps notes above), suitable as routing priors and weak supervision — not as gold human annotation.
- Provided as-is, with no warranty of any kind. Downstream users are responsible for complying with the original CMU/FERC terms.
Related projects
- LLM Mailroom — the agentic email-triage system this benchmark evaluates; the blind/ground-truth split exists precisely so sorting agents can be scored without label leakage.
- Enron-Evaluation-Environment — labelers (
correspondence_subclasses.py,content_topics.py,sentiment_scorer.py) and the dedup rule (scripts/dedupe.py::body_hash). - llm-entity-extraction — dataset publishing pipelines (
scripts/datasets/publish_enron_*.py). - Companion Hub datasets from the same family: legalbench-full, docclass-merged, mailroom-cuad-contracts, mailroom-cuad-contracts-full.
Note: an earlier companion repo Lucius-Morningstar/enron-correspondence (the pre-dedup full corpus) is no longer published on the Hub; reproduce it with publish_enron_correspondence.py instead.
Citation
If you use this dataset, please cite both the dataset and the underlying corpus:
@misc{morningstar2026enroncorrespondencededup,
title = {Enron Correspondence Deduplicated (Enriched GT, Agent-Blind Default)},
author = {Lucius-Morningstar},
year = {2026},
month = {August},
howpublished = {\url{https://huggingface.co/datasets/Lucius-Morningstar/enron-correspondence-dedup}},
}
@inproceedings{klimt2004enron,
title = {The Enron Corpus: A New Dataset for Email Classification Research},
author = {Klimt, Bryan and Yang, Yiming},
booktitle = {European Conference on Machine Learning (ECML 2004)},
pages = {217--226},
year = {2004}
}Provenance
Built by `llm-entity-extraction` scripts/datasets/publish_enron_correspondence_dedup.py (KANBAN-079, 2026-08-23T18:52:37+00:00) from the sha256-verified full-corpus export (LFS 0554a5973935…). Labelers and dedup rule: Enron-Evaluation-Environment scripts/ (correspondence_subclasses.py, content_topics.py, sentiment_scorer.py, dedupe.py). Source: CMU Enron Email Dataset (cleaned maildir). Parquet shards added 2026-08-23 (same-day viewer fix, verified row-for-row against the JSONL originals).
Maintenance
Issues and fixes: llm-entity-extraction issues or contact @Lucius-Morningstar on the Hub.
