This is a lightweight Chrome Extension that allows for natural language search on the Linkedin website. Simply input a prompt in the search bar and click the green "Perform Fuzzy Search" button. You also have the option of not using fuzzy search and further tuning your results by just searching as you normally would.
- Check if your Node.js version is >= 18 (you can run
node -v
). - Clone this repository.
- Run
npm install
to install the dependencies. - Run
npm start
- Load your extension on Chrome following:
- Access
chrome://extensions/
- Check
Developer mode
- Click on
Load unpacked extension
- Select the
build
folder.
- Access
- Pin the extension into your Chrome header.
- Input your OpenAI API key into the settings when you click on the extension icon.
- Feel free to stop the
npm start
command that was running before. - Enjoy!
This extension uses OpenAI's function calling capabilities to extract filters from the user's prompt. These filters include education, company, names, and important keywords. The filters are then applied to a Linkedin search through url, and finally displayed to the user.
Before this method was employed, previous attempts to create a fuzzy search bar proved to be very challenging. Originally, I intended to fetch all a person's first connections, extract profile data (using the Linkedin API), and encode profiles in vector embeddings so that similarity search could be employed. However, Linkedin's API is quite nonfunctional, outdated, and requires permissions from a developer program that does not actually exist (see this article). And so, the API was out of question.
Next, we tried getting data directly from their site or simulating user actions through Linkedin's Voyager API, which doesn't require weird permissioning. However, I managed to get three of my Linkedin accounts (two of them dummy accounts) restricted for an hour because they detected "automation". Upon further research, it was discovered that Linkedin has a hard set limit of 80 profile viewings per day, and if you view them too fast, you're also a bot. In other words, profile data could not be fetched from Linkedin, so I needed to turn to 3rd party services.
There are a number of 3rd party services out there, Proxycurl, People Data Labs, and Coresignal to name a few. However, I quickly realized, that while these products did work, they were quite pricey. If you were to fetch data from all your 1200 connections, if would have costed ~120 dollars. Thus, outside services were out of the question as well. Therefore, we turned to filters—improving on Linkedin's already existing natural language capabilities (which are not great).
Run the command
$ NODE_ENV=production npm run build
Now, the content of build
folder will be the extension ready to be submitted to the Chrome Web Store. Just take a look at the official guide to more infos about publishing.
Alex Sima | Linkedin haha