Job Description
1. We have a _well-built_ existing data processing app built by an experienced professional.
2. The code is well-abstracted (DRY, using adapter pattern to plug in data sources), uses version control (git) and unit tests, and is overall pretty simple and robust.
3. It's been in production for about 2 years and the output of the app is used by 2-3 clients.
4. There have been no significant issues and the app runs without issue.
# What the app is for:
The app is built for clients in the recruitment industry, who,
(a) every time a new job is posted: want to automatically find the company behind the job post, and then
(b) find the hiring managers within those companies. Separately, we have the automation that does (b).
The SaaS app, for each client:
1. Receives and aggregates jobs from various sources
2. For each company, picks the 'best' job based on a select criteria (based on an algorithm/script), and then
3. Forwards the job to another platform for further processing.
# We are looking for a senior-level NodeJS dev:
1. To help us iteratively build the app based on the clients’ needs.
2. We’ll define customer needs and feedback on app outputs and architecture. We need you to bring expertise on code/architecture side and help drive development forward.
3. Process-wise, we'll define the requirements and your proposed code changes will be reviewed by someone on our team.
4. You should be very comfortable with version control and unit testing.
5. You have the ability to make well-reasoned decisions about architecture and when to take reversible shortcuts vs. when to do it rigorously.
6. We’ll help you get the requirements right and give you feedback, but you should be comfortable operating independently outside of that. (e.g. doing research and thinking about best way to approach things, willing to explain your reasoning and have it reviewed by us).
# What the app does, currently:
1. Receives scraped job posts at a web hook, enriches them with an API call, and adds each job to a table
2. Associates each job with the company that posted the job
3. A recurring script (every 30 mins) looks at companies that haven't been processed in N months and processes them by running an algorithm to select the top job (done with GPT-4 plus some pre-processing). This script will vary per client.
4. Top jobs are sent to a web hook where they are further processed outside the SaaS
# Your responsibilities:
1. The app is gathering data from LinkedIn via APIfy scraper (Actor). You are expected to make sure that it is working fine and make modifications as necessary.
2. The app will gather data from additional sources via linkages to other scrapers. You are expected to integrate them fully and ensure that the data is processed similarly to the existing system and passed to the subsequent system.
3. The app has been created to have multiple clients. You are expected to ensure that the correct client API keys are used so that incorrect billing does not happen. Also, the correct scraper jobs should run for the right client. Incorrect data should not flow into the subsequent system.
4. Currently, no logins/auth are necessary since it's just a data processing app configured with code.
5. We are planning a self-service system where clients can sign-up, enter their API keys, and purchase a subscription plan based on the data sources they choose, number of scrapers they have setup, etc.
6. We need separate js functions for each client and a way to adjust those functions.
7. We need each client to be able to have keywords (e.g. in a JSON object) regarding what types of jobs to scrape in specific geographies.
8. Add multiple job scraping sources and combine them together (enrichment may be necessary before merging data sources). You won't be responsible for building the scrapers. Note: some scraping outputs are available via web hook, and others via API.
If this job post sounds interesting to you, please share any questions and any thoughts on how you'd store the unique functions per client. What are the pros and cons of your chosen approach?
Note that the code is running on a Heroku instance, so the developer MUST have experience running and managing a Heroku setup. We are exploring moving away from Heroku and to a AWS / custom VPS. You are expected to create an architecture diagram and aid in the migration.
Your work WILL be reviewed by our internal team and you are expected to follow a process where you will share your proposed code or configuration changes first, get them reviewed and approved and then only make those changes.
We are also expecting that you will be available to handle issues if and when they crop up.
Responsibilities
- The code is well-abstracted (DRY, using adapter pattern to plug in data sources), uses version control (git) and unit tests, and is overall pretty simple and robust
- We’ll define customer needs and feedback on app outputs and architecture
- We need you to bring expertise on code/architecture side and help drive development forward
- Receives scraped job posts at a web hook, enriches them with an API call, and adds each job to a table
- Associates each job with the company that posted the job
- A recurring script (every 30 mins) looks at companies that haven't been processed in N months and processes them by running an algorithm to select the top job (done with GPT-4 plus some pre-processing)
- Top jobs are sent to a web hook where they are further processed outside the SaaS
- The app is gathering data from LinkedIn via APIfy scraper (Actor)
- You are expected to make sure that it is working fine and make modifications as necessary
- The app will gather data from additional sources via linkages to other scrapers
- You are expected to integrate them fully and ensure that the data is processed similarly to the existing system and passed to the subsequent system
- The app has been created to have multiple clients
- You are expected to ensure that the correct client API keys are used so that incorrect billing does not happen
- Also, the correct scraper jobs should run for the right client
- We are planning a self-service system where clients can sign-up, enter their API keys, and purchase a subscription plan based on the data sources they choose, number of scrapers they have setup, etc
- We need separate js functions for each client and a way to adjust those functions
- We need each client to be able to have keywords (e.g. in a JSON object) regarding what types of jobs to scrape in specific geographies
- Add multiple job scraping sources and combine them together (enrichment may be necessary before merging data sources)
- You won't be responsible for building the scrapers
- Note: some scraping outputs are available via web hook, and others via API
- You are expected to create an architecture diagram and aid in the migration
- Your work WILL be reviewed by our internal team and you are expected to follow a process where you will share your proposed code or configuration changes first, get them reviewed and approved and then only make those changes
- We are also expecting that you will be available to handle issues if and when they crop up
Requirements
- To help us iteratively build the app based on the clients’ needs
- Process-wise, we'll define the requirements and your proposed code changes will be reviewed by someone on our team
- You should be very comfortable with version control and unit testing
- You have the ability to make well-reasoned decisions about architecture and when to take reversible shortcuts vs. when to do it rigorously
- We’ll help you get the requirements right and give you feedback, but you should be comfortable operating independently outside of that
- (e.g. doing research and thinking about best way to approach things, willing to explain your reasoning and have it reviewed by us)
- Incorrect data should not flow into the subsequent system
- Currently, no logins/auth are necessary since it's just a data processing app configured with code
- Note that the code is running on a Heroku instance, so the developer MUST have experience running and managing a Heroku setup