Turns a list of domains into firmographic records through Apify: company name, description, public emails and phones, social profiles, careers page and hiring platform, email provider and technology stack. Each account is scored against your ideal customer profile, so a raw domain list becomes a ranked account list for sales or recruiting.
How it works
- Daily schedule / manual run reads every setting from Config. A weekly schedule uses the same Config to send a report instead of running the actor.
- Starts the Apify actor asynchronously, then waits and polls the run; FAILED, ABORTED, TIMED-OUT or too many polls stop with an error.
- Downloads the dataset, validates rows and dedupes within the run and across runs (workflow static data,
dedupeMemoryDays).
- A transparent rule score runs first, then an LLM chain with a structured output parser reads each record against your plain-English
aiCriteria and returns a fit score, verdict, summary, outreach angle and red flags. Calls are batched with a delay for rate limits, retried, and fall back to the rule score if the model fails.
- Upserts every row to Google Sheets. Hot rows go to Slack as one approve / dismiss message (send-and-wait, 24 h limit) and the decision is written back to the sheet; warm rows go to an HTML email digest; cold rows stay in the sheet.
- Weekly report: reads the sheet, summarises the last 7 days (tiers, approvals, top 10) and emails it.
- A separate Error Trigger branch posts any failure to Slack.
Setup (about 15 minutes)
- Create an HTTP Header Auth credential: name
Authorization, value Bearer <APIFY_API_TOKEN> (Apify Console > Settings > API & Integrations). Select it on the 3 Apify HTTP nodes.
- Create a Google Sheet with a tab named in
sheetTab and a header row matching the sheet columns (see Upsert to Google Sheets, plus status and reviewedAt). Paste its ID into googleSheetId.
- Connect OpenAI (or swap the chat model sub-node for Anthropic, Gemini, Ollama...), Slack and Gmail; set
slackChannelId and digestEmail in Config (also the channel on Slack: error alert).
- In Config set
actorInput.domains (or companyUrls), then targetTech (tools whose presence signals fit) and icpKeywords (words that describe your ideal customer's business).
- Write your ideal-lead description in
aiCriteria; set aiWeight (0 = rules only, 1 = AI only).
- Run once manually, check the sheet, then activate.
Customize
- Edit weights in Score account fit (hiring 20, named email 20, tech fit 20-30, description fit 10-20).
- Unreachable domains are kept with score 0 so you can see what failed.
- Reads only public website data; no personal profiles.
- Swap Gmail/Slack for Teams, Discord, HubSpot, Airtable, etc. Each delivery node only reads
$json.
Disclosure: I maintain these Apify actors (account transparent_meteorite). The actor is a paid pay-per-event Apify tool; check its Store page for current pricing before scheduling.