DEV Community

Cover image for OpportuniTrack - Job Application Tracker powered by Nylas
James Shah
James Shah

Posted on

OpportuniTrack - Job Application Tracker powered by Nylas

This is a submission for the Nylas Challenge: Galaxy Brain.

What I Built and Why

As someone who has been through the job hunt process myself, I know how exhausting it is. Especially in this market, candidates are applying to hundreds of jobs every day and it gets very overwhelming to keep track of each application. That's when I decided to build an app to automate this process!

Presenting to you OpportuniTrack - Track your next big opportunity, effortlessly! (Join the waitlist now to get early access!)

An example notification from OpportuniTrack

OpportuniTrack automatically tracks job applications by analyzing the user's emails and extracting information such as Company Name, Job Position, and Status of application (Applied, Rejected, Offered, etc.) from the job-related emails(predicted by the model)

Unlike other job tracking tools, OpportuniTrack uniquely combines real-time email analysis with instant notifications, ensuring you stay on top of every opportunity without lifting a finger.

Okay, enough talk. Let's see it in action!

Demo

Code

GitHub logo jamesshah / opportunitrack

OpportuniTrack is an automated job application tracker app

OpportuniTrack - Track Your Next Opportunity, Effortlessly.

OpportuniTrack is an automated job application tracker using email.

Job hunt is exhausting (especially in this market!), and it's essential to keep track of hundreds of applications you submit everyday.

OpportuniTrack saves hours of manual work of keeping track of job applications everyday by automating it using your email

Features

  • Track applications automatically by connecting your email
  • Get notified whenever there is an update on your application
  • Add or edit applications manually
  • More features coming soon!

Architecture

OpportuniTrack Architecture

Note

  • OpportuniTrack is powered by Nylas API to securely analyze your emails
  • We only access emails that is likely to be a job application related email (predicted by our Machine Learning Model)
  • We don't store your email in our database, we only extract job application related information and store it



My Journey

Building OpportuniTrack was not as easy as I initially thought. As I've never developed a mobile app before, my first intuition was to build a web app. But with web app, I would not be able to give real-time update to user which is essential for this app since a job application update is a time-sensitive notification for users.

Now that I had decided to build a mobile app, the next challenge was to access the user's emails easily and securely. Nylas really shined here and with it's unified API for all different providers, I didn't have to worry about going through API documentation and setup process of various different providers.

With these tools and a lot of excitement, I started building OpportuniTrack.


I started with setting up Nylas and started exploring the APIs and features. Below are three 3 features that I used in this app, and I am planning to add more in future!

  • Auth API to get access to user emails
  • Email API to access user's past emails
  • Webhooks to get notified whenever user receives an email

Setting up a Node.js server and getting emails through Email API and Webhooks was really easy with Nylas.

Now the next task was to implement the brain of the application. The email analysis engine which would find the job application related email, extract information from it and finding the status of the application.

Initially, I thought of using a Large Language Model to do this, but soon realized that it was an over-kill and not cost-efficient at all. So, I decided to use traditional AI solutions - Text Classifier and Named Entity Recognition models.

I used a fine-tuned BART based model for email classification and GLiNER for extracting information from the email. These models are much smaller compared to LLMs and give decent accuracy with small fine-tuning.

With these two components ready, I had to enable communication between these two, since I needed asynchronous processing of the emails (Webhooks expect a response within 10 seconds and it can take more than 10 seconds to completely process the email and send notifications to the user). That's when I decided to use redis for queue-based communication between the server and the processing engine.

Finally, it was time to build the UI and connect all these pieces together to get it up and running. The complete architecture of the application came out to be as below:

Architecture


Things I learned and am proud of

  • This is my first iOS app, and getting it together within a few weeks is an achievement for myself
  • I learned more about distributed systems and the overhead that comes with it
  • Choosing Redis for queue-based communication was pivotal in ensuring the app's scalability and responsiveness. This choice allowed me to handle asynchronous processing seamlessly, addressing the challenge of webhook response time limitations effectively
  • Keeping the engineer ego aside and not using LLM just because it is trending and going with the simple solution that would work best for the problem at hand was a decision that will always stay with me

Thank you to @nylas_team and @thepracticaldev for providing the platform to bring OpportuniTrack to life. This challenge has been an incredible journey, and Iā€™m excited about the potential of OpportuniTrack to empower job seekers globally!

Please feel free to ask any questions you have in the comments!

Top comments (2)

Collapse
 
josectoscano profile image
Jose Carlos Toscano

Cool!

Collapse
 
jamesshah profile image
James Shah