Prior to starting the req creation process, a Hiring Manager should follow the steps outlined to create a Job Family or create a MR to edit any relevant Job Family information as needed. For questions specific to Hiring Plans or how to go about making such changes, please refer to the Finance section of the handbook. The Hiring manager will then notify their Recruiter. The information they should be prepared to share with their Recruiter is as follows:
For the Product and Engineering backfill or transfer process, see this handbook page.
Once the req is approved, the Hiring Manager will review the position description in the /job-families
folder and update it, if needed. If there is no existing job family, they should follow the steps to create a new job family. A compensation benchmark for the role should be set by working with the Compensation & Benefits team.
It is important to ensure this process is done early, because it takes time to go through approvals and Total Rewards will not approve a job opening without a matching job family.
Job: A job refers to the job title (ex: Customer Support Specialist). This will also be what appears on external job boards. In the case there are multiple positions open that are the same, and we only want to list once, we can have multiple 'openings' (see next section) opened within one 'Job'. Each job will have a unique identifier called a Requisition ID (example- 1001).
Opening: A job can have multiple openings attached to it (ex: you are hiring 3 Customer Support Specialists. You would then have 1 ‘Job’ and 3 ‘openings’ against that job). A job can have multiple openings against it, but an opening can not be associated with multiple jobs. Each opening will have a unique identifier called an Opening ID (example- 1001-1, 1001-2, 1001-3).
GHPiD: GHP ID is the link between Adaptive (what we use to track our operating plan) and Greenhouse (our ATS). A GHP ID has a one to one relationship with an Opening ID. It is the key interlock between our hiring plans and our Talent Acquisition activity. This is a custom field in Greenhouse.
There are a few options for what to open in Greenhouse.
Open a new job
If you are looking to open a job for pipeline reasons, because a Hiring Manager has requested that you work on a role that will be open in the future but has not been approved, instead of an EVG role use our Greenhouse CRM. More information and enablement on our CRM will be coming in FY24 Q2.
For positions that are included in the GitLab Hiring Plan, the Recruiter will create approved in-plan requisitions.
The Recruiter will:
Any Status
at the top bar, select Draft
, and choose the template for the division. If you need a template created, please speak with a member of the Enablement team.Internal Job Name
is only viewable within Greenhouse, and the External Job Name
is what appears on the jobs page. Enter in the requisition's title in these fields, including Specialty, if applicable. These two fields should almost always be the same.
Department
is the department this role will fall under. Always choose a department and not a division (e.g. for a Security Engineer opening, choose Security within the Engineering
division, and do not choose Engineering
). If you are unsure of what department to choose, reach out to your FP&A partner.Anywhere
next to Office
. If an opening is dedicated to a certain region or time zone, uncheck the Anywhere
box and select any of the predetermined regions or time zones. In addition to the region or time zone you've selected, it's recommended to also choose Remote
so that it's clear to applicants that the opening is both located in a particular area but also still remote.Generate IDs
to create a requisition ID. You’ll need this again when you set up your opening(s).Employment Type
, select if your opening is a Full-Time, Part-Time, Intern, or Contract role. Contract refers to a true consultant, who works on short-term projects, and not someone in a country like the Netherlands who requires a one-year contract before indefinite. Recruiters will typically not hire Contractors.Yes
under Confidential?
. Anyone who has access to a position will have access to view the job in a report, so selecting Yes
will ensure that the Enablement team specifically excludes any jobs with this selected. It does not change access or permissions, so you will still need to evaluate those to remove anyone who should not see your job.Salary
will be input by the Total Rewards Team.
benchmark x level x 0.45
for the low end and benchmark x level x 0.8
on the high end.CO/WA Salary Range
CA/NY/NJ Salary
and will be input by the Total Rewards Team if the role accepts US applicants, unless the role is state-specific outside of Colorado, New York, and New Jersey (eg. a sales role that will only hire in Florida and Georgia). Recruiters can use 1-1
as the range as a placeholder when submitting the req for approval. The Recruiter will use the approved ranges from Total Rewards in their job post.Openings Section
. Start by clicking Generate Opening IDs
to create an opening ID - it will be your req ID with -1, -2, etc following it.Target Start Date
as listed on the GitLab Hiring PlanType
choose if this is a New Hire, Evergreen, or a Backfill. If you select Backfill, please enter the name of the teammate you are backfilling on the line below. If you choose Evergreen, ensure this is first approved by Jess Dallmar.GHP ID
listed on the GitLab Hiring PlanThe next page consists of attributes interviewers will be evaluating in their scorecards across the full interview process. These may not be known until after the Kick-off Session and may be skipped during the initial setup of the req. The Recruiter will update the scorecard after the kick-off Session.
The Interview Plan
, is where you'll craft the hiring process and scorecards for each step in the process. The interview plan may not be known until after the Kick-off Session and may be skipped during the initial setup of the REQ. The Recruiter will update the interview plan after the Kick-off Session. This section, however, is not optional: It is important that all interview rounds are determined prior to opening a req. They should be formatted as Topic/Competency, Interviewer Name, Interview length
(ie “Ruby Technical Interview, Harry Potter, 60 mins”).
The Hiring Team
is where you select who will be working on this opening and what access they should have.
Who's responsible for this job?
to assign the Hiring Managers, Recruiter(s), Coordinator(s) and Sourcer(s). Everyone who will be involved in interviewing may not be known until after the Kick-off Session. The Recruiter will update the Hiring Team after the Kick-off Session.Set up Notifications where appropriate. You should make sure that you are always notified for internal candidates and referrals, but the rest is up to your preferences. Most recruiters prefer to use their own names, rather than Candidate’s Recruiter, because it ensures they are notified even if the candidate is interviewing for multiple positions and therefore has a different default recruiter.
Scroll to the bottom of the page and click Request Approval
.
Send Reminder
, send a Slack, or add a comment to the approvals page while tagging the approver. Ideally, the approval process completes within 24 hours.The Recruiter will:
Job Post
under Job Setup
, which will hold the opening description. Next to the name of the opening, click the pencil icon to edit the job post.
Job Name
- if only internal candidates will be considered for the role, job title should read "CURRENT TEAM MEMBERS ONLY - Job Name"Post To
should always be Internal
.Location
is automatically set to Remote
. If there is additional location information you'd like to add that should be included in the Job Name.Application Language
should always be English
.Pay transparency rules
should always be N/A
, because we do not post salary ranges on internal positions.Description
should be the copy/pasted from the job family on GitLab.com with the relevant information for the level/specialty/etc.Target
to New Window
, then click Ok
and repeat for any other links in the description; this will ensure all links work properly.Internal Auto-Reply after Application
from the drop-down listInclude EEOC Questions
Include 'Apply with SEEK' button
Save
, then click the red button to publish the opening to our internal job board.#new-vacancies
for team members to apply or send in referrals.Slack message template:
New Job Alert: TITLE
Apply internally: LINK
Review how to make a referral: /handbook/hiring/referral-process/
Job Post
under Job Setup
, which will hold the opening description. Next to the name of the opening, click the pencil icon to edit the job post.
Post To
should always be GitLab
.Pay Transparency Rules
will help you post salary ranges to your job description, if applicable. If your job will be posted to locations Remote, Americas
, Remote
, or Remote, US
(any positions posted in the US), you should select Hiring in the USA
. If this job will not be posted in the US, select N/A
.Pay Transparency
section below it. Because Pay Transparency
is a new section, this is an important step to ensure clean job posts.Pay Transparency
section is visible, add the CO/WA and CA/NY/NJ salary ranges that you see on the Approvals page.Apply with SEEK
and Publish to Indeed
Setting up job posting rules when publishing a new job can save time later on by automatically removing candidates that are applying from countries in which we cannot hire them.
There are two fields that we can consider using job post rules to help manage applications: candidate location and candidate visa sponsorship needs. The recommendation is to implement a rule on job postings that automatically rejects candidates who are applying from countries where we cannot actively hire. To do this, the following steps should be taken:
Similarly, you can set up a custom rule to reject candidates based on visa requirements following the process above and applying rules to the question "Will you now or in the future require sponsorship for a visa to remain in your current location? (Please be aware that GitLab does not offer any form of Work Sponsorship.)"
If you are applying rules to reject candidates based on visa sponsorship needs it's important to consider whether there's a possibility that we may reject candidates with complex situations that we actually can hire. If there is any doubt, avoid using rules to reject candidates automatically based on visa sponsorship requirements.
Scorecard
after the kick-off Session. The attributes are typically split up into various categories, such Requirements
(copied from the job family), Responsibilities
(copied from the job family), and Values
(standard across all roles, see additional info in the next step).
Nice-to-haves
and add any applicable attributes there, making sure that your entire interview team knows that if a candidate does not meet any of those attributes it is not a negative against them.Add a Category
, and add the name of the category. In the category you can add additional attributes.Values
, which should never be deleted. The values are listed in such a way to match how the values are listed on our contracts. You will always have this added for you because it is part of every job template.Interview Plan
after the Kick-off Session.Get to Know Us
stage. This is also known as Application Review by the Greenhouse Milestone.Assessment
as the second stage in the process.
Add a Stage
.Copy from another job?
at the bottom of the pop-up and select an opening you know has an assessment. Click on Assessment
, then Add
.Take Home Test
, then Add
.Take Home Test
to Assessment
. Then hover over the second Take Home Test
on the right of the stage and change the text again.Edit
in the stage. You'll then want to select any attributes you want the grader of the assessment to focus on. This will typically be more technical in nature, but select whatever seems appropriate.Email to Candidate
. This is where you'll include the actual assessment questions. The "From" should be {{MY_EMAIL_ADDRESS}}
and "Subject" GitLab Application - {{CANDIDATE_NAME}} - {{JOB_NAME}} Questionnaire
. In the Body, craft an email and insert your assessment questions. Below the body, make sure that the link for candidates to submit tests
is ON. You can also add any attachments below that field if necessary.Grading Instructions
and include any specific items you want your graders to look out for when they review the candidates' answers. You can copy this section over from another job if applicable.Custom Questions
, be sure that there is either a Full Notes
custom question or that you add one. To add it, simply click Add Custom Question
, title it Full Notes
, choose Text
as the answer type, and click Add Custom Question
. If there are any other specific questions you want your graders to answer when reviewing the assessment, feel free to add them here. They can be required or not, depending on your preference.Graders and Notifications
, search for members of your team who can grade the assessments. You can select multiple people at this point, and when the assessments are actually sent out to candidates, each grader will appear and the person sending the assessment can delete extras so it is only sent to one person. You can also select who you want to be notified when the test is received; the test graders should absolutely be selected, and it's recommended for the recruiter to be notified as well. You can select any additional people to be notified as well if desired.Additional Settings
, check This interview requires scorecards to be submitted
and leave unchecked Hide candidate name and details from grader
.Save
.Screening
call stage, which should be standard across the organization. Click Edit
on this stage, scroll to the bottom, and choose the recruiter as the default interviewer and set interview duration to 30 minutes. It is important for this stage to be named the same across the organization for reporting purposes.Team Interview
, where the candidates will meet with peers and the hiring manager. Under this stage, you should see multiple interviews. They are typically called “Topic of interview, Interviewer, length of interview”. For example: Technical Interview, Harry Potter (60 mins). This will help CES know what to schedule.
Team Interview
stage should be laid out according to the order the interviews must take place.Edit
.
Interview Prep
, choose how long the interview should take (e.g. 30 minutes, 45 minutes, 50 minutes, etc.).Custom Questions
, be sure that there is a Full Notes
custom question in addition to the interview specific questions.Add Custom Question
, title it Full Notes
, choose Text
as the answer type, and click Add Custom Question
. Each interview topic should use consistent questions between candidates, so the Recruiter should collect those from interviewers and enter them before the interview process begins.Additional Settings
should both be checked.Save
.Background Check & References
, where you will see Reference Check forms. Do not remove or change these forms without speaking to Enablement.Justification
section used by the R&D division. This section should include three questions:
Offer
stage and cannot be edited or removed. Some important notes about the interview plan:
Hiring Team
after the Kick-off Session.Who's responsible for this job?
to assign the Hiring Managers, Recruiter(s), Coordinator(s) and Sourcer(s).Who can see this job?
section to set permissions to the team members who will need access. Search for someone's name, click the pencil and select the correct access level from the drop-down.Once a job has been setup in Greenhouse and posted to the GitLab public job board it will be automatically posted to the Careers Page.
The location field in Greenhouse will dictate where a particular job ends up being listed geographically.
There are set location options in Greenhouse to make this possible. Recruiters can choose from one of the following locations and that will ensure the job shows up on LinkedIn in the countries highlighted below
Location selection in Greenhouse | Countries where the associated job will post on LinkedIn |
---|---|
Remote | United States, Canada, United Kingdom, Netherlands, Ireland, Australia |
Remote, Global | United States, Canada, United Kingdom, Netherlands, India, Australia, Ireland |
Remote, Americas | United States, Canada, Mexico, Chile, Costa Rica |
Remote, EMEA | United Kingdom, Netherlands, Germany, France, Ireland, South Africa, Belgium |
Remote, APAC | Australia, New Zealand, South Korea, Singapore, Japan, India, Phillipines |
Remote, US | United States |
Remote, North America | United States, Canada |
Remote, France | France |
Remote, Japan | Japan |
Remote, Germany | Germany |
Remote, United Kingdom | United Kingdom |
Remote, Australia | Australia |
Remote, Europe-North/Central | Austria, Finland, Hungary, Latvia |
If you have a job that needs to show up in a different subset of countries, you can choose the most appropriate location tag and manually adjust the countries where that job shows up by following the instructions under the "Publishing jobs to LinkedIn" section.
To prevent a job from ever being posted on LinkedIn, include the tag #LI-DNI somewhere in the job description. This will indicate to the LinkedIn job wrapping system to ignore this job and it will not be posted on LinkedIn.
If you need additional rules set for a job post or set of posts on LinkedIn you can assign your own rules by following these steps.
All jobs created in Greenhouse are setup to be automatically posted to LinkedIn using their job wrapping feature.
As mentioned in the "Choosing the correct location for your published job" section, the location field in Greenhouse dictates where a particular job ends up being published.
Common issues that may need to be addressed for a job to correctly publish on LinkedIn:
Publish to Free Job Boards
within Greenhouse is selected, this information will override the location information. You should unselect the option Publish to Free Job Boards
.Prior to 2022 we used a more complex system to post jobs to various locations. If your job is showing up in places it should not, you may need to remove existing code from the source code in Greenhouse. To do this, follow these steps:
<div><span style="font-size: xx-small;"><span style="color: white">Remote-XXX</span></span></div>
anywhere in the job adWith some recent changes to the way greenhouse connects with LinkedIn, we're now able to give each of our recruiters access to edit their job posts on LinkedIn as needed. If you need to change the country or countries that a particular job shows up in or correct something about the listing you can do that by following these steps:
If you run into problems, you can reach out to the #talent-brand channel for support.
Greenhouse data is fed into our custom jobs page located at about.gitlab.com/jobs/all-jobs.
Each department in Greenhouse has a specific department ID associated with it. Those department ID's can be found in our Greenhouse API feed.
Specific departments are coded to show up in various categories, this is defined in the openings.js file that can be found in the folder source / javascripts / openings.js.
When new departments are created, we will need to add those to the openings.js file so that they appear correctly on our job board.
If new categories are needed on the about.gitlab.com/jobs/all-jobs job board we also need to update that index file.
Our jobs are now set up to automatically go to Indeed and Glassdoor and be posted as remote roles on both sites.
Recruiters should unselect or leave unselected the option in Greenhouse to "publish to free job boards" as this requires us to input city, state, and country data that overrides the remote job listing. There is an automation in place to automatically send jobs to Indeed and Glassdoor.
Sometimes we need to post vacancies on specialist job boards to attract talent. The budget for this will come from the Department with the open Req, and department leaders will need to approve the necessary budget.