How We Built LinkedIn Placements

January 5, 2016

Every year, six million students in Indian universities graduate from various disciplines and enter the job market. These new graduates typically find their first jobs either through their university’s placement efforts, or on their own.

For university placements to be successful, placement officers have to collect graduating student data, tabulate it into spreadsheets, receive job details from recruiters, and post jobs on campus and administer placements, all manually.

At LinkedIn, we saw a huge opportunity to bring value to our members who are students, recruiters, or placements officers in multiple ways, by:

  • Providing a single well-integrated system that allows placement officers, recruiters and students to participate in the recruitment process;

  • Enabling students to build their professional profiles and networks by connecting with batchmates and alumni;

  • Following companies that students are interested to interview with;

  • Most importantly, helping students find their dream first job.

To this end, we decided earlier this year to develop a solution that would replace the largely manual process with software that would make it easy for all Indian universities to manage campus placements with ease and consistency. Our new LinkedIn Placements system allows graduating students to leverage LinkedIn as they transition out of university and into the workforce.

How did LinkedIn Placements take shape?

The campus placement process, as it exists today, spans several months. During this period, placement officers have the arduous task of gathering graduating student records, pairing  students to jobs posted on campus, and facilitating recruiters to find students that match the job requirements. This in and of itself is a massive task but doesn’t address the gaps in

  • Workflows - absence of a unified workflow platform results in a long-drawn and resource-intensive process for universities and colleges and expensive for companies

  • Visibility - limited visibility of job opportunities for students based on their academic performance and interest.  

  • Real-time communication - lack of timely notifications to placement officers, students and recruiters during hiring results in students not finding their first dream jobs

LinkedIn Placements addresses the above issues with three tightly intertwined workflows. These workflows unify the entire placement process into a single system that automates the previously manual work for placement officers. Together, they provide real-time visibility of the placement process to all three entities and enable students to find opportunities that best fit them.

Placement Officer

This workflow is initiated by the placement officer. The placement officer sets up courses that universities offer and uploads graduating students’ data into the system. During administering placements, the placement officer approves jobs posted on campus, approves applications from students, and finally approves or rejects job offers extended by the recruiter.

Company Recruiter

The company recruiter posts jobs at various universities and guides each eligible student through the interview process. At the end of this cycle, the recruiter submits a job offer to the student. The offer has to be approved by the placement officer before it is sent to the student.

Graduating Student

The student has an opportunity to apply for jobs for which they meet the eligibility criteria. For jobs they are ineligible for, the student can reach out to a placement officer and request to participate in the evaluation process. At the end of the process, the student either approves or rejects the offer extended by the placement officer. The student workflow is both a desktop and a mobile web experience.

 

  • LinkedIn Placements

Engineering LinkedIn Placements    

We developed the LinkedIn Placements solution using the standard engineering stack for LinkedIn applications. It uses the Play framework at the application layer and Dust for the User-Interface layer. The development paradigm used is Model-View-Controller. Controller implements business logic while Model loads up data from a backend data store. View takes care of rendering data to the member's browser.

The application stack is divided into four layers.

  • Play front-end

    • UI layer

  • Rest.li resources

  • Data Services

  • Data store

Play frontend

The Play front-end consists of controllers that implement the business logic. There are controllers defined for each action invoked on the application. The controller processes member requests by initializing various objects through the Model layer. The returned data is then rendered on the client’s browser via View methods.

Parseq is a framework, open-sourced by LinkedIn, that simplifies implementation of asynchronously calling dependencies. It provides distinct advantages in the context of LinkedIn Placements, specifically, when calling multiple notification services (emails, SMS, LinkedIn Notifications). The tooling around Parseq allows for deep debugging of failures. It also provides better support for error handling, thread-safe updates on shared data, and lazy execution of tasks.

The UI layer is decoupled from the model and the controller through Dust.js templates. It is designed using LinkedIn’s own style guide & design library built using SassCompass andArchetype. JavaScript for different UI components are modularized as per Universal Module Definition.

Rest.li resources

Rest.li is a framework, open-sourced by LinkedIn, that allows for building robust, scalable and fault-tolerant RESTful clients and servers. The engineer needs to define data model and resources; Rest.li takes care of

  • mapping calls to the appropriate resource

  • parsing requests to extract query parameters

  • initializing the resource that would handle the request

  • invoking the method to process request, and

  • serializing the response object while returning to requestor.

Rest.li design supports asynchronous APIs so that clients can make non-blocking requests in parallel and stitch together responses from multiple servers. Servers can handle much higher throughput since clients are non-blocking.

The LinkedIn Placements Rest.li service (a.k.a. "resource") consists of finders, batch functions (get, create, update), and actions. The Rest.li framework ensures that implementation is consistent and can be used by any application in the LinkedIn ecosystem.

We were under a tight deadline to build Placements system. Since LinkedIn Placements' primary objective is to find jobs for new graduates, if we missed the current placement cycle, we would have had to wait 12 months for the next one. We also want to make sure that all three types of members would be able to find the system useful. So we leveraged a number of existing Restl.li services to develop a complete system and build critical product features in just a few short months, including:

  • Stork (LinkedIn’s Email platform) to deliver email and SMS messages, and Notifications (LinkedIn’s Communication platform) to update the network on user actions. Stork and Notifications make it possible for members to get real-time updates. This was crucial for us because we didn't want students to miss out on important job posts. We also felt that it will help recruiters and placement officers expedite the hiring process. Using Stork and Notifications APIs, we added this feature very easily. These are the most important engagement hooks on Linkedin Placements;

  • Registration for recruiters and students; students can represent their professional identity with the profile created at the time of registration;

  • Media Services makes it easy to upload and process the large number of student records.

  • PYMK (LinkedIn’s People You May Know) lets students start to build their network very early on in their career by connecting with classmates and alumni.  

Each of these is a massively scaled platform. The development cycle was greatly reduced in length since we could use these existing Restl.li services to build critical engagement hooks on LinkedIn Placements.

Data Services

Data services map to the database layer. The SQL for all CRUD operations are defined in the data service layer. Data aggregation to serve the Rest.li resources is serviced by the Data Services layer, using individual SQL statements.

Data Store

The LinkedIn placements data is stored in a MySQL database. The database layer is managed by LinkedIn DBOps team. The data is replicated via Golden-gate between our data centers.

Conclusion

At LinkedIn Engineering, one of our core values is Leverage.  We try to use existing technologies as much as we can to enable us to move as fast as we can.  We realized that we could help solve a major problem for the Indian graduate job market by building on some technologies we've already developed.  This is how we created LinkedIn Placements for six million university graduates.

Topics