Find ICP accounts, verify the emails, file them in HubSpot

By General Input

One screen where reps filter for companies that fit, see who is actually reachable at each account, and save only the addresses that verify.

Integrations

  • Hunter
  • HubSpot

Type

App

Categories

  • Sales

I want an ICP prospecting workbench my SDRs open whenever they need to build a new target list, so they stop bouncing between Hunter's search screen, a scratch spreadsheet and the CRM. It is rep driven rather than scheduled: a rep opens it, searches, reviews what comes back, and decides what gets saved and what gets pushed.

The main view is a company search surface. Down the left is a filter panel with industry, headcount range, location, technology and funding. Hitting Search runs Hunter Search Companies (the Discover operation) with whatever fields are filled in, leaving blank fields out of the query entirely. Show the total number of matching companies first, before pulling anything else, so a rep can tighten the filters against a live match count rather than committing blind. Results render as a paged grid of company cards.

Each card shows the company logo from Get Company Logo, a business snapshot from Enrich Company by Domain covering industry, a one or two sentence description, headquarters and tech stack, and a contact coverage bar from Get Email Count for Domain that breaks the account's known email addresses down by department and seniority. The coverage bar is what tells a rep at a glance whether an account is worth working, so make it the visual centerpiece of the card rather than a footnote. A rep should be able to see that an account has twelve known addresses with four in engineering and none in finance without clicking anything.

Hunter bills by credit and the rates differ per operation, so be deliberate about what runs when. Discover, Get Email Count for Domain and the logo endpoint are free, so they can run for every card on every page. Enrich Company by Domain costs 0.2 credits per company, so only enrich the cards actually on screen and cache the result per domain so paging back and forth never pays for the same company twice. Search Emails by Domain costs 1 credit per 10 emails returned and Verify Email Address costs 0.5 credits each, so those only ever run on an explicit action. Before any search or verification batch runs, show the estimated credit cost of that batch and make the rep confirm it.

Every account already in HubSpot must be visibly tagged as already in CRM so reps never re-prospect an account the team owns. For the domains on the current page, run HubSpot Search Companies filtered on the domain, and render matched cards with a clear already in CRM badge, unticked by default, plus a link straight to the HubSpot record. Cache the match per domain so scrolling the grid does not re-query the CRM for the same account.

Clicking a company opens a drawer listing its actual people from Search Emails by Domain. Each row shows the email address, confidence score, job title, department and seniority, sorted most senior and highest confidence first, with department and seniority filters at the top of the drawer. The rep ticks the people they want and presses Verify selected, which runs Verify Email Address on just those addresses and stamps each row with its result. Only addresses that come back deliverable are savable by default. Risky ones are visibly flagged and stay unselectable until the rep flips an explicit override, and undeliverable ones stay blocked entirely. The verifier sometimes answers that verification is still in progress, so poll for the final result rather than treating that as a failure.

A Save to leads list button writes the keepers into Hunter. The rep either picks an existing list or names a new one, which is created with Create Leads List, and each selected person is written with Upsert Lead so re-running a search never duplicates a lead. Carry across everything the app already knows about that person: first and last name, position, company name and domain, confidence score and the verification result. Leads and leads list operations are free, so saving costs nothing.

A second button pushes the selected people into HubSpot, and it checks before it writes so nothing gets duplicated. For each account, run HubSpot Search Companies on the domain and reuse the existing record if there is one, otherwise use Create Company with name, domain, industry, description, city and country from the enrichment. For each person, run Search Contacts on the email address ignoring capitalization and skip anyone already on file, otherwise use Create Contact with email, first and last name and job title. Then use Create Association to file each contact against the right company. Finish with a summary of what was created, what matched an existing record and what failed, with a retry for the failures.

Add a Build this list for me button that kicks off a background agent. The rep types their ideal customer profile in plain English, for example Series B fintech companies in the UK between 50 and 200 people running Stripe, plus a name for the list and how many accounts they want. The agent turns that description into Discover filters and runs Search Companies, enriches each result with Enrich Company by Domain, checks reachability with Get Email Count for Domain, and picks the accounts that genuinely fit the description rather than simply taking the first N returned. It skips anything HubSpot Search Companies says is already in the CRM. For each account it keeps, it runs Search Emails by Domain, picks two or three likely decision makers by department and seniority, verifies each one with Verify Email Address and drops anything that is not deliverable. It writes the survivors into a named Hunter leads list with Create Leads List and Upsert Lead, and records a one line fit rationale per lead explaining why that account and that person made the cut.

The agent's output has to land somewhere the workbench can render. Store each run with the brief it was given, the list it produced, the fit rationale per lead, and what it skipped and why, whether that was already in the CRM, no reachable contacts, or nothing that verified. Show run state on the button while it works and do not let two runs start at once for the same rep. When a run finishes, open the produced list in the workbench with the rationale line under each lead so the rep can read it, drop anyone they disagree with, and push the rest into HubSpot through the same deduped push described above.

Persist named filter sets so a rep can rerun last month's criteria in one click, storing the criteria rather than the results so every rerun returns fresh data. Also persist the cached company enrichment and CRM match per domain, the verification result per address, the lists the team has built, and the agent run history. Saved searches are per rep, but the already in CRM markers and the built lists are shared across the whole team so two reps never work the same account.

Related prompts

Explore more prompts
Turn Mailjet email clicks into ranked HubSpot follow-upsiMessage campaign console with pre-flight checks and delivery boardA searchable RFP answer library your bid team drafts fromSee which target accounts just started advertising on LinkedInAccount health board that puts product usage next to your CRMLook up a customer's full chat history mid conversationLusha prospecting workbench with credit-safe revealsWhich companies your LinkedIn ads reach, matched to your CRMLead response desk with a running clock on every new leadApprove Lusha enrichment field by field before HubSpot saves it