Fenjan

Fenjan

I was searching for PhD positions at the time and was too lazy to do it manually, so I spent endless hours hand-crafting hundreds of lines of code instead. The result was Fenjan — a small bot that scanned LinkedIn and Twitter for PhD openings each night and dropped them into my inbox every morning.

Fenjan v1 email

A few friends asked if they could use it too, so I extended Fenjan to support multiple users with their own keywords. Each morning, everyone got a personalized digest of PhD positions posted in the previous 24 hours.

Fenjan v2 email

Later I added scrapers for university job pages — 17 of them at its peak — to catch positions that never made it to social media.

Under the hood: Python with the Twitter API and Selenium handled the social-media side, Go handled the university scrapers, and SQLite stored everything.

There was also a Mastodon side bot at sigmoid.social/@fenjan that re-posted Twitter PhD positions to Mastodon. It pulled the tweet images along with the text and expanded shortened links, since Mastodon culture doesn’t love link shorteners.

Fenjan Mastodon screenshot

The funny part: I got my own PhD position from one of these emails. On 2023-03-17, Fenjan delivered the tweet below — Roman Bednarik (now my supervisor) announcing the Eyes4ICU DC3 position. I applied, got in, and that’s the position I ended up with.

The PhD position email Fenjan delivered

Soon after, Elon Musk bought Twitter and gutted the free API, which made the Twitter side of Fenjan impossible to keep running. LinkedIn also kept changing its layout and breaking my scrapers. Eventually I decided to turn the whole thing off. The codebase hasn’t been maintained since, but it lives at github.com/mh-salari/fenjan.