Unlock Historical Insights from JFK Documents

An open-source tool that downloads, processes, and summarizes JFK assassination records using AI, making historical research more accessible.

JFK Portrait

Key Features

Powerful tools for historical document analysis

PDF Processing

Download and extract text from PDFs using a high-performance Rust NIF with the extractous crate.

AI Summarization

Leverage LangChain and OpenAI to generate concise, informative summaries of complex historical documents.

JFK Document Access

Browse and access official JFK assassination records from the National Archives with ease.

How It Works

A powerful combination of technologies

JFK Assassination
1

Document Acquisition

The application downloads PDF documents from URLs or allows users to upload their own files.

2

Text Extraction

A high-performance Rust NIF extracts text content from PDFs using the extractous crate.

3

AI Summarization

The extracted text is processed through LangChain and OpenAI to generate concise, informative summaries.

4

Presentation

Results are displayed in a clean, user-friendly interface, with options to view both the original text and the summary.

Getting Started

Set up your own instance in minutes

Setup & Installation

Prerequisites

  • Elixir 1.18+
  • Erlang/OTP 27+
  • Rust and Cargo
  • OpenAI API key

Installation

Clone the repository and install dependencies:

git clone https://github.com/epinault/jfk_pdf_summarizer.git
cd jfk_pdf_summarizer
mix deps.get

Configuration

Set up your environment

Configuration & Running

API Key Configuration

Create a config/dev.secret.exs file with your OpenAI API key:

import Config

# LangChain configuration with OpenAI
config :langchain,
  openai: [
    api_key: "your_openai_api_key_here"
  ]

# Set the OpenAI API key as an environment variable
config :openai,
  api_key: "your_openai_api_key_here"

Running the Application

Compile and start the Phoenix server:

mix compile
mix phx.server

Visit http://localhost:5000 in your browser to use the application.

Why This Project Exists

Making historical research more accessible

JFK White House

Democratizing Access to Historical Documents

The JFK assassination records contain thousands of pages of documents that are challenging to process manually. This project aims to make these historical records more accessible to researchers, historians, and the general public.

Leveraging Modern Technology

By combining the power of Elixir, Rust, and AI, we've created a tool that can quickly process and summarize complex documents, saving researchers countless hours of manual work.

Open Source Collaboration

This project is open source to encourage collaboration and improvements from the community. We believe that by working together, we can create better tools for historical research and document analysis.