Skip to content

Repository files navigation

Dossier - Lead Intelligence

A Mac app that sources leads, researches them with AI, and writes personalized cold emails.

macOS Python 3.10+ customtkinter MIT License


Background

I built the first version of this during my freshman fall semester. I was cold emailing finance firms for internships and the bottleneck was research. Finding the right person, reading their site, digging for a real deal to mention, then writing something that did not sound like a template. Doing that by hand for one firm took half an hour, and I needed to reach a lot of firms.

So I wrote a tool to do the boring parts. It pulled the contacts, scraped the research, and drafted the email with an actual hook in it. I ran my own outreach through it that semester and it landed interviews and coffee chats I would not have gotten otherwise.

The original was hardcoded to me, my school, my resume, the whole thing. Dossier is that tool cleaned up and made general, so anyone recruiting can point it at their own targets and send in their own voice.

What it does

Point Dossier at the kind of firms you want (private equity, venture capital, investment banking, M&A advisory, growth equity, private credit) and it runs the outreach pipeline for you:

  1. Source decision-makers from Apollo with filters for titles, seniority, industry, headcount, revenue, and email-verification status.
  2. Research each company and person from their website, LinkedIn, and Google (via Serper) to find named deals, funds, portfolio companies, and career moves.
  3. Qualify every lead with an LLM that flags firms doing real deals and skips platforms, media, and $0 AUM shops.
  4. Write a personalized cold email for each lead using the best research hook available, in your voice.
  5. Track everything in an Excel workbook and send through your own Gmail.

The default config targets finance recruiting, but the firm filters, qualification rules, and email prompt are all editable for any B2B outreach.

Features

  • Tiered hook system. Person-specific hooks rank above company hooks, which rank above generic descriptions, so every email leads with the most specific thing you know.
  • Deal-execution filter. An LLM qualifier that separates firms doing deals from firms only writing about them.
  • Bring your own keys. API keys go in the macOS Keychain. They never touch the repo or sit on disk as plaintext.
  • Your profile, your voice. Name, descriptor, credentials, and signature are set in the app and pulled into every email. None of it is hardcoded.
  • Excel-native. Writes leads to a spreadsheet and leaves your existing formula columns alone.
  • Gmail OAuth send. Sends from your account with your resume attached and a greyed signature like Gmail's.

Quick start (macOS)

You need Python 3.10+ (python3 --version). If you don't have it: brew install python or grab it from python.org.

git clone https://github.com/ManiForoughi2/Dossier.git
cd Dossier
./run.sh

On first launch run.sh creates a local virtual environment, installs dependencies, and opens the app. After that it just launches.

Prefer to do it by hand?

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python main.py

First-time setup

The onboarding wizard walks you through it, or open Settings any time:

You'll need Where to get it Required?
Apollo API key apollo.io → Settings → Integrations → API Yes
OpenAI or Anthropic key platform.openai.com / console.anthropic.com Yes (one of)
Serper key serper.dev (free tier) Optional, improves research
Gmail OAuth A gmail_credentials.json from a Google Cloud OAuth client Optional, only for sending

Fill in Your Profile in Settings (name, how you describe yourself, credentials, signature, resume path) so generated emails sound like you.

Build a standalone .app

To package a double-clickable macOS app bundle:

pip install -r requirements-build.txt
./build.sh

The signed .app lands in dist/Dossier.app.

Screenshots

Dashboard Leads Email Generator
Dashboard Leads Email Generator

How it works

Apollo search ─▶ web research ─▶ LLM qualify ─▶ email generation ─▶ Excel + Gmail
                (site/LinkedIn/Serper)         (per-lead hooks)
app.py                Main window, sidebar nav, shared AppState
config.py             Constants, paths, prompt templates
core/
  apollo_client.py    Apollo people/org search + enrichment
  web_researcher.py   Site + LinkedIn scraping, Serper fallback
  qualifier.py        LLM deal-execution classifier
  llm_client.py       OpenAI / Anthropic wrapper
  email_generator.py  Hook-tiered cold email writer
  excel_manager.py    Reads/writes the leads workbook
  gmail_sender.py     Gmail API OAuth send
  keychain.py         macOS Keychain for API keys
ui/                   customtkinter frames and components

Privacy & data

  • API keys are stored in the macOS Keychain, not in files.
  • Preferences and the leads cache live in ~/Library/Application Support/Dossier/.
  • Nothing is sent anywhere except the APIs you configure (Apollo, your LLM provider, Serper, Gmail).

Contributing

Issues and pull requests welcome. The codebase is plain Python and customtkinter with no build step for development. Clone, run ./run.sh, and edit.

License

MIT. Do what you want, no warranty.


Dossier is an independent project and is not affiliated with Apollo, OpenAI, Anthropic, Google, or Serper.

About

Mac app that sources leads, researches them with AI, and writes personalized cold emails for finance recruiting.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages