← Back to all posts

building an imessage clone to view epstein's text messages

Recently, I’ve been having a lot of fun contributing to a project called jmail.world

JMail started as a way to view the thousands of emails and files released by the House Oversight Committee in a cloned Gmail interface. It’s since expanded into a whole suite of apps JPhotos, JFlights, JAmazon, and so on. Each allow you to browse the Epstein files as if you were logged into Epstein’s personal computer.

When I first came across the project, I thought it was so incredibly clever. The dump of original documents that were released were in a very unreadable PDF form, making it a pain/damn near impossible to meaningful build context across multiple files or to search through the endless amounts of information released. Presenting the data through a familiar, user-friendly interface is so nice & I think makes for a much more enjoyable experience combing through the files.

I helped build jMessage, an interface for viewing Epstein’s text messages. (heheh, the worldplay works out nicely since lowercase ‘i’ and lowercase ‘j’ look actually quite similar).

Along the way, I ran into many interesting things that I observed/learned!

  • The first task on the docket is figuring out how to parse the message data from 20,000+ pages of PDF documents. This was actually a bit intimidating at first due to the sheer amount of files that existed + the fact that messages with one person were often buried across multiple files. Here is an example of what a message document looks like:
  • Thankfully, someone had done a lot of the hard work already & I didn’t have to start from scratch.I found a repo made by @michelcrypt4d4mus. For those curious, they downloaded all the documents, OCR’d them & classified & filtered for messages files.

  • An interesting challenge is trying to de-anonymize all of the message files because many of the messages released had the ‘sender’ name redacted or anonymized.

  • And because of the aforementioned challenge, judgement calls were made about who redacted recipients might be. This is was a best-guess based on conversational style, dates, location, metadata, asking LLMs, and crowdsourcing. Because this project has so much virality & traction, we have people who will reach out with tips about incorrect attributions, and I can correct the information. I also added a warning modal to warn people of possible incorrect attributions.

  • Looking through the files, I started to realize how sloppy the redaction job for these files was. I ran into documents where sensitive information (like phone numbers) were left underacted & also discovered that some documents were only visually redacted, and you could see text hidden by redaction by simply copying and pasting the text. Apparently this is not the first time something like this has happened & people put much more trust into black rectangles than they should. I imagine this is somewhat the consequence of trying to release all the files on a deadline.

  • I then wrote a script that read the messages, grouped the messages by person, then timestamp, and outputted the organized information in a JSON.

  • “Flooding the Zone with Shit” is a infamous media manipulation tactic often attributed to Steve Bannon/Trump Admin. This term refers to the strategy of purposefully overwhelming the public/media with so much information and controversy that people can’t focus on any singular story or scandal. This strategy is somewhat disarmed in the age of LLMs and embedding models that allow you to semantically search across massive amounts of data and surface information that would traditionally be like finding a needle in the haystack. Hobbyist and professional journalists alike can now enjoy the fruits of such technology!

  • I fully felt the prowess of Opus 4.5. With very light steering, I was able to vibe code almost all of the front-end of the page. The only thing Claude really struggled with was the tail on the text message bubble, which was eventually solved this by passing in a SVG shape struct.

  • I was especially excited to see people on reddit discussing jMessages. It’s always rewarding to see people use, discuss, & find value in something I made, but I feel that this whole project especially has attracted a strong, niche user base who follow and use our project quite heavily.