Back to cases
Agentic operationsMay 6, 2026

Agentic outbound research pipeline

Human search directions become candidate pools, suppression checks, company/contact research, approved outreach and follow-up tracking.

Case note

The implementation was treated as a small operating system: visibility first, ownership next, automation only after the workflow was clear.

70% less prepB2B salesSupabase
Agentic outbound research pipeline editorial cover

Use case

Turn an outbound idea into research, approved drafts and follow-up

The team writes a search direction: market, region, company size, buying signals and exclusions. The system does not try to send emails by itself. It first turns the brief into a clear search, then researches companies/contacts and creates a draft queue, and only after approval does it sync CRM, send/log the message and track follow-up.

Result: three traceable workflows cut preparation by about 70%, enforce two suppression gates and keep 100% of external sends behind human approval.

Workflow map

Three independent workflows in one outbound pipeline

Each workflow has its own trigger. They can run one after another, but they can also be used separately for intake, research, or approved sending.

Workflow 0 - Search Brief IntakeTrigger: email, chat, or manual requestWorkflow 1 - Research and Draft QueueTrigger: new search ready for investigationWorkflow 2 - Approved Outreach And Follow-UpTrigger: human-approved draftReplyComplete0. Receive requestEmail | chat | manualChannel1. Validate briefICP | region | constraintsOpenRouterEnoughinfo?2b. Ask detailsMissing | exampleResend2a. Create searchBrief | filters | goalSupabase3. Confirm startSearch acceptedResendSearch starts Workflow 1Allowed1. Load searchBrief | thresholds | limitsSupabaseBatch ruleThe search defines atarget company count.Each company follows its path.One blocked company does notstop the remaining pool.2. Candidate poolDiscover or load companiesTavily3. Validate accountCustomer | duplicate | ownedPython + CRMAllowed toinvestigate?ContinueNext companyQualified4. Deep researchWeb | signals | sourcesTavily5. Company scoreFit | pain | toolsOpenRouterCompanyqualified?ContinueNext companyContact fit6. Discover contactsRoles | email | LinkedInTavily7. Score contactsPersona | authority | angleOpenRouterContactqualified?ContinueNext contactClear8. Suppression checkEmail | domain | rulesPythonSuppressed?ContinueNext contact9. Draft outreachFirst touch | follow-upsOpenRouter10. Human reviewDraft pending approvalSupabase11. Human decisionApprove | edit | rejectApproval starts Workflow 2Clear1. Approved draftReviewer | versionSupabase2. Fetch contextDraft | company | contactSupabase3. Recheck suppressionBefore any sendPythonStillallowed?EndNo send4. Sync HubSpotCompany | contact | noteHubSpot5. Send outreachApproved message onlyResend6. Log activityEmail | timeline | ownerHubSpot7. Save follow-upSent | reply | next dateSupabaseEnd

Main database: Supabase

The workflow uses Supabase as the source of truth: it stores each record, status, and key event so the team can see what happened, retry failures, and debug without searching every tool.

Tool icons

SupabasePython/FastAPITavilyOpenRouterHubSpotResend

Pipeline rationale

This is not an outbound bot. It is a controlled sales operating system.

The agentic part is not a model sending messages on its own. It is the system breaking an ambiguous commercial job into smaller decisions: ask for context, research, discard, score, draft, wait for approval, send and record what happened.

Workflow 0 exists because human briefs rarely arrive perfect.

The system can ask for market, geography, company size, buying signals, exclusions and goal before spending research effort.

Workflow 1 exists because researching is not the same as sending.

This is where the pool is built, customers/duplicates are blocked, company/contact fit is scored and a review queue is prepared.

Workflow 2 exists because sending is an external action.

It only starts after human approval, rechecks suppression, then syncs HubSpot, sends and stores follow-up state.

Why the gates matter

  • Complete brief before investigation starts.
  • Customers, duplicates and owned accounts blocked before deep research.
  • Company must qualify before contacts are discovered.
  • Each contact must qualify before drafting.
  • Suppression checked before draft and again before send.
  • HubSpot and Resend touched only after human approval.

Add-ons that fit on top

Buyer intent and website-visit signals to prioritize warmer accounts.
Probable-tool inference: CRM, email, analytics, helpdesk, ecommerce or internal stack.
Competitor, hiring, funding/news and leadership-change research.
Separate scoring for company, contact, likely pain, timing and ability to pay.
Internal approval UI for editing messages without touching Supabase.
CSV/Google Sheet export for commercial review or reporting.
Follow-up sequences with pauses, limits, reply detection and stop rules.
Reply classification: interested, not now, wrong person, unsubscribe, bounce.
Weekly digest with searches, blocked accounts, approved drafts and replies.
Quality dashboard: sources used, research cost, approval rate and errors.
Owner assignment by territory, industry or existing account portfolio.
Low-cost testing mode with simulated research before using real web search.

The starting point

Outbound research was not one task. It started with a human direction, then required candidate discovery, duplicate/customer suppression, company and contact research, message drafting, approval, CRM sync, sending and follow-up checks. Reps could do it manually, but the quality depended on who researched, which sources they checked and whether they remembered the approval and follow-up steps.

The diagnosis used real volume, connected tools, decision points and exceptions. The question was not only what to automate, but what proof would show that the workflow had completed correctly. The operating proof mattered as much as the automation.

The implementation

Ductio split the work into three independent workflows that can also run one after another. Workflow 0 accepts a research brief by email or another channel, asks for missing information and creates the search. Workflow 1 investigates companies and contacts, filters existing customers or duplicates, scores fit and drafts outreach for qualified pairs. Workflow 2 starts only after approval, syncs HubSpot, sends/logs the approved message and tracks follow-up state.

The implementation separated rules, free-text context, human decisions and external effects. That let the system improve daily work without turning every exception into a black box. AI as support inside the process, not as autopilot.

What was used

Tooling was chosen from the process outward, not from a pre-decided technical preference. Each piece needed a clear owner, a stable integration path and a simple way to inspect errors.

In practice, the build combined Supabase, Python/FastAPI, OpenRouter, Tavily, HubSpot, Resend. The tools visible to the team stayed close to their daily work, while integration logic was documented and kept separate from sensitive commercial decisions.

SupabasePython/FastAPIOpenRouterTavilyHubSpotResend

The improvement showed up in daily work.

Rather than treating the result as a dashboard, the team felt it in three specific moments: less manual preparation, less context hunting, and fewer doubts about who needed to act.

Research prep: Company/contact research and outreach preparation moved from 70 min to 20 min.

Pipeline coverage: Brief intake, research and approved sending remain independently traceable moved from 1 manual chain to 3 tracked workflows.

Brief readiness: Missing information is resolved before research spend begins moved from Back-and-forth to 1 validated brief.

Before/after proof

What changed in the operation

Before

1Human writes target idea
2Rep searches companies manually
3Existing customers checked late
4Contacts researched one by one
5Fit and authority judged from memory
6Message angle written from scratch
7Approval lives in chat or spreadsheet
8Follow-up tracked separately

After

1Brief intake workflow
2Missing-info loop
3Candidate pool
4Account-status validation
5Deep company research
6Company and contact scoring
7Suppression check
8Scored draft queue
9Approval workflow
10HubSpot/Resend send
11Follow-up state

Visible artifacts

  • Search brief record
  • Candidate company table
  • Account-status validation event
  • Company research summary
  • Contact score rationale
  • Outreach draft queue
  • Approval log
  • HubSpot activity
  • Resend message id
  • Follow-up status

Controls

  • Brief must be complete before search starts
  • Existing customers, owned accounts and duplicates are blocked before deeper research
  • Company must qualify before contacts are discovered
  • Each contact must qualify before drafting
  • Suppression is checked before draft and again before send
  • Human approval required before HubSpot or Resend
  • Every score keeps source evidence
  • Follow-up timing is tracked instead of relying on memory

What changed after launch

The three-workflow pipeline cuts research preparation by about 70% and gives sales a ranked review queue instead of a blank research task. Low-fit companies, existing customers, duplicates and suppressed contacts are stopped early without interrupting the rest of the search. Qualified company-contact pairs receive source-backed reasoning and personalized drafts, while two suppression gates and mandatory human approval protect every external send.

The result was not only saved minutes. The team gained a shared sequence for reviewing inputs, understanding context, deciding, acting and checking that the workflow had been recorded. 70% less prep

The workflow in one line

01Brief intake02Missing-info loop03Search creation04Candidate pool05Account validation06Deep research07Company score08Discover contacts09Score contacts10Suppression11Draft queue12Approve/send/follow-up

How it was built

A shared Supabase state connects the pipeline: search briefs, candidate companies, contacts, scored research, outreach drafts, approval status, HubSpot sync and send/follow-up events. OpenRouter handles brief validation, fit reasoning and drafting; Tavily/RSS supports public research; HubSpot and Resend are touched only after approval.

The stack was pragmatic: Supabase, Python/FastAPI, OpenRouter, Tavily, HubSpot, Resend. Tools were chosen for ownership, integration and maintainability, not for theater. The result is a system the team can understand and operate.

What was delivered

Implemented
  • Brief intake workflow
  • Candidate pool creation
  • Account-status validation
  • Company/contact research
  • Company/contact scoring
  • Draft approval queue
  • HubSpot/Resend send
  • Follow-up tracking
Benefits
  • Research prep dropped by about 70% while keeping the source trail visible.
  • A broad human request became a structured candidate pool with clear inclusion and exclusion logic.
  • Existing customers, duplicates, owned accounts and suppressed domains were filtered before drafting.
  • Company scoring became consistent across searches instead of depending on one rep's research style.
  • Contact selection improved because persona, authority and personalization angle were scored separately.
  • Every qualified company-contact pair received a draft tied to a specific business reason.
  • Sales reviewed a queue of prepared opportunities instead of building every angle from zero.
  • No HubSpot record or external email was created until a human approved the draft.
  • Sent state, reply state and next follow-up date became trackable from the same workflow.
  • Manual retries became safer because each workflow has its own trigger and stored state.
Next step

Map a similar workflow.

Open brief
Ductio
DuctioSYSTEMS
AI-assisted automation plans for teams that need connected tools, monitored workflows, and maintainable handoff.
Operating focus

CRM operations, reporting workflows, approvals, document handling, and AI-assisted internal tools.

Copyright © 2026 Ductio. All rights reserved.