# Color Highlighted Epstein Emails and Text Messages

![joi](https://github.com/michelcrypt4d4mus/epstein_text_messages/raw/master/docs/joi_ito_gavin_is_clever_epstein_funds_bitcoin_dev_team.png)

* The Epstein text messages (and selected emails and other files) generated by this code can be viewed [here](https://michelcrypt4d4mus.github.io/epstein_text_messages/).
* All of His Emails along with descriptions of the 496 files that were neither emails nor text messages can be read at [another page also generated by this code](https://michelcrypt4d4mus.github.io/epstein_text_messages/all_emails_epstein_files_nov_2025.html).
* [Word counts for all of the communications](https://michelcrypt4d4mus.github.io/epstein_text_messages/communication_word_count_epstein_files_nov_2025.html).
* Metadata containing what I have figured out about who sent or received the communications in a given file (and a brief explanation for how I figured it out for each file) is deployed [here](https://michelcrypt4d4mus.github.io/epstein_text_messages/file_metadata_epstein_files_nov_2025.json)
* [I Made Epstein's Text Messages Great Again (And You Should Read Them)](https://cryptadamus.substack.com/p/i-made-epsteins-text-messages-great) post on [Substack](https://cryptadamus.substack.com/p/i-made-epsteins-text-messages-great)


## Usage
#### Installation
1. Requires you have a local copy of the OCR text files from the House Oversight document release in a directory `/path/to/epstein/ocr_txt_files`. You can download those OCR text files from [the Congressional Google Drive folder](https://drive.google.com/drive/folders/1ldncvdqIf6miiskDp_EDuGSDAaI_fJx8) (make sure you grab both the `001/` and `002/` folders).
1. Use `poetry install` for easiest time installing. `pip install epstein-files` should also work, though `pipx install epstein-files` is usually better.


#### Command Line Tools
You need to set the `EPSTEIN_DOCS_DIR` environment variable with the path to the folder of files you just downloaded when running. You can either create a `.env` file modeled on [`.env.example`](./.env.example) (which will set it permanently) or you can run with:

```bash
EPSTEIN_DOCS_DIR=/path/to/epstein/ocr_txt_files epstein_generate --help
```

All the tools that come with the package require `EPSTEIN_DOCS_DIR` to be set. These are the available tools:

```bash
# Generate color highlighted texts/emails/other files
epstein_generate

# Search for a string:
epstein_search Bannon
# Or a regex:
epstein_search '\bSteve\s*Bannon|Jeffrey\s*Epstein\b'

# Show a file with color highlighting of keywords:
epstein_show 030999
# Show both the highlighted and raw versions of the file:
epstein_show --raw 030999
# The full filename is also accepted:
epstein_show HOUSE_OVERSIGHT_030999

# Count words used by Epstein and Bannon
epstein_word_count --name 'Jeffrey Epstein' --name 'Steve Bannon'

# Diff two epstein files after all the cleanup (stripping BOMs, matching newline chars, etc):
epstein_diff 030999 020442
```

The first time you run anything it will take a few minutes to fix all the janky OCR text, attribute the redacted emails, etc. After that things will be quick.

The commands used to build the various sites that are deployed on Github Pages can be found in [`deploy.sh`](./deploy.sh).

Run `epstein_generate --help` for command line option assistance.

**Optional:** There are a handful of emails that I extracted from the legal filings they were contained in. If you want to include these files in your local analysis you'll need to copy those files from the repo into your local document directory. Something like:

```bash
cp ./emails_extracted_from_legal_filings/*.txt "$EPSTEIN_DOCS_DIR"
```


#### As A Library
```python
from epstein_files.epstein_files import EpsteinFiles
epstein_files = EpsteinFiles.get_files()

# All files
for document in epstein_files.all_documents():
    do_stuff(document)

# Emails
for email in epstein_files.emails:
    do_stuff(email)

# iMessage Logs
for imessage_log in epstein_files.imessage_logs:
    do_stuff(imessage_log)

# JSON files
for json_file in epstein_files.json_files:
    do_stuff(json_file)

# Other Files
for file in epstein_files.other_files:
    do_stuff(file)
```

# Everyone Who Sent or Received an Email in the November Document Dump
![emails](https://github.com/michelcrypt4d4mus/epstein_text_messages/raw/master/docs/emailers_info_table.png)
