1 Client & Hypothesis Group

Pick the client/customer first, then one of their hypothesis groups. The group's organizations (managed in Prospect Organizations Admin → Hypothesis Group Organizations), Target Contact / Exclude Rules, Message Build Instructions, and Message Review Instructions all come from this group.

2 BDRs & Messages to Generate

Only BDRs linked to the selected hypothesis group are shown (link BDRs to groups in Connect Hypothesis Documentation). Check each BDR who needs messages and set how many. Organizations from the group are scanned one at a time; each organization's contacts are assigned to whichever checked BDR's turn it is, alternating between BDRs round-robin until every BDR's count is met (a BDR that reaches its target early drops out and the rest keep alternating).

Select a client and hypothesis group above.
3 Organizations to Scan (preview)

Read-only preview, in the exact order this run will process them: organizations never scanned under the Scan Name below come first, then — as a tie-breaker, so even a brand-new Scan Name doesn't just restart from the top of the priority list — organizations scanned the fewest total times across ALL scan names (organizations pulled in from a BDR/workspace that were already scanned before joining this hypothesis group are treated as partially-covered here too, so they're queued behind truly never-scanned organizations). Add / remove / re-prioritize organizations in Prospect Organizations Admin (that priority still breaks any remaining ties — the AI Priority Scorer there can also set it for you). Organizations without a LinkedIn URL are researched automatically during the run. Contacts Scanned and Messages Sent are cumulative for this hypothesis group (past Full Pipeline scans, and connect_queue messages actually pushed to HeyReach) — export the preview as CSV from the button under the tiles.

Every organization scanned this run is tagged with this name, so you can tell scans apart later and know exactly which rules were used on which organizations. Scan names are also tied to Step 4's rules for this hypothesis group — picking a name you've used before reloads the exact same rules, and running the pipeline saves whatever rules are in Step 4 back to this name, so the same scan name always means the same rules.
Unchecked (default): organizations already researched with no LinkedIn URL found are skipped entirely — no re-research AND no scan job — instead of being re-scanned (and re-billed) every run.
Repair scan labels from a previous run (fixes organizations that were mistakenly marked "already scanned" after an error, e.g. an expired-session run)
Check Apify cost ledger now (diagnostic — shows what's really recorded, no run required)
–
Organizations
–
With LinkedIn URL
–
URL Not Found (skipped)
–
Previously Scanned
–
Already Scanned as This Name
–
Contacts Scanned
–
Messages Sent
# Priority Organization LinkedIn URL Total Scans Contacts Scanned Messages Sent Scan Names
Select a hypothesis group above.
4 Employee Contact Scan Rules

Identical criteria to Employee Contact Scanning on Prospect Organizations Admin — one scan job per organization, processed by the same backend, with Apify costs tracked in the same ledger.

Reads the Step 1 rules and suggests job functions, seniority levels, and — most useful — Job Title Keywords. Review before running.
Scan Rules
Multiple words are AND. Add OR between terms for OR logic.
5 AI Models & Options

The chosen models are recorded on every message (buildModel / opusReviewModel) and in the run report for later analysis in Connect Analysis Data.

Applies to Internet Search message writing (the main Full AI path). About Me / Post Reply messages keep their own tested prompts and models.
"Smart" sends senior/large-org contacts to Internet Search first (falling back to About Me), and everyone else to About Me first (falling back to Internet Search). To avoid repeating the same org news story, each org's verified stories are matched per-contact by AI and capped at 7 uses each before rotating to another story or falling back to About Me.
Skip contacts under connections
Before the Apify scan results are used, contacts at the same organization already stored under other BDRs are found, refreshed with a live LinkedIn check (so we never work off stale data), and copied to the current BDR.
Uses the same rules configured in Final AI Review (shared cloud store — same rules on every browser and device), fed the actual profile / news / post data used to build each message.
When a contact has no worthy posts, no About Me match, and no usable news story, write a message from their profile itself — the same last-resort flow Full AI Generate uses on Generate Messages. Without this, those contacts get no message at all.
Only use the top matched contacts per organization for each BDR
Off by default. When on, after the Target Contact rules filter, only the top N contacts at each organization (ranked by LinkedIn connection count) move on to message generation for the BDR. The additional good-fit contacts are not lost — they stay saved to the BDR in prospect_contacts and are tagged with this hypothesis group so they can be used later. This limits how many contacts at the same organization are messaged at once.
Off by default. When on, this run does not search for any new contacts — no organization is researched or scanned (no Apify cost). Instead, each selected BDR's prospect_contacts already tagged with this hypothesis group — Top Contacts Cap overflow, contacts from runs that stopped early, rescued contacts — are checked the same way Generate Messages → Full AI Generate does it: anyone with an existing (non-deleted) message in the queue, already connected, excluded, or under the connection floor is skipped. Everyone left is grouped organization by organization, and each organization is checked against the 30-day organization limit below to see whether there is still runway to re-engage it through these other contacts. Organizations at the limit are skipped (their contacts stay saved for a later month); organizations with runway get messages for up to the remaining slots. Rules are not re-run (they passed when they were tagged); the Top Contacts Cap, DNC check and 30-day organization limit still apply. Tip: turn on the 30-Day Organization Limit below — without it, no organization is ever treated as "full".
Max contacts per organization with a message created in the past 30 days
Scope: By Organization (default) counts messages from all BDRs together — once an organization has the max, no BDR can message it. By BDR counts only the BDR being processed — each BDR can have up to the max live contacts at the same organization, regardless of what other BDRs have sent. The on/off checkbox and the max are the same setting as the 30-day limit on Generate Messages (shared — checking it here checks it there too); the scope applies to Full Pipeline runs only. Counts distinct contacts with a live connect_queue message (sent to HeyReach, approved, or still pending review) created in the past 30 days. Messages that were deleted, rejected, or flagged duplicate / already-connected do not count — their slots open back up (e.g. 3 created, 1 sent, 2 deleted = 1 used, room for 2 more). An organization already at the limit is skipped before it is scanned (no Apify cost), and within an organization message generation stops once the limit is reached — remaining matched contacts stay saved and tagged for a later month.
When you upload a CSV of organizations in Prospect Organizations Admin (Hypothesis Group Organizations), columns that don't match a standard field can be kept as extra data on each organization. Turn this on to include those columns — per organization — in the AI prompts at the steps you pick below. Off by default; nothing changes for a run unless this is checked.
Runs a Brave search once per organization (e.g. recent or upcoming M&A activity at the health system), distills the findings into a short verified brief, and shares that brief — plus your usage instructions — with every message generated for contacts at that organization (Post Reply, About Me, Internet Search, and the Profile Message fallback's parent call).
6 Cost Shut-Down Rates

The pipeline stops automatically when spend gets out of line with messages produced. After every organization, the run's all-in cost so far — contact search (larger of ledger-measured vs formula estimate) + LinkedIn profile/post scrapes from the Apify ledger + estimated AI — is divided by messages generated. When that average exceeds the target below, the run shuts down — that usually means the Step 4 scan rules are finding too few usable contacts and need adjusting.

Default $0.20 per generated message.
$0.20 per message
The run stops when average all-in spend (contact search + profile/post scrapes + AI estimate) per generated message exceeds the target.
Grace amount so one small unlucky organization doesn't kill the run. Checked after every organization.
Select a hypothesis group and at least one BDR with a message count to enable.
Data Repair: Misassigned / Orphaned Contacts

Scans every message this pipeline has ever generated (across all hypothesis groups and all BDRs — not just the group selected above) and cross-checks it against the full_pipeline_runs record it was created under. Catches three known failure modes: (1) a message's hypothesis group stamp was silently overwritten with the wrong group later (usually by Fast Connect Review's auto-detect-by-URL logic matching a different group the same contact/org happens to also be tagged under), (2) a message never got a hypothesis group stamp at all even though its run had one, and (3) a hypothesis group's tagged-contact URL list never got backfilled during a run, which starves Outcomes by Hypothesis Group and the Batch ↔ Hypothesis Group Correlation tool of anything to match against. Also flags runs stuck at "running" with no activity, which otherwise never show up as needing attention anywhere.