Diligence
Diligence is a native macOS app I built to do the grind of pre-investment scrubbing: cross-checking what a pitch deck claims against what the data room can actually prove.
What it does
Point it at a deck and a data-room folder, and it runs a four-step pipeline:
- Extract claims. Claude reads the deck and pulls out ~40–100 atomic, checkable claims — ARR, customer names, dates, growth rates, capabilities.
- Fan out. One Claude subagent per top-level data-room folder runs in parallel. Each walks its folder, opens the files it needs, and checks the claims against the evidence.
- Find the gaps. Each subagent reports contradictions (deck says X, the data says Y) and gaps (a claim with no supporting document), with claim numbers and verbatim quotes.
- Report. Everything is aggregated into a PDF and CSV, ranked by severity (Critical → High → Medium → Low).
It reads PDF, DOCX, PPTX, XLSX, EML, and TXT, so it handles a real data room as-is.
How it’s built
- Backend — FastAPI + uvicorn, streaming progress over Server-Sent Events so you watch each folder get scanned live.
- Agent loop — a tool-use loop over the Anthropic Messages API; subagents get a
read_file/list_dirtoolset scoped to their folder. - Reports — generated with reportlab (PDF) and a matching CSV.
- Desktop shell — a Python entry point launches the server in a background thread and opens it in a native macOS WKWebView window via pywebview, with native file/folder pickers. Packaged into a standalone
.appwith PyInstaller.
Get it & set up
The code is on GitHub — use the Source link above. It ships with my code, not my credentials — you bring your own API key.
1. Build the app.
git clone https://github.com/stephenhefekta/diligence.git
cd diligence
bash build.sh # produces dist/Diligence.app
Drag Diligence.app to your Applications folder. It isn’t notarised by Apple, so on first launch right-click it → Open → Open.
2. Add your Anthropic key. Create a file at ~/Developer/diligence/.env with:
ANTHROPIC_API_KEY=your-claude-key # console.anthropic.com
The key stays on your machine and is sent only to Anthropic’s API. You pay your own usage.
Why I made it
Diligence is pattern-matching at scale — exactly the kind of work that’s tedious for a person and natural for a model. Surfacing the handful of places a deck and its data room disagree, with the receipts attached, turns a day of cross-referencing into a few minutes of review.