Audit a political email fundraising program using AI and public archives
Quickly audit a political organization's fundraising email strategy by turning publicly archived emails into a dataset and using AI to identify messaging patterns, fundraising tactics, and opportunities for improvement.
Use case: Comms & Messaging · Time saved: ~1 day of manual research and analysis
Steps
Collect Emails
Identify the organization you want to analyze using the Political Emails archive. Click through multiple pages of the archive (typically 50 emails per page) and export the pages as PDFs. These pages contain links to each email along with visible metadata like sender, subject, and date. This creates the starting dataset of emails to analyze.
Tools: PoliticalEmails.org
Structure the Dataset
Upload the PDFs to ChatGPT and ask it to extract the visible metadata (sender, subject, date, and message URL) into a CSV. This produces a structured dataset of all the email links that will be used for scraping the full message content.
Tools: ChatGPT (OpenAI)
Extract Full Messages
Use an automation workflow to fetch the full HTML of each email message. The workflow reads the list of URLs from a Google Sheet, sends HTTP requests to each page, and uses a Javascript snippet written by ChatGPT to parse the HTML to extract the email message body. The structured results are written back to a Google Sheet with columns for Sender, Subject, Date, and Message. This produces a clean dataset of the full email corpus.
Tools: n8n, Google Sheets, ChatGPT (OpenAI)
Analyze Program Strategy
Provide the full dataset of emails to Claude along with context about how political email fundraising programs work. You can include: • guidance on what makes a strong fundraising program • documentation for the email platform the organization uses • instructions to analyze patterns in messaging, frequency, framing, and calls to action Claude then produces a detailed strategic brief identifying patterns, strengths, and opportunities for improvement in the program.
Tools: Claude (Anthropic)