🎯 HrFlow.ai Scoring & Searching O.E.M integration

How to enable Searching and Scoring experience within your ATS, CRM or ERP.


The purpose of this article outline the data exchange formats and setup necessary to build an OEM Matching (Scoring + Searching) integration between HrFlow.ai and a partner CRM.

This Matching integration can either be:

  • Match profiles to a job offer.
  • Match job offers to a profile.


For the sake of simplicity we will outline here the Profiles Scoring, but the same can be applied on Jobs

HrFlow.ai indexes the partner job offers and profiles data (parsed data from resumes + other data in the CRM). Levearging the Scoring and Searching APIs, matching requests can be retrieved within seconds.

The goal is that the recruiter stays on the ATS, CRM or ERP and scores all the profiles or jobs.

Here is an example of Talentsoft which is a partner that uses HrFlow.ai Scoring.

Data Indexing

Initial data import


An initial import is necessary in order to retrieve the historical data (profiles and job offers) in the CRM and index them in HrFlow.ai to make them available for scoring and searching.

To do this, it is necessary to follow a pulling process, by using two webservices :

  • A webservice that returns all the available jobs in the partner database
  • A webservice that returns all the available profiles in the partner database

Continuous synchronization

Once the initial data import is over, the continuous synchronization will be handled by a webhooks' mechanism.


==Update data flow==

HrFlow.ai->Partner: Request updated profiles    
Note right of Partner: Partner updating webservice content
Partner-->HrFlow.ai: List of lately updated profiles ordered by modification date
Note left of Partner: Partner responds
HrFlow.ai->HrFlow.ai: Updated profiles 
Note left of HrFlow.ai: Scoring Source


The CRM must provide:

  • An endpoint that allows to retrieve a profile object (structured data) given its unique reference in the CRM.
  • An endpoint that allows to retrieve a job object (structured data) given its unique reference in the CRM.

HrFlow.ai provides six webhooks endpoints corresponding to the following events:

Event NameDescription
profile_createTriggered when a new profile is created.
profile_updateTriggered when a profile's content is modified.
profile_archiveTriggered when an applicant is deleted or when a deletion is requested.
job_createTriggered when a new job offer is created.
job_updateTriggered when a job offer's content is modified.
job_archiveTriggered when a job offer is deleted.

When one of those events is triggered, the CRM needs to send an HTTP POST payload to the webhook's configured URL.

Webhooks payloads

  • Authentification : TBD
  • Body :
    "reference": "ITEM-CRM-UNIQUE-REFERENCE", 
    "event_type": "event_name",
    "event_date": "2022-03-01T14:21:58Z",
    "Accept": "application/json",
    "Content-Type": "application/json", 
    "Host": "api-workflows.hrflow.ai"

Ping call

When you create or setup a new webhook, you'll need to test or check if it works correctly. This API will help you to call your ping endpoint for the selected event with a static payload.

Scoring Profiles with respect to a given Job

The idea is to display the profiles with their respective match scores arranged in sequence (e.g. starting with those with the best match with the given job).

Within the CRM, in the Matching screen, the user can set his filtering criteria (see the list of criteria taken by the HrFlow.ai Scoring API) and upon validation, a request is performed to retrieve the most relevant candidates for the job and that match the criteria selected.

The partner uses the Scoring API to perform a GET request and get a list of profiles references with the corresponding scores.


Display Scoring results on the CRM screen

The Scoring API returns a list of references along with scores. The partner can therefore use the references to display the corresponding profiles on the screen along with their matching scores.

Scoring criteria

Scoring response

The response is provided in JSON format and must contain the list of candidates sorted by decreasing relevance to the search.

The response includes the following fields: