Find Local LinkedIn Connections
Search LinkedIn for local professionals, filter the best profiles with AI, generate personalized icebreakers, and send a daily briefing to your Slack channel.
Tags
This workflow handles your daily LinkedIn outreach by running a targeted Apify search for founders, engineers, and agency owners in your city every morning. It filters out corporate noise, selects the three most relevant people to connect with, and writes a personalized icebreaker for each one before dropping the full briefing into a Slack channel of your choice.
It does five things:
- Fires a scheduled trigger every morning at your chosen time.
- Checks a test mode variable to either return safe mock profiles or run a live Apify scrape.
- Normalizes the data from both paths into a clean, consistent format.
- Runs an AI agent to filter profiles, pick the top three, and write city-aware icebreakers.
- Sends a formatted Slack message with names, LinkedIn links, and ready-to-paste connection requests.
What you need
- A Needle account with the workflow builder open.
- An Apify account (free tier works) with the
curious_coder/linkedin-search-scraperactor available. - An Apify API token from your account settings.
- A Slack workspace with a channel you want the briefings delivered to.
- The Channel ID from Slack (found in the browser URL, starts with the letter C).
How the flow works
| Node | Name | Description |
|---|---|---|
| 1 | Morning Radar | Fires once a day at the configured time. Kicks off the entire pipeline. |
| 2 | The Gatekeeper | Reads Test_Mode, SEARCH_QUERY, and YOUR_CITY. Routes to mock data if testing, or builds a live search query if in production. |
| 3 | The Scraper | Calls the Apify LinkedIn Search Scraper using your API token. Includes error handling so failures do not crash the workflow. |
| 4 | Data Normalizer | Bridges the mock and production paths into one consistent object format, protecting the AI agent from malformed input. |
| 5 | The Networker | Uses an AI model to filter out spam, select the top 3 real humans, and write local-context icebreakers. Handles errors gracefully. |
| 6 | Slack Dispatch | Delivers the formatted markdown briefing to your configured Slack channel, ensuring you receive a useful status message. |
Output
Every morning you receive a Slack message in your chosen channel.
For each of the three targets, you get their full name, job title, LinkedIn profile URL, and a ready-to-paste casual icebreaker that mentions you are also working locally in the same city.
Notes
- Keep
Test_Modeset totrueuntil you have confirmed the Slack message is arriving correctly. The test run uses zero Apify credits. - The Apify LinkedIn actor depends on LinkedIn not blocking the scraper. If results dry up, check the actor status on the Apify marketplace.
- You can change the search niche by editing the
SEARCH_QUERYvariable. For example, you could target"SaaS Founder" OR "Product Manager"in any city you choose. - Change the cron expression and timezone in the first node to match your local time.
- Make sure your Apify token has permission to run actors and that the
curious_coder/linkedin-search-scraperactor is available in your account.
Want to showcase your own workflows?
Become a Needle workflow partner and turn your expertise into recurring revenue.
