Weekly press and analyst outreach list, delivered to Slack

Every Monday at 8am, find fresh journalists and industry analysts on your beat, verify their emails and phones, and post the new contacts in Slack.

Agentic Task
FindymailGoogle SheetsSlackMarketingSalesLead EnrichmentResearch & MonitoringData Sync

Every Monday at 8am Eastern, run a fresh press and analyst outreach search, append the net-new contacts to our Google Sheet, and post a recap in Slack. This should be an agent workflow because the brief refinement, the dedup decision, and the weekly summary all need reasoning.

The search brief is a plain-English string I want to be able to edit in the prompt without touching workflow logic. Default brief: 'Tech journalists covering AI infrastructure at top US business publications (Wall Street Journal, New York Times, Bloomberg, Forbes, Fortune, Wired, The Information, Axios), plus industry analysts at Gartner, Forrester, and IDC covering observability and developer tools.'

Step 1. Kick off the search by calling Findymail Start IntelliMatch Lead Search with the brief above. Capture the returned hash.

Step 2. Poll Findymail Get IntelliMatch Search Status with that hash every 60 to 120 seconds until status is 'completed'. If it comes back 'failed', stop and post a Slack failure message (see step 7). Time out and fail gracefully after 30 minutes.

Step 3. Page through Findymail Get IntelliMatch Search Results until current_page reaches last_page. Collect every contact across all pages into a single list.

Step 4. For each contact, call Findymail Verify Email. Drop any contact whose email is not deliverable. If a LinkedIn profile URL is on the contact, also call Findymail Find Phone Number to grab a direct line. Phone is best-effort: if it returns null (including EU GDPR-protected profiles), leave the phone field blank but keep the contact.

Step 5. Before writing anything, read existing rows from the 'Press and Analyst List' tab of the Google Sheet using Google Sheets Get Values (range A:H or whatever covers the header plus all data). Build a set of verified emails already in the sheet and drop any new contact whose email is already present. This is the dedup step. Only contacts not already in the sheet should move forward.

Step 6. Append the net-new contacts to the same tab using Google Sheets Append Values, with these columns in order: Name, Outlet or Firm, Title, Beat, Verified Email, Phone, Source (always set to 'Findymail IntelliMatch'), Date Added (today's date in YYYY-MM-DD). Beat should be the agent's best one-line description of what the contact covers, inferred from their title and outlet (for example 'AI infrastructure', 'Cloud and observability', 'Enterprise software analyst').

Step 7. Send a Slack Send a Message to the #comms channel summarizing the run. Include: total net-new contacts added, a breakdown by beat (for example 'AI infrastructure reporters: 7, Observability analysts: 4, Enterprise software analysts: 2'), and a clickable link to the Google Sheet. If the run failed (Findymail error, insufficient credits, timeout), post a short failure message to the same channel explaining what went wrong instead, and do not write anything to the sheet.

Configurable inputs surfaced on the workflow: the search brief, the Google Sheet (spreadsheet ID and tab name), the Slack channel for the recap, and the day and time the cron runs.

Additional information

What does this prompt do?
  • Runs every Monday morning to refresh your press and analyst contact list using a plain-English brief you control.
  • Finds matching journalists and analysts, verifies every email is deliverable, and looks up direct phone numbers when a LinkedIn profile is available.
  • Adds only net-new contacts to a shared Google Sheet so the same writer never gets added twice.
  • Posts a weekly Slack summary with how many new contacts landed, broken down by beat, with a link straight to the sheet.
What do I need to use this?
  • A Findymail account with IntelliMatch access (this is how the natural-language search works).
  • A Google Sheet you want the contacts added to. Anything like 'Press and Analyst List' works.
  • A Slack workspace and the channel you want the Monday summary posted in.
  • A one or two sentence description of who you want to reach, for example 'AI infrastructure reporters at top US business outlets' or 'observability analysts at Gartner, Forrester, and IDC'.
How can I customize it?
  • Change the day and time the search runs (Tuesday at 9am, every other Monday, first of the month, etc.).
  • Swap the brief to target a different beat, like climate-tech founders, healthcare analysts, or local business reporters.
  • Pick a different Slack channel for the summary, or have it sent as a DM to whoever owns press outreach.
  • Add or remove columns the sheet captures (for example dropping phone numbers, or adding a 'Last contacted' column the comms team fills in).

Frequently asked questions

Will this add the same journalist to my sheet twice?
No. Before writing anything, the workflow reads the rows already in your Google Sheet and skips any contact whose verified email is already there. Only net-new contacts get appended.
Can I run searches for more than one beat?
Yes. The easiest pattern is to duplicate the workflow, give each copy its own brief (for example one for press, one for analysts), and point them at the same sheet. The dedup step still keeps things clean.
How fresh and accurate are the emails and phone numbers?
Findymail verifies every email before the contact lands in your sheet, and only appends contacts that come back deliverable. Phone numbers are pulled from the contact's LinkedIn profile when one is available, and skipped for EU profiles where the law restricts that lookup.
Can I change the schedule from weekly to monthly?
Yes. The schedule is just the trigger on the workflow. Edit it to monthly, biweekly, or any cron schedule you want. Most comms teams stick with weekly so the list stays fresh without piling up unread.
What happens if Findymail runs out of credits or the search fails?
Instead of partially writing rows to your sheet, the workflow posts a short Slack message to the same channel telling you the run failed and why, so you can top up credits or tweak the brief and re-run it.

Stop hand-curating press and analyst lists every Monday.

Connect Findymail, Google Sheets, and Slack once. Geni refreshes your outreach list and posts the weekly recap every Monday morning.