Skip to main content

Natural Language Processing



Each jobpal chatbot uses Natural Language Processing (NLP) and Machine Learning (ML) to understand the intent of incoming messages to make the flow more natural. For example, not only “yes!” but also “yes, sure” should be recognised as agreement. By using machine learning, we are able to train the system over time, and change what intents are recognised; this maintenance and improvement are done internally by jobpal.

A chatbot also uses NLP/ML to respond to incoming questions (FAQ feature). Here, questions have to be trained by the HR team. This enables the team to quickly teach the FAQ system to recognise questions in new categories. For example, imagine that there is a fraudulent job posting, and then a candidate finds the chatbot and asks, “Hi, I just saw a post from Alice B regarding an open XYZ position in my city, is this real?” After the recruiter creates and trains, only a few examples into a new category, the NLP/ML system will immediately try to match any new questions that have overlapping topics into that category.

For every ML application, and especially one doing NLP, data quality is the biggest factor in performance. Especially with chatbots, datasets tend to be quite small and domain-specific. This is why we have developed a rigorous approach to cleaning and improving our datasets, in addition to constantly working to push the technical capability of our in-house ML/NLP service. For a deeper dive, we have a research article you can refer to regarding the data quality process and a related post on the jobpal developer blog: Why (and How) Explainable AI Matters for Chatbot Design.

We also work on improving the in-house service itself through a variety of state-of-the-art methods. A more technical article is also available that explains how we approach automated evaluation and monitoring of ML/NLP performance. Shorter description and poster slides are also available in our blog post: Plausible Negative Examples for Better Multi-Class Classifier Evaluation 

Intent recognition

Our NLP engine and ML technology are used to recognize the intent of every user query. Each user query is first assessed by our engine; depending on what intent is recognized, the chatbot behaves accordingly. There are few basic intents that our chatbot can recognize:

  1. Commands - can be used in the flow and allow the user to access certain features. Here are standard commands chatbots can handle:

    1. Main Menu - shows the main menu with the buttons (examples of messages that will trigger it: “Menu“, “Get main menu“ and similar).

    2. Restart - triggers a welcome message and restarts the chatbot (examples: “Start“, “I want to restart“).

    3. Question - triggers FAQ flow and allows the user to ask questions (examples: “I have a question“, “Can I ask you something?“ etc.).

    4. Feedback - if the feature is enabled, allows the user to access feedback functionality (examples: “I want to give feedback“ or “Can I write feedback?“).

    5. Help - allows user to access your help message - usually with main menu buttons (examples: “I need help!“, “Help me!“ etc.)

    6. Subscriptions - option for the user to see their job updates subscriptions and control them (examples: “Show me my subscriptions“, “Job alerts“, “Receive job updates“).

  2. Small talks like “Hello“ or “How are you” that trigger chatbot-specific small talk response.

  3. Find Job requests that allow the user to trigger job discovery flow or lead them straight to the job carousel.

  4. Other - questions that should end up in your Training view and get a response from your FAQ Dataset.

You can see an overview of that process here:




In the case of Find Job intent, we recognize two basic entities: Profession (job category or type) and Location (can be city or country). In both cases we are able to create global synonyms, which will impact all chatbots using that certain language. Those synonyms will allow your users to look through your jobfeed using names of locations and professions that maybe not correspond exactly to the way you have phrased them on your side.

Example: In your jobfeed you have New York City as location. But your users may not use the word “New York City“ while looking for the job positions in that city. “Work in New York“, “I am looking for a Marketing position in NYC“ or “Do you have open positions in NY?“ all are valid search requests, and global synonyms can make sure that New York City is understood when New York, NYC, or NY are given.

These synonyms are not adjusted on a customer level, and are rather managed by the jobpal team. If you can notice synonyms missing, please reach out to us and we are happy to consider adding it (if it will not have any negative impact on other chatbots).

Top Platforms Overview: WhatsApp, WebMessenger, Facebook, WeChat & SMS


The brain of the chatbot lives in SmartPal and you can easily train it using our dashboard. But how your users will be able to access it depends on the platform of choice. Each one has it’s benefits and drawbacks and it is crucial to understand the differences between them. They affect how you implement the flow, build the features and interact with your users.



Facebook Messenger

When the candidate is using the chatbot, they can easily be re-engaged since chatbot stays in their history as past interaction.

Chatbot has max. 24h idle time limit to provide messages back to the users if the Facebook page is not registered with the Facebook News Page Index (NPI). You can read more about it here.

Users who do not have a Facebook account still can use the solution without the need to log in or set up the account.

Chatbot conversation will remain available to those users for up to 24 hrs after the chat is closed. Since it is not connected to their account we cannot reengage in the Messenger app.

Thanks to Facebook Plugin chatbot is not only accessible from your Facebook page but also Career page (easy integration via snippet).


Job carousel, quick replies, buttons, and even option to include audio, image, and video files. 



No idle time limit, users will always get a response back.

Harder reengagement since the user has to come back to the page to receive the message back.

Easy implementation through a short code snippet.

No video support.

Job carousel, quick replies, buttons, and images. 


Embedded mode available if you wish to adjust the look and behavior of your chatbot on your own.


No login necessary - just start typing!


Support for message pre-population that enables easy deeplinking and campaign tracking.



You can use WhatsApp QR code or Click-to-Chat to guide mobile users to the app or desktop users to WhatsApp Web. 

No way for the user to interact with the chatbot on Career Page (they have to use WhatsApp web or move to their phone).

Easy re-engagement - chatbot stays as a past interaction on user’s WhatsApp.

NO proactive messages or messages after 24h user idle time. Possibility to use message templates to send proactive messages and messages after 24h at a cost (per each such a message).

Images in the chat are supported.

No buttons, carousels, or other advanced visual features allowed.

Support for message pre-population that enables easy deeplinking and campaign tracking.


The solution is encrypted and trusted by the users.



Easy re-engagement - chatbot stays as a past interaction on the user’s WeChat.

The menu of the WeChat account becomes a part of the chatbot and is no longer possible to manage from the WeChat level

Easy implementation (but has to be supported by the team managing WeChat account due to QR code security scans).

No buttons, carousels, or other visual features allowed (there is a possibility to include an image as an external link).


No idle time limit, users will always get a response back.

No buttons, carousels, or other visual features allowed.

Conversation history kept in user’s message flow.


Bot can initiate conversation (proactive messaging - country-specific limitations may apply).


Support for message pre-population that enables easy deeplinking and campaign tracking.




You will find here common terms we use while training and setting up the chatbot with their explanation.




NLP /  ML terms


AI stands for Artificial Intelligence. Artificial intelligence is the name given to any computer system taught to mimic intelligent human behaviours.


NLP stands for Natural Language Processing


ML stands for Machine learning. Machine learning enables AI systems to come up with their own solutions, rather than being pre-programmed with a set of answers.


An intent is the user’s intention. In all chatbot platforms, intent more specifically refers to the top-level intent category. For example, if a user types “show me yesterday’s financial news”, the user’s intent is to retrieve a list of financial headlines. Intents are given a name, often a verb and a noun, such as “showNews”.


An entity is also a common term when it comes to conversational agents. Entities are part of an utterance (what the user says). For example, if a user types “show me yesterday’s financial news”, the entities are “yesterday” and “financial”.

Entity type

Example: “profession” (actual value can be “Developer”, “Tester”, “Sales”) or “location” (actual value might be “Berlin”, “Los Angeles”, “Tahiti”)


A question is a phrase entered by the candidate (end user) to the chatbot. The chatbot tries to find the matching answer (or action) and react accordingly. Each question belongs to a category.


A group of questions around the same topic.

Generic answer

Each category has a generic answer which is supposed to be an adequate answer to all the questions belonging to the given category.


A question can have context-specific answer. Example: the answer to the “What’s the salary?” question can be job position-dependent. Hence, specific contexts can be created, for example for job offers. 

Context-dependent category

A group of questions that besides a generic answer has a set of context dependent answers.

FAQ / FAQ Set / FAQ Data / Dataset

The summary of all the questions, categories, contexts and answers.


A typically continuous process of adding new questions to a dataset, assigning questions to categories and adding answers.

Small talk

Non category specific generic topics, like saying hello or goodbye.

Dataset Review

Review of the current FAQ dataset of the customer based on developed for that purpose jobpal’s tools

Dashboard related terms


Our web based interface to train datasets, manage companies and related bots, and monitor various metrics, used by customers and admins.


A section of our dashboard where dashboard users can monitor metrics about customer / chatbot interactions. Like questions asked and answered, distribution among categories, etc.

MFA or 2FA

Stands for Multi Factor Authentication or Two Factor Authentication. A security protocol that involves additional authentication protocol(s) besides the username/password method. Our dashboard implements 2FA, using Authenticator app as the secondary channel.

Chatbot related terms


Aka “agent”. The artificial conversation partner of our end users (candidates).


The place where the actual conversation takes place between an end user (candidate) and a chatbot. Example: Facebook, Whatsapp, WeChat, WebMessenger, SMS.


A “roadmap” for a chatbot, containing multiple steps, describing a sequence of actions performed by a chatbot.

Content discovery flow

A sequence of static information displayed by the bot. The end user (candidate) typically has some level of control on the display order (like being able what to be shown next or being able to go “back”). This functionality is used for the “About us” section in a conversation where you can present generic information about your company.

Job discovery flow

A series of questions in the conversation where the candidate can narrow down the job offers to his/her specific interest. The sequence of questions for a specific chatbot can be decided upon during implementation. Example: the bot shows the available countries first and requests the candidate to select. Then based on the selection, shows the available cities, then the company divisions, job types, etc. As a result, the available jobs are shown in a form of a job carousel.

Job carousel

A set of jobs displayed for the end user (candidate) in a nice visual form. The end user can pick a job and ask for more information or apply for it.

Job application flow

A series of “pre-screening” questions asked by the chatbot after the end user decided to apply for a specific job, it includes generic information like name and email, but job offers can have job offer specific questions as well. The answer to these questions are attached to the candidate’s application.

Feedback flow

At the end of the conversation the chatbot might ask (configuration dependent) for feedback regarding the end user’s conversation experience.

Quick replies

A set of predefined answers the bot displays when asking a question. Typically used during the job discovery or job application flow. There are platform-specific limitations regarding the number of quick replies can be used on a question.


Similarly to quick replies buttons are pre-set options an end user can use instead of typing in a free text answers. Typically used in the content discovery flow and in the job carousel. There’s a platform limitation of 3 buttons per question.

Generic terms


Stands for Applicant Tracking System. Typically used by our customers, and connected to our system. We (typically) get a job feed from the customer’s ATS and send the candidates' applications back.

Job feed

A list of available job positions, fetched from the customer’s ATS.

Chatbot Trainer

A person from customer side that is actively training and managing the dataset: deleting, approving and adding questions to the dataset.