Quick overview
This workflow runs every weekday morning to find potential freelance gigs in public LinkedIn posts via Apify, filters and location-checks candidates, scores and drafts outreach with OpenAI (GPT-5), saves email drafts to Gmail, logs results to Google Sheets, and sends a Telegram digest with a detailed text file.
How it works
- Runs on a weekday cron schedule and validates your configuration values, then sends a “search started” message to Telegram.
- Reads previously seen post URLs from Google Sheets and searches public LinkedIn posts through Apify using your configured phrases.
- Filters out already-seen posts and applies keyword rules to keep likely hiring posts while dropping obvious noise and duplicates.
- Uses Apify to fetch each author’s LinkedIn profile details, filters leads by allowed country codes, and logs location-based rejects to Google Sheets.
- Sends the remaining leads to OpenAI (GPT-5) to score fit and generate short notes (including an optional public comment opener for stronger leads).
- Selects the top-scoring leads, uses Apify to find verified email addresses for those profiles, and generates tailored connection notes, follow-up DMs, and email copy with OpenAI (GPT-5).
- Creates Gmail drafts for leads with an email address, appends all judged leads (and verdicts) to Google Sheets, and sends a Telegram digest plus a .txt attachment with full outreach details.
Setup
- Create an Apify account and add an HTTP Header Auth credential using
Bearer <your_apify_token> for the LinkedIn post search and profile scraper requests.
- Add an OpenAI credential with access to the GPT-5 model used for lead scoring and outreach drafting.
- Connect Google Sheets and create one spreadsheet with three tabs (for seen posts, dropped leads, and logged leads), then select the document and sheet names in the Google Sheets nodes.
- Connect Gmail and set up the Gmail Draft node (including any optional attachment mapping) to create drafts in your mailbox.
- Create a Telegram bot with @BotFather, add Telegram credentials, set
notify_chat_id in the Config step, and paste the same chat ID into the error-alert Telegram node.