Turn a manual process into adaptable execution
The marketing head was moving prospect research and outreach drafts between Clay, Apollo and spreadsheets by hand. Nirvaan worked with him to define the requirements, then designed and built the pipeline end to end. It needed to support different starting points, from a product and ideal customer profile to a curated company list, event speakers or a Google Maps area.
Keep pipeline progress in shared state
He made each step independently selectable, so a run used only the modules its input and goal required. He used RabbitMQ to distribute work and PostgreSQL as the shared source of truth for pipeline state. Browser automation and agent tools carried out execution; Twenty gave the operator a view of the live pipeline.
Before a step, workflow code controls step order, persisted state, RBAC and permitted tools. The LLM reasons inside that permitted step. After model output, code validates the result before execution; sending remains behind approval of the exact content.
Continue after a worker fails
A machine, browser session or agent can fail without making its local context the only record of the run. Another worker can continue from shared PostgreSQL state. RabbitMQ handles work distribution, while persisted pipeline state keeps progress available across workers. This separation makes recovery part of the execution design.
Approve the exact action
The operator reviews the exact outreach content before sending. Approval stays bound to that reviewed content, keeping the human decision attached to the external action. Twenty lets the operator inspect progress, change strategy or sender and take over when needed. Automation carries the repetitive research and execution while the operator retains authority.
Fetched web pages are information to analyse. Output is validated in code, browser automation uses separate sandboxed profiles, and a check that cannot confirm a result stops the run and asks. This keeps model reasoning and untrusted input separate from approval authority.
Capacity with an operator in control
The pipeline was designed for capacity of more than 200 companies and roughly 1,000 people per day. The marketing head could spend more time staying current and planning ahead, rather than moving work between tools. Twenty kept progress visible and let him change strategy, switch senders or take over.
Proposed next iteration
The next iteration would add an evaluation harness for research quality, end-to-end tracing and explicit duplicate-send handling. Together, those would make it easier to compare workflow changes, follow a run across workers and review recovery at the point where an external action happens.