Inspiration

After spending hours applying manually to over 100 jobs and cold-emailing hundreds of others, I quickly became disillusioned as to how difficult the internship search can be for college students. So, I decided to automate it, since most of the time cold-emailing and applying is busy work anyway.

What it does

The project takes a two-pronged approach to internship applications. It first scrapes the web for companies that fit the criteria of the user (location, field, description based on resume skills), finds verified emails of employees, and sends tailored cold emails highlighting the user's specific skillset according to their resume that could serve the company well in an internship position. The second prong is that it will automatically DM recruiters on Handshake, a popular job board for college students. The project will filter out jobs to fit your goals, then send customized messages to hiring managers and recruiters.

How we built it

I built it mainly using Python with HTML and JavaScript.

Challenges we ran into

The biggest challenge was quite specific: filtering out the employer postings on Handshake. It turns out that Handshake's URL is a URL-encoded JSON snippet, with multiple distinct parameters. Specifically, the industry type: Handshake has over 75 industries that they label jobs with, and has a specific index for each one that goes in the URL of a filtered employer board. Since nobody had posted this documentation online, manually going through one-by-one to determine what those values were was a bit of a pain.

Accomplishments that we're proud of

I am most proud of how I implemented email verification. Typically, if you just ask an LLM to scrape emails, about half of them will be fake emails or undeliverable. However, with a simple API call to a sales' leads generator, every email became verifiable, and that solved the problem of sending to fake emails.

What we learned

I learned that there are a lot of small steps that go into making a project like this, even though by itself it is seemingly not too complicated. The goal for projects like these is to minimize where you make an LLM API call because that is where error and uncertainty can be introduced.

What's next for AI Apply

I still want to nail the third prong of the entire approach: actually applying to job postings on sites like Handshake and Indeed. This is definitely the most difficult, but I learned a lot regarding controlling external browser tabs using libraries like Selenium, so I'm confident I can get it done.

Built With

Share this project:

Updates