Daily lookalike outbound list from your seed accounts

Drop competitor or conference domains into a Google Sheet, and every weekday at 9am get a fresh sheet of lookalike companies with verified contacts at the titles you actually sell to.

Agentic Task
CompanyEnrichGoogle SheetsSlackSalesLead EnrichmentData Sync

Every weekday at 9am, build a fresh batch of lookalike outbound contacts from the seed accounts I keep in Google Sheets. The seed source is a tab I curate by hand (conference attendee domains, churned competitors, recent press coverage, referrals), and the output should be contact-level rows I can drop straight into my sequencer.

The workflow:

1) Read pending seeds. Use Google Sheets Get Values to read the Seeds tab of my spreadsheet. Each row has a domain plus optional per-row overrides for the seniorities and departments I want to target at the lookalikes. Skip rows already marked processed in the status column.

2) For each pending seed, find lookalikes. Call CompanyEnrich Find Similar Companies with the seed domain to pull 10 ranked lookalike companies.

3) Enrich the lookalikes. Run CompanyEnrich Batch Enrich Companies (Sync) on the top hits so I have employee count, industry, country, and funding signal to qualify them with.

4) Pull contacts at each lookalike. For each enriched lookalike, call CompanyEnrich Create People Search Export Job (Async) filtered by the seniorities and departments from the seed row, or my default of VP+ in Sales or RevOps if the row does not override. Then call CompanyEnrich Get People Search Export Job Status every ~30 seconds until status is "completed", and download the verified contacts from results_url. Per the CompanyEnrich common_docs, this people-search status response uses snake_case keys (results_url, job_id), while the similar-company async job uses camelCase. Do not mix them up.

5) Dedupe and quality-filter. Before writing anything, read the Output tab once with Get Values and drop any (account, contact) pair that already appears there. Also drop contacts whose actual title does not match the requested seniority and department mix. Use judgement; the people-search filter is a coarse pre-filter, not a guarantee. The goal: I should never see the same account or contact twice across runs, and I should never get off-target leads.

6) Write results. For every surviving (lookalike account, verified contact) pair, append one row to the Output tab via Google Sheets Append Values. Include: seed domain, lookalike company name, lookalike domain, employee count, industry, country, contact name, contact title, contact email, contact LinkedIn, and the run date.

7) Mark seeds processed. Update the status cell for each seed I just worked on so the next run skips it.

8) Notify me. When the run finishes, DM me in Slack via Send a Message with: number of seeds processed, number of new accounts added, number of new contacts added, and total CompanyEnrich credits spent. If any seed failed (people-search job errored, lookalike returned zero contacts, etc.), include it in the summary so I can investigate.

Guardrails:

- CompanyEnrich people-search jobs can hold up to 1,000,000 people per export, so always pass per-row title and department filters to keep credit burn predictable. Do not pull "everyone at the company."

- People-search exports usually finish in roughly 5 minutes. If a job has not completed after 15 minutes of polling, log it, skip that lookalike, and continue rather than blocking the rest of the run.

- Ask me for the spreadsheet ID, the Seeds tab name, the Output tab name, the default seniorities and departments, and the Slack DM target on first run.

Additional information

What does this prompt do?
  • Reads pending domains from the Seeds tab of your spreadsheet every weekday at 9am and works them one at a time.
  • For each seed, pulls 10 ranked lookalike companies, fills in firmographics so you can qualify them, and finds verified contacts at the titles and departments you sell to.
  • Writes one row per company and contact pair to your Output tab, dedupes against past runs, and quality-checks titles so you never see the same lead twice or get off-target names.
  • Sends you a Slack DM at the end of every run with a count of new accounts, new contacts, and credits spent.
What do I need to use this?
  • A Google account with edit access to the spreadsheet that holds your Seeds tab and Output tab.
  • A CompanyEnrich account with credits available for similar-company search, company enrichment, and people search.
  • A Slack workspace login so the run summary can be sent as a DM to you.
How can I customize it?
  • Change the schedule from weekday 9am to whatever cadence fits your outbound rhythm, including weekly or twice a week.
  • Adjust the default target titles and departments. The defaults are VP and above in Sales or RevOps, but you can swap in Marketing leaders, Engineering hiring managers, or anything else, and override per row in the sheet.
  • Pick the Slack channel or DM that gets the run summary, and tweak which columns land in the Output tab so the format matches your CRM import or sequencer.

Frequently asked questions

Where do the seed domains come from?
You control them. Paste in domains from a conference attendee list, a churned competitor roster, recent press release coverage, a referral list, or anything else you want to clone for outbound. The workflow only processes rows that are not yet marked processed.
How does it avoid giving me the same accounts and contacts every run?
Before writing anything new, the agent reads your Output tab and drops any company or contact pair already in there. It also marks each seed as processed once it finishes, so seeds never get re-run by accident.
What if a seed only matters for one specific persona?
Add seniority and department overrides as columns next to the seed domain. The agent uses those instead of your defaults for that row, so you can mix VP Sales seeds with Director of Engineering seeds in the same sheet.
Will I burn through my credits?
The agent uses per-row title and department filters every time it pulls contacts, which keeps the export size predictable. You can also lower the number of lookalikes per seed or run the workflow fewer days a week to cap spend.
What happens if a contact pull takes too long or fails?
If an export does not finish within about fifteen minutes, the agent skips that lookalike, logs it, and keeps going so the rest of your run still completes. The Slack summary flags any seeds that hit problems so you can investigate.

Stop hand building lookalike outbound lists from scratch.

Connect Google Sheets, CompanyEnrich, and Slack once, then drop domains into your Seeds tab and let Geni deliver fresh accounts and contacts every weekday morning.