Track Your Job Search In Notion
Tags: notion, job, tracker, productivity
Published: 2022-11-26 17:48:12

Recently I'm looking for a new job opportunity and I'm also using Notion a lot for various stuffs, so I thought why not just combine both of these things.

Previously when I applied to open positions I didn't keep track of them, so I didn't know how many times I applied, whether or not I'm applying to the same company twice, and are the [companies ghosting](https://www.entrepreneur.com/business-news/what-are-ghost-jobs-and-why-are-they-everywhere-now/435666) me.

I looked around and found various [Notion Job Tracker Templates](https://www.notion.so/templates/job-hunt-tracker), but I just need a simple one, so I made my own template, [Minimalist Notion Job Tracking Template](https://musabs.notion.site/1a50dc00c7c14a159353c418569613fe?v=0d5dcdc966ca4847bfabc995e15af130).

At this time I started applying to jobs, every time I submit an application I fill out my template with the details I need when I look back to this application for an interview or for following up with the recruiter.

Now the problem I'm facing is every time when I apply to a job I need to fill in the notion template, and I'm seeing a [repetition](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself) here. As a software engineer I know the debt of doing things manually, so I started thinking how I can [automate](https://twitter.com/zhuowei/status/1254266079532154880?lang=en) it.

I saw Notion recently publicize their APIs and allow [integration/bot](https://developers.notion.com/docs/create-a-notion-integration), so I read through their docs.

First of all, I need to make a [new integration](https://www.notion.so/my-integrations).

Then I created a Node.js project, installed the SDK `@notionhq/client` through npm package manager, and saved `NOTION_DATABASE_ID` and `NOTION_KEY` in a `.env` file.

With just a single method `notion.pages.create` which takes an object with a few properties as arguments I was able to enter job details successfully.

I ran this script in [Replit](https://replit.com) which makes it really simple to iterate over new ideas and prototypes.

```javascript
import { Client } from "@notionhq/client"

const notion = new Client({ auth: process.env.NOTION_KEY })

const databaseId = process.env.NOTION_DATABASE_ID

async function addItem(
  company, website, status, role, application
) {
  try {
    const response = await notion.pages.create({
      parent: { database_id: databaseId },
      properties: {
        Company: {
          title: [
            {
              "text": {
                "content": company
              }
            }
          ]
        },
        Website: {
          rich_text: [
            {
              text: {
                content: website,
                link: {
                  url: website
                }
              }
            }
          ]
        },
        Status: {
          multi_select: [{
            name: status
          }]
        },
        Role: {
          rich_text: [
            {
              text: {
                content: role
              }
            }
          ]
        },
        Application: {
          rich_text: [
            {
              text: {
                content: application,
                link: {
                  url: application
                }
              }
            }
          ]
        }
      },
    })
    console.log(response)
    console.log("Success! Entry added.")
  } catch (error) {
    console.error(error.body)
  }
}

addItem(
  "Walmart",
  "https://www.walmart.com/",
  "sent",
  "Software Engineer",
  "https://careers.walmart.com/us/jobs/WD944268-software-engineer"
)
```

You might be thinking this code doesn't solve my problem of repetition, because in the `addItem` function I'm entering data manually. For that I've created a Chrome Extension which extracts all these fields from a job when I hit the submit button, so this blog post is just a small part of a bigger picture, but it doesn't mean you can't start right away. You can use my notion template and above code to get off the ground and explore new ways to automate job applications on your own until I share my Chrome Extension.

Btw I don't automate the portion where I've to fill up the job application, the portion where a company asks to upload a resume, cover letter and answer various other questions. I think I've better chance of getting hired by writing a personalized cover letter and answering all the other questions according to the company culture and their mission. I prefer quality over quantity. There is a [subreddit](https://www.reddit.com/r/Resume) which provides really good feedback on resumes. I learned various key things from the resume experts available there.