Prospecting desk that builds account lists from the live web

Stop buying stale lists. Reps run a saved search, work the results like an inbox, and only the accounts they approve ever reach your CRM.

App
HyperbrowserHubSpotGoogle SheetsSalesLead EnrichmentResearch & Monitoring
PromptCreate

Build me a prospecting desk my SDR team opens every day to build target account lists from the live web instead of buying a stale list. It uses Hyperbrowser to find and read company websites, HubSpot as the CRM we push approved accounts into, and Google Sheets as the decision log. Nothing reaches HubSpot until a person clicks approve.

The app opens on two things side by side: a library of saved searches, and the review queue. A saved search is one of our ICP definitions written in plain language, for example "UK fintechs, 50 to 200 staff, currently hiring compliance people". Each saved search is stored in the app's own data with a name, the search description, optional must-have and must-not-have keywords, a target number of companies per run, the rep who created it, and the date of its last run plus how many rows that run produced. Saved searches are visible to the whole team but show their owner, and a rep can filter the library to just their own. Reps can create, edit, duplicate, and archive them.

Each saved search has a Find prospects button that kicks off a background agent. The agent turns the ICP definition into several web queries and runs them with the Hyperbrowser Search Web operation, collects candidate company sites from the results, and drops anything already on the suppression list, already in the review queue, or already found by a previous run of the same search. For each remaining company it starts a Hyperbrowser scrape with Start Scrape Job and polls Get Scrape Job Result for the home page and any obvious about, product, careers, and contact pages, then runs Start Extract Job with a schema and polls Get Extract Job Result to pull structured fields out of that content. Hyperbrowser scrape and extract jobs are asynchronous, so every job must be started and then polled until it completes before the agent writes anything. When a careers page is a JavaScript widget or an embedded job board that scraping cannot read, the agent falls back to Start Browser Use Task with an instruction like "open the careers page and list the current openings with titles and locations" and reads the answer back with Get Browser Use Task Result.

Every company the agent finishes becomes one row in the app's review queue, written back as the run progresses so the queue fills in while the rep watches. A row holds: company name, website domain, country and city, what they sell, who they sell to, an estimated headcount plus the signal it came from, careers page activity such as the number of open roles and the relevant titles, contact page details including a named person, role, email, and phone when the site publishes them, two or three short verbatim evidence quotes supporting the fit, the list of source URLs each field came from, the date the pages were read, the saved search and run that produced it, and a status of new, approved, rejected, or snoozed.

Reps work the queue like an inbox. Each card shows the extracted firmographics on one side and the evidence on the other: the quotes, the source links, and the date read, so a rep can check any claim in one click. Cards can be filtered by saved search, by status, and by owner, and sorted newest first. Every card has three actions: approve, reject with a short reason picked from a list such as wrong size, wrong market, already a customer, or no real signal, and snooze with a date, which hides the card until that date and then returns it to the queue. Show a small header count of new, snoozed, approved today, and rejected today.

Approving runs a handler that goes to HubSpot in order. First it calls Search Companies filtered on the website domain, and if that finds nothing, on the company name, so we never duplicate an account we already own. If a match comes back, the card is marked as an existing account, the app shows the rep which HubSpot record it matched, and nothing is created. If no match comes back it calls Create Company with name, domain, city, country, industry, and a short description from the extraction. Then, only when the site gave us a real named person with an email address, it calls Create Contact with that name, email, phone, and job title, associated to the new company. Finally it calls Create Note with the research summary, the evidence quotes, the source URLs, and the date read, associated to the company record so the next rep who opens that account sees where it came from. Show the rep the created HubSpot record links on the card once the push finishes, and if any step fails, keep the card in the queue with the error visible so they can retry rather than losing the work.

Every approve and every reject also appends one row to a Google Sheets log using Append Values, with the date, the rep, the saved search name, the company name and domain, the decision, the reject reason when there is one, the headcount and careers signals, whether it was already in HubSpot, and the source URLs. That sheet is how we see list quality over time, so also give the app a small stats strip reading from the app's own data: approval rate per saved search, rows found per run, and the most common reject reasons over the last thirty days. That view is what tells a manager which ICP definitions are actually working.

Two rules matter more than anything else. Nothing is written to HubSpot without a human clicking approve, so no part of the search agent may call any HubSpot create operation. And rejected companies go onto a persistent suppression list keyed by website domain, which every future run of every saved search filters against, so a company someone already turned down never resurfaces. Let a rep view the suppression list and remove an entry if they rejected something by mistake.

What does this prompt do?

  • Keeps a library of saved searches, one per ideal customer profile, each owned by the rep who wrote it, so nobody rebuilds the same list twice
  • Finds matching companies on the open web on demand, reads each company site, and files structured rows into a review queue with the quotes, links, and date behind every field
  • Gives reps an inbox to work: approve, reject, or snooze each company, with the extracted details sitting next to the evidence
  • Sends approved accounts to your CRM only after a person clicks approve, checking first so you never create a company you already own
  • Logs every approve and reject to a spreadsheet so you can see whether list quality is improving, and keeps rejected companies from coming back on the next run

What do I need to use this?

  • A Hyperbrowser account for reading and searching the web
  • A HubSpot login that can create companies, contacts, and notes
  • A Google account and a spreadsheet to use as the decision log
  • A rough definition of who you sell to: industry, size, location, and the signals that mean now is a good time

How can I customize it?

  • Change the fields pulled from each company site, for example funding news, tech mentions, office locations, or named partners
  • Decide when a contact gets created: only when the site lists a real person and address, or also for generic team inboxes
  • Set how long a snooze lasts and what your log sheet records, then add a simple score so the strongest accounts sort to the top of the queue

FAQs

Does anything get added to my CRM automatically?
No. Everything the search finds lands in the review queue inside the app. A company is only created in HubSpot after a rep opens the card and clicks approve.
How does it avoid creating accounts we already own?
Before creating anything, the app looks the company up in HubSpot by website domain and name. If there is already a record, the card is marked as an existing account instead of creating a duplicate.
What happens to companies a rep rejects?
They go on a suppression list stored in the app. The next time anyone runs a search, those companies are filtered out of the results, so the same bad fits never come back.
Will this work on a free HubSpot account?
Yes. Companies, contacts, and notes are all part of the free CRM, and the app only needs permission to look up and create those records.
How long does a search take to come back?
It runs in the background and typically takes a few minutes, since each company site is read and summarized one at a time. You can close the search and keep working the queue while it fills in.
Where do the contact details come from?
Only from the company's own public website, mostly contact and team pages. If no named person and address is published, the app files the company without a contact rather than guessing an address.

Related templates

Plan a field sales day around drive time and neglected accounts

Pick a date, a starting point and a radius, then build a sequenced day of customer visits that lands straight on your calendar.

Geolocation
HubSpot
Google Calendar
App
Find ICP accounts, verify the emails, file them in HubSpot

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

Hunter
HubSpot
App
Influencer campaign roster board with AI creator briefs

Drag creators through Sourced to Wrapped on a board grouped by campaign, with audience stats on every card and a one-click brief for each creator.

HypeAuditor
Google Sheets
Notion
App
Morning repricing console for Shopify with margin-safe rules

Pick a repricing rule, send an assistant out to check competitor pages, then approve the new prices that clear your margin floor.

Hyperbrowser
Shopify
Google Sheets
App
Pre-flight bounce check before you launch a cold email sequence

See the projected bounce rate for any outbound send before it goes out, and keep the launch button locked until the list is clean enough to be safe.

Hunter
Google Sheets
App
Per-device electricity cost explorer for your smart home

Pick any date range and see what each device in your home actually cost to run, not just how many kilowatt-hours it used.

Home Assistant
Google Sheets
App

Give your reps a live list instead of a stale one

Build the prospecting desk where every account is researched on the open web, reviewed by a human, and only then written to your CRM.