deep-diligence: Deep Diligence: The Open-Source Agent That Keeps Investigating After It Sends the Email

A multi-agent due diligence system that goes beyond RAG, combining web research, browser automation, and asynchronous outreach into one persistent workflow.

8 min read • View on GitHub • More from Adam-CAD

A wide editorial scene of an analyst desk turned into a relay station. Documents and browser pages flow into an orchestrator wheel that splits work into specialist lanes, then an envelope and phone handset send evidence back into the same system after a delay. The image explains how the project turns diligence into a persistent investigation instead of a one-shot search.
Deep Diligence is built around a loop, not a session. It can research, contact, wait, and resume with new evidence.
Key Takeaways

Most AI research tools stop at retrieval. Deep Diligence is built to keep going after it has already acted in the world. It can search, delegate, send email, place calls, wait for replies, and pick the investigation back up later with fresh evidence.

That shift matters because diligence is not a chat problem. It is a state problem. Facts arrive late, replies are partial, and the best next move depends on what happened after the last tool call, not just what the model saw at the start.

Why This Agent Is Different

The sharpest idea in this repo is simple: an agent should not have to finish before the world responds. Deep Diligence treats outreach as part of the research loop, so a reply to an email or a transcript from a phone call can re-enter the workflow as evidence, not as an afterthought.

That makes the system feel less like a demo and more like an operating process. The project is not trying to summarize the internet faster. It is trying to verify claims the way a real analyst team would.

A close-up editorial scene showing an outbound email leaving a tray, passing through a small gate labeled by its shape as a wait token, then reappearing later as a returned reply dropped into an open notebook. A phone handset nearby releases a rolled transcript that lands beside the same notebook. The image explains how delayed responses re-enter the agent's working state.
The key mechanic is not sending. It is yielding, waiting, and resuming with the reply attached to the same case file.

The Analyst Team Inside One Repo

The architecture is structured around an orchestrator and specialist sub-agents. The orchestrator takes the project goal, breaks it into work streams, and delegates to focused agents for corporate research, founder research, and contact verification. It is closer to a small case management system than a single prompt wrapped in tools.

The repo’s architecture looks less like a chatbot and more like a research office with dispatch, specialists, and callback loops.

RoleWhat it doesWhy it matters
OrchestratorBreaks the goal into tasks and manages the planPrevents the system from becoming one giant prompt
Corporate agentChecks registries, filings, and entity structureFinds whether the company is real and how it is organized
Founder agentLooks across biographies, profiles, and newsBuilds a credibility picture around the people involved
Contact agentReaches out by email and phoneTurns research into direct verification
Database stateStores projects, agents, messages, and conversationsLets the investigation survive pauses and returns

That separation of concerns is the project’s real discipline. Each agent has a bounded lane, and the database keeps the evidence attached to the case instead of scattering it across one-off runs.

The Wait-and-Resume Trick

This is where Deep Diligence jumps past ordinary agent tooling. It uses Trigger.dev wait tokens so an agent can send a message, pause without losing context, and resume later when a webhook delivers the reply or transcript. In other words, the workflow does not block in a fragile process. It yields into durable background state.

Email uses plus-addressing to route replies back to the right conversation. Phone calls use conversational voice tooling, then return with analysis and transcripts. In both cases, the reply is not a fresh prompt. It is reinjected into the same investigation trail.

Goal -> Orchestrator -> Sub-agent
Sub-agent -> send email / start call
Action -> wait token
Webhook reply -> conversation record
Conversation record -> rehydrate agent context
Context -> orchestrator follow-up or close case

That design changes the unit of work. Instead of a completion prompt, the system has a lifecycle: plan, dispatch, wait, absorb new evidence, decide again. That is the right shape for diligence.

Why State Matters More Than Prompts

The schema tells the same story as the tooling. Tables such as project_researches, subagents, subagent_messages, email_conversations, and phone_conversations make the investigation queryable and resumable. The agent is not pretending to remember. The system is actually storing the case file.

That distinction is easy to miss if you only look at the prompt layer. But it is the difference between a clever demo and something that can survive a multi-day research cycle with partial failures, delayed replies, and handoffs between tools.

Browser Automation, But With Judgment

The repo also uses Firecrawl and browser-use-sdk, which matters because diligence rarely stops at static HTML. Some facts sit behind buttons, dynamic pages, or workflows that need a human-like click path. Browser automation becomes the sensory layer that catches what simple scraping misses.

That is a subtle but important move. The system does not treat the browser as a vanity feature. It treats browsing as one more way to gather verifiable signals when a page cannot be reduced to a clean fetch.

How It Compares to Ordinary AI Research Tools

CapabilityConventional AI research assistantDeep Diligence
One-shot browse and summarizeYesYes
Multi-agent delegationUsually shallow or absentBuilt in through orchestrated specialists
Persistent state across sub-tasksLimitedCore design principle
Outbound email verificationRare or simulatedNative workflow
Phone outreachAlmost neverFirst-class tool path
Resume after delayed replyNoYes
Browser interaction beyond static scrapingSometimesYes
Research traceabilityOften weakExplicitly stored in project and conversation tables

The comparison is blunt for a reason. Most AI research tools retrieve and summarize. Deep Diligence delegates, persists, contacts, waits, and verifies. That is not a better chatbot. It is workflow infrastructure.

What This Repo Suggests About the Future of Diligence

The broader implication is bigger than one repo. Deep Diligence compresses a messy, human process into software that can survive time, delay, and follow-up. That makes it interesting not just as an agent demo, but as a preview of how research work may be operationalized.

If the system works as intended, the analyst is no longer the only place where context lives. The workflow itself becomes the memory. And once that happens, the line between research assistant and research operation starts to disappear.