Due Diligence Agents
Open-source forensic M&A due diligence: 13 AI agents read your data room across 9 domains, connect findings no single reviewer catches, and trace every one to an exact page and quote.
- Source repo
- zoharbabin/due-diligence-agents
- Stars
- ★ 111
- Last updated
- 1mo ago
- License
- Apache-2.0
- Primary language
- Python
- FA score
- 72/100 · Some gaps
At a glance
- How it runs
- Works with
- Universal · cross-platformClaude API
- Cost
- Free software; you pay for model usage
- Setup effort
- Low · running in minutes
- You'll need
- Typical use
- A corp dev team screening hundreds of targets runs
--quick-scanfor a GREEN/YELLOW/RED red-flag signal in minutes before committing to full analysis. - Not a fit if
- Users expecting it to replace qualified legal/financial advisors' conclusions
- Organizations that cannot run Python 3.12+ or adapt their runtime
- Source review
- 72/100 · Some gaps
What does this agent do, and when should you use it?
Due Diligence Agents is an open-source M&A due diligence system driven by the `dd-agents` CLI. It reads an entire data room (PDF, Word, Excel, PowerPoint, images) and analyzes every document through 9 parallel domain specialist agents: Legal, Finance, Commercial, ProductTech, Cybersecurity, HR, Tax, Regulatory, and ESG. A 38-step Python pipeline with 5 blocking quality gates runs cross-domain analysis using symbolic trigger rules, plus 4 orchestration agents including a Judge and an Executive Synthesis agent. Every finding carries severity, an exact page-and-quote citation, and cross-references, producing an interactive HTML report, a 16-sheet Excel report, and per-subject JSON. Analysis runs locally; documents leave your machine only as API calls to your configured LLM endpoint, with no telemetry and a read-only data room. Built by Zohar Babin, the author reports it has been battle-tested across multiple completed acquisitions.
The core flow: dd-agents run deal-config. starts the pipeline, where a Python orchestrator runs 38 steps and 9 domain specialists analyze every data-room document in parallel, each tracing findings to exact page, section, and quote. A cross-domain analysis layer uses symbolic trigger rules to detect inter-domain dependencies (e.g., a termination clause in one contract plus revenue concentration risk on the same subject); an optional Judge agent adversarially spot-checks findings; merge & audit applies dedup, numerical checks, and citation verification across 31 QA checks; an Executive Synthesis agent calibrates severity and emits a Go/No-Go signal. Output lands in {data_room_path}/_dd/forensic-dd/runs/latest/ including report/dd_report.html (interactive report with a clause library and market-norm comparisons), report/dd_report.xlsx (16 sheets), audit., and per-subject JSON. Companion tools: dd-agents search prompts. --data-room ./data_room answers targeted contract questions with citations and verification scores in Excel; --quick-scan gives GREEN/YELLOW/RED triage; and post-run commands include chat, query, cost, portfolio compare, diff, and lineage. Agent personas are customized via dd-config/agents/*.md markdown files with no code changes.
- A corp dev team screening hundreds of targets runs
--quick-scanfor a GREEN/YELLOW/RED red-flag signal in minutes before committing to full analysis. - A PE firm runs the full pipeline on portfolio targets and uses
dd-agents portfolio addandportfolio compareto track and compare risk across deals. - A legal team uses
dd-agents searchwith a JSON prompts file to ask specific questions across hundreds of contracts (e.g., is consent required on change of control) and get an Excel report with answers, citations, and verification scores. - A deal team preparing an IC memo or negotiation checklist filters findings by severity in the interactive HTML report and verifies each to its exact page and quote.
- An M&A advisor on a compressed timeline needs the cross-domain risk picture — legal, financial, and commercial flags on the same subject connected — that siloed advisor reports never assemble.
How do you install or deploy this agent?
Prerequisites: Python 3.12+ and an Anthropic API key (or AWS Bedrock, Google Vertex AI, or an Anthropic-compatible gateway).
Recommended install (includes PDF extraction):
bash
pip install 'dd-agents[pdf]'Alternatives:
bash
brew install zoharbabin/due-diligence-agents/dd-agents
docker pull zoharbabin/due-diligence-agents:latest
pip install dd-agents # core only (no PDF extraction)
pip install 'dd-agents[vector]' # + ChromaDB semantic search
pip install 'dd-agents[ocr]' # + OCR for scanned docs (English)Note: the optional [pdf] extra installs pymupdf, which is AGPL-3.0 licensed — if you redistribute software bundling pymupdf, AGPL copyleft terms apply.
How do you use this agent?
Set your key and run:
bash
export ANTHROPIC_API_KEY="sk-ant-..."
dd-agents auto-config "Buyer Corp" "Target Inc" --data-room ./data_roomdd-agents doctor --config deal-config.
dd-agents run deal-config.
Results appear at {data_room_path}/_dd/forensic-dd/runs/latest/report/dd_report.html — open it in your browser.
Quick triage without the full pipeline:
bash
dd-agents run deal-config. --quick-scan --model-profile economyGenerate a config without any API calls:
bash
dd-agents init --data-room ./data_roomOrganize the data room into folders by subject or counterparty; PDFs, Word, Excel, PowerPoint, and images are supported, with OCR for scanned PDFs. The minimal config requires config_version, buyer.name, target.name, deal.type, deal.focus_areas, and data_room.path.
What are this agent's strengths and limitations?
- Cross-domain cross-referencing is the core differentiator: symbolic trigger rules automatically connect findings from different domains on the same subject (e.g., termination clause + revenue concentration risk) — exactly what siloed reviewers miss.
- A substantial trust layer: 31 QA checks, 5 blocking quality gates that halt the pipeline on failure,
numerical_manifest.tracing every financial figure to source, and every finding bound to an exact page and quote. - No vendor lock-in: model and provider are switchable via env config (Anthropic API, AWS Bedrock, Google Vertex AI, or any model behind an Anthropic-compatible gateway — GPT, Gemini, DeepSeek, local), verifiable with
dd-agents doctor. - Explicit privacy design: local execution, no telemetry, read-only data room, and API keys never stored in output artifacts; agent personas are markdown-customizable with safety rules that can never be removed.
- Requires Python 3.12+ and paid LLM API calls — a full pipeline over a large data room can incur significant token costs (
dd-agents costgives per-provider rollups, but the source gives no typical cost range). - The optional
[pdf]extra depends on AGPL-3.0 pymupdf; redistributing software that bundles it triggers copyleft obligations. - Explicit positioning statement: the tool does not replace professional advisors — legal, financial, and regulatory conclusions must be made by qualified professionals.
- Billing through a model provider means document content is sent as API calls to a cloud LLM endpoint; deals with sensitive data require reviewing the data-handling details in SECURITY.md.
How does this agent compare with similar options?
Key facts side by side with the most closely related agents.
| Agent | Source review | Form / cost | Stars | Updated | Language | Full support on |
|---|---|---|---|---|---|---|
| Due Diligence Agents This agent | 72 · Some gaps | CLIFree + model costs | ★ 111 | 1mo ago | Python | Claude API |
| SwarmVault | 67 · Some gaps | CLIFree + model costs | ★ 696 | 2mo ago | TypeScript | Codex · Claude Code |
| PipesHub Enterprise AI Context Platform | 66 · Some gaps | Self-hosted serviceFree + model costs | ★ 3.8k | 2d ago | Python | — |
| LLM Wiki Agent | 52 · Major gaps | Agent plugin / skillFree + model costs | ★ 3.6k | 6d ago | Python | Codex · Claude Code |
How does FollowAgents rate this agent?
Why each dimension lost points
README/SECURITY.md claim local execution, read-only data room, no telemetry, env-var-only keys, Bash guard and SSRF limits. However, these are assertions; no implementation code (e.g., the Bash guard) is present in the provided files, and no user-confirmation gate appears anywhere. Deducted for unverified security claims and absence of confirmation mechanisms.
Layered CI (lint, mypy strict, unit/integration/E2E), per-test timeouts, shared SDK mocks, resumable pipeline steps. But user-facing failure message quality has no direct evidence beyond 'halts on quality failures'. Deducted for unshown error handling.
Clear audience (corp dev, PE, legal), multi-provider support, multiple install paths, agent customization via markdown. Cross-domain symbolic trigger rules are only described in one sentence with no rule detail. Deducted for unstatically-verifiable trigger precision.
Well-organized docs, examples, semver 1.18.0, full Apache-2.0 text, disciplined pyproject, proactive AGPL-3.0 (pymupdf) disclosure. Maintenance rests on a single named individual with no governance evidence; changelog content itself not shown. Deducted accordingly.
Multiple output formats (HTML/Excel/JSON), quick-scan, rich post-run tooling, sample report. Cost has per-provider rollup and economy profile but no concrete cost estimates. Deducted for indirect cost-benefit evidence only.
Page-and-quote citation is the core claim, backed by citation fixtures, audit., numerical_manifest. design. But fact/inference separation has no explicit schema evidence, and the 31 QA checks are described not shown. Deducted for missing implementation detail of verification mechanisms.
- Security claims (Bash guard, SSRF limits, no telemetry) are asserted in docs but no implementation code appears in the reviewed files; audit the source independently.
- All data-room documents leave the machine as LLM API calls to the configured endpoint; assess outbound data risk for sensitive deal files, especially with third-party gateways.
- Agent personas are user-editable markdown; the claim that safety rules can never be removed is not verifiable from the provided code.
- Maintenance depends on a single individual; the 48-hour vulnerability response commitment is a personal pledge, not an organizational one.
- Optional pymupdf dependency is AGPL-3.0 — copyleft applies if you redistribute a bundle.
- The 'battle-tested across multiple completed acquisitions' claim cannot be statically verified and should not be a procurement basis.
FAQ
Does my data leave my machine during analysis?
Am I locked into Anthropic models?
dd-agents doctor.What does running it cost?
--quick-scan with --model-profile economy offers a low-cost first read, and dd-agents cost gives a per-provider/per-model cost rollup for each run.What happens if quality fails mid-run?
dd-agents assess ./data_room checks data room quality before a run.