Skip to content
NEWMarketplace and the trig8n Agent: sell what you build, and get plans and changes that are tested before you see them. See what is new

Library / Lead Generation & Enrichment

Lead Generation & Enrichment

Find Upwork Job Clients and Their Emails with Apify and Hunter

On a schedule, it fetches the latest Upwork jobs with Apify, uses OpenAI to find the client name, looks up emails with Hunter, and logs leads in Google Sheets.

What it does

# 🚀 Automated Upwork Lead Enrichment Workflow > ✨ *Fetch potential clients from Upwork, extract their info using AI, search them on LinkedIn, gather emails, and store all in Google Sheets* ✨ --- ## 🧩 1. Trigger & Data Collection --- ### ⏰ Trigger - Run Every X Hours 🔧 Node Type: Schedule Trigger 🧠 Purpose: This node starts your automation periodically. You define how often it runs (e.g., every 6 hours, daily, etc.). 📚 Why It’s Important: You don’t want to manually check Upwork every few hours. This node automates it for you. --- ### 🌐 Fetch Latest Upwork Jobs (Apify) 🔧 Node Type: HTTP Request 🧠 Purpose: Fetch the latest Upwork jobs by calling the Apify Upwork Actor API. ⚙️ Tech Behind It: A simple GET request pulls in structured job listings (title, description, budget, etc.) as JSON data. 💡 Beginner Tip: No coding needed—just copy your Apify API URL with your token and plug it into the node. --- ## 🤖 2. AI Name Extraction --- ### 🧠 AI - Extract Company or Person Name from Job 🔧 Node Type: AI Agent / OpenAI Chat 🧠 Purpose: Uses GPT to scan the job title + description and extract a company name or client’s full name, if present. 📚 Why It’s Smart: Clients sometimes mention names like “Hi, we at DevSync...” or sign with their name at the bottom. This step grabs that. 🧠 AI Prompt Tip: Use structured prompts like: > “Extract a full person or company name from this job description. If not found, say 'none’.” --- ### 🧪 IF - Name is Found? 🔧 Node Type: IF 🧠 Purpose: Checks whether the AI returned a name. If not, it skips that job. 🛑 No Name Found - End Early Stops further processing and prevents wasted API calls or errors. --- ## 🧭 3. AI Classification – Person vs Company --- ### 🧠 AI - Is It a Person or Company? 🔧 Node Type: AI Agent 🧠 Purpose: Classifies the extracted name as either a company or a person using simple AI logic. 🔍 Why It Matters: Depending on what it is, the next step—searching LinkedIn—will differ. --- ### 🔀 IF - Person or Company? 🔧 Node Type: IF 🧠 Purpose: Routes the flow to two different paths: * Company → Search company profile * Person → Search individual profile --- ## 🏢 4A. Company Path --- ### 🔍 Search LinkedIn for Company (Phantombuster) 🔧 Node Type: HTTP Request 📡 Purpose: Uses Phantombuster’s LinkedIn Search API to search for the company name. 📦 Input: "De

The steps

  1. OpenAI Chat Model
  2. Run Every X Hours
  3. Fetch Latest Upwork Jobs (Apify)
  4. Extract Company or Person Name from Job
  5. Name is Found?
  6. No Name Found - End Early
  7. Is It a Person or Company?
  8. Person or Company?
  9. Search LinkedIn for Company (Phantombuster)
  10. Scrape LinkedIn Company Profile
  11. Find Company Email (Hunter.io)
  12. Search LinkedIn for Person (Phantombuster)
  13. Scrape LinkedIn Person Profile
  14. Find Personal Email (Hunter.io)

15 steps in total.

Similar automations