Approve every cold outbound list before a single email sends
Stage every prospect batch in one grid, see who is already a customer or has an open deal, and enroll only the rows you approve.
Build me a staging desk for cold outbound where I approve a prospect list before a single email goes out. Bad rows in a cold sequence burn a sending domain and embarrass us in front of customers, so nothing reaches a sequence until I have looked at the batch and ticked the rows myself.
Batch intake, two ways. On a New batch screen I either pull people I already have or paste in a fresh list. Path one uses LeadsForge List Contacts with its tag and validation status filters, so I can stage, for example, every contact tagged saas-uk whose validation status is valid. Path two uses Google Sheets Get Values against a spreadsheet ID and an A1 range I supply, then lets me map the sheet columns onto email, first name, last name, company and job title before importing. Either path creates a named batch stored in the app with its rows, its source, and the filters or range it came from.
The review grid is the heart of the app. Every staged row shows the contact's validation status and tags from LeadsForge, using Get Contact to fill in detail on a row when I expand it. Alongside that, run a live check against our CRM: HubSpot Search Contacts by email address, and HubSpot Search Deals for deals associated with any contact that matches. Classify each row into one of three states and show it as a clear badge: Existing customer, Open deal, or Net new. When there is a match, show me which HubSpot record it hit and the deal name and stage, so the classification is never a mystery. Cache the CRM verdict on the row with the time it was checked, and give me a Recheck CRM action on both a single row and the whole batch.
Make the CRM conflict a hard block, not a soft warning. Rows classified as Existing customer or Open deal cannot be ticked for enrollment. Their checkbox is visibly disabled with the reason attached rather than hidden from the grid, because I still want to see who got caught. The only way past it is to change the blocking rule on a Settings page, which is deliberate friction. Never enroll a person who already has an open HubSpot deal or is an existing customer.
Give the grid a Screen this batch button that starts a background agent. The agent reads my written ICP definition, which lives as an editable block of text on a Settings page, and works down the staged rows one at a time. For each row it decides on profile or off profile and writes a one line reason back onto the row, things like wrong seniority, free mail domain, or an account someone is already working. It can call LeadsForge Get Contact for fuller detail on a person, and HubSpot Search Contacts and Search Deals to see whether a rep is already engaged with that account. Its verdict, reason and run time land on the row so the grid can display and sort by them. Rows it flags off profile get automatically unticked but stay visible, and I can always tick one back on if I disagree. Show progress while it runs, since a big batch takes a while.
Then I enroll. After I have unticked what I do not want, an Enroll approved rows action opens a confirmation step. I pick the destination sequence from a list built with LeadsForge List Sequences, and before I confirm you show me what that sequence already holds using Get Sequence Contact Count, how many rows I am about to add, and the resulting total, compared against a capacity ceiling I set per sequence. If the batch would push the sequence past that ceiling, say so plainly and make me acknowledge it, so I can see I am not oversubscribing a sequence beyond what my sending capacity can carry.
Route the enrollment by what each row actually is. Rows that already exist as LeadsForge contacts go in with Assign Contacts To Sequence. New people from a spreadsheet go in with Bulk Create Contacts in chunks of at most 100 per call, which is the documented cap, followed by Assign Contacts To Sequence. Use Create Contact for a one-off single addition, and Import Lead Into Sequence when I want create and enroll handled in a single step for an individual row. Show per chunk progress and finish with a summary of how many were enrolled, skipped and failed, keeping any failures on the batch so I can retry just those.
One important constraint to respect. LeadsForge exposes validation status only as a read filter on List Contacts. There is no documented operation to run a validation job or to add someone to a do-not-contact list, so the app displays and filters on validation status but must never claim to verify addresses itself and must not offer a do-not-contact action. Rows with no validation status stay visible and filterable rather than being silently dropped or shown as safe.
Persist batches with their name, source, creation date and status of staging, screened or enrolled. Persist each row with its contact fields, validation status, tags, CRM classification and matched record, the agent verdict and reason, and my approval tick. Persist the ICP text and the per sequence capacity ceilings. Keep a history of past batches so I can look back at exactly which rows I approved, which the agent flagged, and which sequence they went into.
What does this prompt do?
- Build a batch two ways: pull people you already have in LeadsForge using its tag and validation filters, or read a fresh list straight out of a Google Sheet.
- Every staged row shows its validation status and tags next to a live check of your HubSpot CRM, so you can see at a glance who is already a customer, who has an open deal, and who is genuinely net new.
- Press Screen this batch and a background assistant reads your written ideal customer profile, works row by row, and writes a one line reason onto anything off profile, like wrong seniority, a free mail address, or an account someone is already working.
- Uncheck what you do not want, then load only the approved rows into the sequence you pick, with that sequence's current size on screen so you never oversubscribe your sending capacity.
What do I need to use this?
- A LeadsForge account holding the contacts and sequences you send from
- A HubSpot login so the app can check who is already a customer and who has an open deal
- A Google account if you want to build batches from a spreadsheet
- A written description of your ideal customer, pasted into the app once and edited whenever it changes
How can I customize it?
- Rewrite the ideal customer profile at any time. The screening assistant uses whatever is saved the moment you press the button.
- Set a capacity ceiling per sequence so the app warns you before a batch pushes a sequence past what your mailboxes can comfortably carry.
- Change the default intake filters, such as which tags and validation statuses pull into a new batch.
- Redefine what counts as a blocking CRM match, for example whether a long stalled deal should still stop someone from being enrolled.
FAQs
Does this verify whether an email address is real?
What stops someone from cold emailing an existing customer?
Can I build a batch from a spreadsheet instead of LeadsForge?
How large a list can I stage at once?
Do I have to use the screening assistant?
Related templates
Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.
See every Google Maps listing you manage on one screen, ranked worst first, with an audit button that writes the fix list for you.
Your team picks a template, finds the customer, checks they are safe to email, then sends it, with every send logged where the whole team can see it.
Twice a day we spot the people clicking your pricing and demo pages, create a follow-up task for their owner, and post a ranked recap to Slack.
Every night at 2am, pull the contacts on your open and won deals and block them from your cold outreach before the next send goes out.
Build every text campaign in one screen: check who is actually reachable, see a realistic send plan, then watch delivery land row by row.
Stop launching cold sequences on a list nobody checked.
Stage the batch, see the CRM conflicts, and approve every row before a single email leaves your domain.