Learning and Hiring made easy with MindsDB
This project/article is co-authored by lokprakash babu and Chris Blesson.
PS: This is a lengthy article with suitable flow video in the sections. Collective videos of all the flows can be found at the end of the blog.
Introduction
Hiring process for a non technical job, such as Customer support engineer, is harder than hiring a person for technical jobs. The potential major difficulty arises because of two reasons
Lack of collective pool of candidates in one place.
Lack of quality resource for candidates to prepare.
The reason for the above mentioned difficulty is, there is a lack of practice/interview resources for non technical job. Whereas for technical job we have platforms such as Leetcode and Hacker rank.
Hence, we created a product, Skillsnap, which could solve the above mentioned pain points.
About Skillsnap
The Skillsnap is a learning management platform and also a hiring platform. There are two personas available in Skillsnap,
Candidate - someone who aspires to fill a non technical job position in a company.
Hiring manager - someone who wants to hire a person for a non tech job opening.
Candidate
A candidate can come to this platform for
Learning
Skillsnap contains a list of lesson modules which can be consumed by a candidate for learning purposes.
MindsDB is used in learning module to provide Summarization and Question answering feature for making the learning process efficient.
Practicing
Along with the learning modules there are practice modules on which a candidate can apply the knowledge they gained.
Upon submitting a practice question, a candidate can view the AI powered feedback for their submission which helps in improving the candidate skills.
Contest
The contests in Skillsnap are nothing but a job posting which are created by hiring managers. Like all the contests, they have a start date and end date within which a candidate can make a submission. A contest has various scenario based questions, these questions can be generated through AI, and the job description.
Once a candidate submitted a contest, feedback will be generated and the candidate can view the score, Mindsdb powered feedback, and points for improvement.
Hiring manager
Skillsnap helps hiring manager to view the collective pool of candidates and to create a job posting in the platform.
A hiring manager can create a contest with the job description for which the hiring is needed. While creating a contest, the hiring manager can make use of the AI for efficient operation.
A hiring manager can leverage MindsDB to access a comprehensive pool of globally recommended candidates for hiring. This intelligent recommendation system analyzes candidates' past practice or contest submissions, enabling the hiring manager to make informed decisions. With MindsDB, the hiring process is enhanced through data-driven insights, ensuring that the selected candidates align seamlessly with the organization's requirements. This advanced tool not only streamlines the hiring workflow but also empowers the hiring manager with a powerful resource for identifying top talent on a global scale.
Contest creation:
MindsDB usage in Skillsnap
Indeed, MindsDB serves as the backbone for a range of AI-based functionalities within the system. It plays a pivotal role in:
Lesson Summarization: MindsDB contributes to distilling key information and generating concise summaries for lessons, providing users with a quick overview of the content.
"ASK AI" Feature in Lessons: The interactive "ASK AI" feature, likely involving queries or questions, relies on MindsDB to comprehend and respond intelligently to user inquiries within lessons.
Generating Feedback for Practice/Contest: MindsDB is instrumental in assessing user performance in practice and contest scenarios, generating insightful feedback to aid in skill improvement.
Contest Creation for Hiring Manager: For hiring purposes, MindsDB is utilized in creating contests tailored to the specific needs of the hiring manager. This ensures that assessment processes are efficient and aligned with the desired skill sets.
Candidates Recommendation: The AI capabilities of MindsDB are harnessed to analyze candidates' historical data, practice, or contest submissions, providing recommendations to hiring managers for selecting suitable candidates.
By leveraging MindsDB across these diverse functionalities, the system benefits from a unified, intelligent approach to lesson management, user interaction, performance assessment, hiring processes, and candidate recommendations.
Tech stack
Authentication
- Clerk Auth
Frontend
- Next JS
Backend
Next JS(Serverless functions)
Mysql - database
MindsDB - AI operations
Docker
Implementation
Let's start with the Database implementation,
We have created 5 different tables,
Accounts - To hold all the account related information like user ID, user email and the user type(Candidate or hiring manager), organisation ID(only for hiring manager).
Contest - Holds all the contests created by hiring manager. A hiring manager can view all the contests created under the hiring manager's organisation.
Feedback - Holds the feedback and score for the contest or practice problem.
Submission - Holds the answers submitted by a candidate for a contest or practice problem.
Organisation - Holds the list of created organisation in Skillsnap.
Next, we have created MindsDB models for AI operations,
- ML Engine
CREATE ML_ENGINE openai_engine
FROM openai
USING
api_key = 'openai_key';
Contest creation
This model is used to generate the text for contest questions, and job description.
CREATE MODEL contest_creation_askai PREDICT answer USING engine = 'openai_engine', model_name = 'gpt-4', prompt_template = 'answer the question of text:{{question}} in a text:{{conversation_tone}} manner';
Conversation bot
Used as a conversational agent
CREATE MODEL conversation_agent PREDICT response USING engine = 'openai_engine', max_tokens = 500, model_name = 'gpt-4', prompt_template = 'Remember you are {{context}}. Given the previous conversation messages are {{previous_messages}} and the latest customer support agent message is {{latest_message}}, respond within 20 words'
Summary bot
Used for text summarization
CREATE MODEL summary_bot PREDICT highlights USING engine = 'openai_engine', model_name = 'gpt-4', prompt_template = 'provide an informative summary for the {{article}} within 250 words';
ASK AI in Lessons
This model is used for answering queries by AI.
CREATE MODEL lessons_askai PREDICT answer USING engine = 'openai_engine', model_name = 'gpt-4', prompt_template = 'answer the question:{{question}} based on the text:{{article_title}} and do not answer any question irrelevant to the text';
Language Proficiency evaluate
This is to evaluate a candidate's answer for the grammatical accuracy and proficiency.
CREATE MODEL evaluator_model_language PREDICT response USING engine = 'openai_engine', max_tokens = 300, model_name = 'gpt-4', prompt_template = 'Provide a feedback in a second person view on grammatical proficiency within 100 words for {{answer}}'
Tone evaluator
This is to evaluate the tone of a candidate's answer.
DROP MODEL evaluator_model_tone CREATE MODEL evaluator_model_tone PREDICT response USING engine = 'openai_engine', max_tokens = 300, model_name = 'gpt-4', prompt_template = 'Check the politeness for the {{answer}} and provide feedback within 100 words in second person view on how to make it more polite'
Score generator
This is to generate an overall score on the candidate's answer
CREATE MODEL evaluator_model_score PREDICT response USING engine = 'openai_engine', max_tokens = 300, model_name = 'gpt-4', prompt_template = 'Provide a single score in the range of 1 to 10 for {{answer}} based on the grammatical accuracy and the politeness. Do not add any other text apart from the score.'
Recommendation
Creating view
CREATE OR REPLACE VIEW mindsdb_test.feedback_view AS SELECT JSON_EXTRACT(feedback, '$."score"') as score, JSON_EXTRACT(feedback, '$."language_proficiency"') as language_proficiency, JSON_EXTRACT(feedback, '$."overall_feedback"') as overall_feedback, JSON_EXTRACT(feedback, '$."tone_feedback"') as tone_feedback, candidate_id, entity_id FROM mindsdb_test.Feedback;
Training and creating model
CREATE MODEL practice_recommendations FROM planetscale_datasource (SELECT * FROM feedback_view) PREDICT candidate_id USING engine = 'lightfm', item_id = 'candidate_id', user_id = 'entity_id', threshold = 5, n_recommendations = 10;
querying the model
SELECT b.* FROM practice_recommendations AS b where recommender_type = 'user_item';
From here on we will call evaluator_model_language
, evaluator_model_tone
and evaluator_model_score
collectively as evaluator bots.
User flows and technical details
Account onboarding(Two paths)
When a user signs in for the very first time, the platform shows two paths for registration.
Hiring manager
Candidate
If the user proceed registering as a candidate, we ask for resume, area of interests, email and experience, whereas for hiring manager instead of resume we ask for organisation, rest of the fields are same.
Candidate Registration:
Hiring manager registration:
Candidate:
Lessons
Lessons are powered out of the code base.
export const lessons = {
lesson_1: {
title: "Technical Foundations for Customer Support Engineers",
about: "Foundation for customer support",
content:
"## Section 1.1: Understanding the Role\nCustomer Support Engineering plays a pivotal role in modern business operations, acting as the bridge between customers and technical solutions. At its core, the role encompasses a multifaceted approach to addressing customer needs, ensuring satisfaction, and contributing significantly to the overall success of a business.\n\n### Definition and Scope of Customer Support Engineering\nCustomer Support Engineering involves the application of technical expertise to assist customers in using a product or service effectively. It goes beyond traditional customer service by delving into the intricate technical aspects of the offerings. Support engineers troubleshoot issues, resolve technical queries, and ensure seamless interactions between users and products. The scope covers a spectrum of responsibilities from resolving software bugs to guiding users through complex configurations, requiring a blend of technical proficiency, problem-solving skills, and effective communication.\n\n### The Significance of Customer Support in Business Success\nIn the contemporary business landscape, customer support is not merely a reactive service; it is a strategic asset. The success of a business is intricately tied to customer satisfaction, and an efficient customer support team can turn challenges into opportunities. Positive customer interactions contribute to brand loyalty, customer retention, and positive word-of-mouth, all of which are essential for sustained growth. The role extends to customer education, ensuring users harness the full potential of the product or service, building trust, and positioning the support team as a partner in the customer's journey.\n\n## Section 1.2: Key Responsibilities\nTo effectively carry out the responsibilities of a customer support engineer, it is crucial to understand the diverse tasks and strike a balance between technical prowess and interpersonal skills.\n\n### Identifying Common Tasks and Responsibilities\nCustomer support engineers encounter a variety of tasks daily, ranging from addressing straightforward technical issues to investigating and solving complex problems. The ability to quickly diagnose and resolve issues is paramount, as is the skill to document solutions for future reference. Additionally, they act as liaisons between customers and other departments, conveying valuable feedback to improve products or services and ensuring a seamless flow of information within the organization.\n\n### Balancing Technical and Interpersonal Skills\nWhile technical proficiency is a cornerstone, customer support engineers must also possess strong interpersonal skills. Clear and concise communication is key to conveying complex technical information to customers who may not have a similar level of expertise. Empathy and patience are equally vital, especially when dealing with frustrated or non-technical users. The delicate balance between technical acumen and interpersonal finesse distinguishes an exceptional customer support engineer, serving as the face of the company and significantly impacting the overall customer experience.\n\nIn the subsequent chapters, we will delve into the technical foundations, communication skills, time management strategies, and continuous learning initiatives that collectively contribute to the development of a well-rounded and effective customer support engineer. Understanding the nuances of this role is the first step towards mastering it and, ultimately, becoming an invaluable asset to any organization.",
category: "customer_support_engineer",
},
lesson_2: {
title: "Customer Interaction and Communication Skills",
about: "Skills required for customer support",
content:
"## Section 1.1: Product Knowledge\nIn the realm of customer support engineering, possessing in-depth product knowledge is not just an asset; it's a prerequisite for success. A customer support engineer serves as the frontline expert, guiding users through technical intricacies and problem-solving. To achieve this, a comprehensive understanding of the company's products or services is paramount.\n\n### In-Depth Understanding of the Company's Products or Services\nCustomer support engineers should strive to be product experts. This involves not only knowing the basic features but also understanding the underlying technologies, architecture, and potential challenges users might face. A deep dive into the product ensures that support engineers can provide effective solutions promptly.\n\nStaying abreast of product updates and new releases is equally crucial. Continuous learning about enhancements, patches, or changes allows support engineers to stay ahead of potential customer queries. This proactive approach instills confidence in users, showcasing a commitment to providing the best possible support.\n\n### Staying Updated on Product Developments\nIn the dynamic landscape of technology, products evolve rapidly. Customer support engineers need to stay informed about the latest developments in their company's offerings. This involves actively participating in internal training sessions, reading release notes, and possibly engaging in beta testing.\n\nBeing up-to-date on product developments not only aids in issue resolution but also enables support engineers to anticipate potential user concerns. It positions them as proactive problem solvers, ready to address challenges before they impact a broader user base.\n\n## Section 1.2: Troubleshooting Techniques\nA fundamental pillar of customer support engineering is the ability to troubleshoot effectively. Users turn to support engineers when they encounter technical glitches or challenges, and the skill to systematically address these issues is paramount.\n\n### Systematic Approach to Problem-Solving\nTroubleshooting is not a random process; it requires a systematic approach. Support engineers should follow a logical sequence of steps to identify and rectify issues. This may involve isolating the problem, gathering relevant information, and utilizing diagnostic tools.\n\nA systematic troubleshooting approach not only enhances the efficiency of support but also provides a structured way to document solutions. This documentation serves as a valuable knowledge base for the entire support team, contributing to continuous improvement.\n\n### Effective Use of Diagnostic Tools\nIn the modern tech landscape, diagnostic tools are indispensable for identifying and resolving technical issues. Customer support engineers must be adept at utilizing these tools to gather data, diagnose problems, and implement solutions.\n\nTraining in the efficient use of diagnostic tools is crucial. Whether it's log analysis, network monitoring, or debugging tools, support engineers should have a toolkit of resources to draw upon. This proficiency not only accelerates issue resolution but also enhances the engineer's overall technical competence.\n\n## Section 1.3: Communication Skills\nWhile technical prowess is foundational for customer support engineers, effective communication is the bridge that connects this technical knowledge to users who may not be as technically inclined.\n\n### Clear and Concise Communication with Customers\nCustomer support engineering involves translating complex technical information into understandable terms for users. Clarity and conciseness in communication are vital. Support engineers should be able to articulate solutions in a way that is accessible and comprehensible to users with varying levels of technical expertise.\n\n### Translating Technical Jargon into User-Friendly Language\nOne of the challenges in customer support is the potential communication gap between technical teams and end-users. Support engineers act as translators, converting technical jargon into user-friendly language. This requires not only a deep understanding of the technical details but also the ability to convey this information in a manner that resonates with the user.\n\nEffective communication is a two-way street. Support engineers must not only provide information clearly but also actively listen to users, ensuring a mutual understanding of the problem and its resolution. This empathetic approach contributes to a positive customer experience.\n\nIn mastering these technical foundations, customer support engineers position themselves as reliable resources capable of navigating the complexities of product knowledge, troubleshooting, and effective communication.",
category: "customer_support_engineer",
},
lesson_3: {
title: "Time Management and Prioritization",
about: "About listening skills",
content:
"## Section 1.1: Active Listening\nIn the realm of customer support engineering, the art of active listening is a cornerstone skill. Beyond the technical know-how, the ability to truly understand and empathize with the customer's needs is essential for effective problem-solving.\n\n### Techniques for Active Listening\nActive listening is more than just hearing; it involves a conscious effort to comprehend the customer's perspective. Support engineers can employ various techniques to enhance their active listening skills. This includes paraphrasing to confirm understanding, asking clarifying questions, and providing feedback to assure the customer that their concerns are being heard and valued.\n\nActive listening also involves non-verbal cues such as nodding or using affirmative expressions to convey engagement. This not only facilitates better communication but also fosters a positive customer experience.\n\n### Understanding Customer Needs through Effective Listening\nThe primary goal of active listening is to understand the customer's needs accurately. This understanding goes beyond the surface-level symptoms of an issue; it delves into the underlying concerns and frustrations the customer may be experiencing.\n\nBy actively listening to customers, support engineers can tailor their responses to address not only the immediate technical problem but also the broader context in which the issue arises. This customer-centric approach is key to building trust and loyalty.\n\n## Section 1.2: Effective Communication\nCommunication skills are the linchpin of successful customer support engineering. Whether in written or verbal form, the ability to convey information clearly and effectively is crucial for fostering positive customer relationships.\n\n### Written Communication Skills (Email, Documentation)\nIn the digital age, a significant portion of customer interactions occurs through written communication, such as emails or documentation. Support engineers must master the art of clear and concise written communication. This involves structuring information logically, using plain language, and providing step-by-step instructions when necessary.\n\nDocumentation plays a pivotal role in knowledge sharing within the support team and beyond. Well-documented solutions not only serve as valuable resources for future reference but also contribute to the overall efficiency of the support process.\n\n### Verbal Communication Skills (Phone, Video Calls)\nIn scenarios where verbal communication is required, such as phone or video calls, support engineers should exhibit effective verbal communication skills. This includes speaking clearly, maintaining a professional tone, and adapting communication style to the customer's level of technical expertise.\n\nVerbal communication is not just about relaying information; it also involves active engagement. Support engineers should encourage questions, confirm understanding, and provide assurance to the customer. A positive and confident verbal communication style enhances the overall customer experience.\n\n## Section 1.3: Handling Difficult Situations\nCustomer support engineering often involves navigating challenging scenarios, such as dealing with frustrated or angry customers. The ability to handle difficult situations with finesse is a testament to a support engineer's professionalism.\n\n### Dealing with Frustrated or Angry Customers\nFrustration is a natural reaction when users encounter technical issues. Support engineers must approach these situations with empathy and patience. Acknowledging the customer's frustration, expressing understanding, and assuring them that their concerns will be addressed are crucial steps in de-escalating tense situations.\n\nIt's important to refrain from taking customer frustration personally and instead focus on finding solutions. Offering alternatives, setting realistic expectations, and following up on the resolution progress are additional strategies to turn a negative experience into a positive one.\n\n### Conflict Resolution Techniques\nIn situations where conflicts arise, conflict resolution skills become invaluable. Support engineers should be trained in techniques that help resolve disagreements amicably. This may involve finding common ground, compromising where necessary, and ensuring that the customer feels heard and respected.\n\nConflict resolution is not just about resolving the immediate issue; it's about preserving the customer relationship for the long term. A well-handled conflict can lead to increased customer loyalty and satisfaction.\n\nIn conclusion, active listening and effective communication are bedrocks of successful customer support engineering. When coupled with the ability to handle difficult situations with professionalism, support engineers can truly excel in building positive and lasting customer relationships.",
category: "customer_support_engineer",
},
lesson_4: {
title: "Continuous Learning and Professional Development",
about: "Ticket management system",
content:
"## Section 1.1: Active Listening\nIn the realm of customer support engineering, the art of active listening is a cornerstone skill. Beyond the technical know-how, the ability to truly understand and empathize with the customer's needs is essential for effective problem-solving.\n\n### Techniques for Active Listening\nActive listening is more than just hearing; it involves a conscious effort to comprehend the customer's perspective. Support engineers can employ various techniques to enhance their active listening skills. This includes paraphrasing to confirm understanding, asking clarifying questions, and providing feedback to assure the customer that their concerns are being heard and valued.\n\nActive listening also involves non-verbal cues such as nodding or using affirmative expressions to convey engagement. This not only facilitates better communication but also fosters a positive customer experience.\n\n### Understanding Customer Needs through Effective Listening\nThe primary goal of active listening is to understand the customer's needs accurately. This understanding goes beyond the surface-level symptoms of an issue; it delves into the underlying concerns and frustrations the customer may be experiencing.\n\nBy actively listening to customers, support engineers can tailor their responses to address not only the immediate technical problem but also the broader context in which the issue arises. This customer-centric approach is key to building trust and loyalty.\n\n## Section 1.2: Effective Communication\nCommunication skills are the linchpin of successful customer support engineering. Whether in written or verbal form, the ability to convey information clearly and effectively is crucial for fostering positive customer relationships.\n\n### Written Communication Skills (Email, Documentation)\nIn the digital age, a significant portion of customer interactions occurs through written communication, such as emails or documentation. Support engineers must master the art of clear and concise written communication. This involves structuring information logically, using plain language, and providing step-by-step instructions when necessary.\n\nDocumentation plays a pivotal role in knowledge sharing within the support team and beyond. Well-documented solutions not only serve as valuable resources for future reference but also contribute to the overall efficiency of the support process.\n\n### Verbal Communication Skills (Phone, Video Calls)\nIn scenarios where verbal communication is required, such as phone or video calls, support engineers should exhibit effective verbal communication skills. This includes speaking clearly, maintaining a professional tone, and adapting communication style to the customer's level of technical expertise.\n\nVerbal communication is not just about relaying information; it also involves active engagement. Support engineers should encourage questions, confirm understanding, and provide assurance to the customer. A positive and confident verbal communication style enhances the overall customer experience.\n\n## Section 1.3: Handling Difficult Situations\nCustomer support engineering often involves navigating challenging scenarios, such as dealing with frustrated or angry customers. The ability to handle difficult situations with finesse is a testament to a support engineer's professionalism.\n\n### Dealing with Frustrated or Angry Customers\nFrustration is a natural reaction when users encounter technical issues. Support engineers must approach these situations with empathy and patience. Acknowledging the customer's frustration, expressing understanding, and assuring them that their concerns will be addressed are crucial steps in de-escalating tense situations.\n\nIt's important to refrain from taking customer frustration personally and instead focus on finding solutions. Offering alternatives, setting realistic expectations, and following up on the resolution progress are additional strategies to turn a negative experience into a positive one.\n\n### Conflict Resolution Techniques\nIn situations where conflicts arise, conflict resolution skills become invaluable. Support engineers should be trained in techniques that help resolve disagreements amicably. This may involve finding common ground, compromising where necessary, and ensuring that the customer feels heard and respected.\n\nConflict resolution is not just about resolving the immediate issue; it's about preserving the customer relationship for the long term. A well-handled conflict can lead to increased customer loyalty and satisfaction.\n\nIn conclusion, active listening and effective communication are bedrocks of successful customer support engineering. When coupled with the ability to handle difficult situations with professionalism, support engineers can truly excel in building positive and lasting customer relationships.",
category: "customer_support_engineer",
},
lesson_5: {
title: "Becoming a Customer Support Engineering Expert",
about: "Becoming an expert",
content:
"## Section 1.1: Ticket Management Systems\nEfficiently managing support requests is a critical aspect of customer support engineering. Ticket management systems are the backbone of this process, providing a structured approach to handling customer issues.\n\n### Understanding and Efficiently Using Ticketing Systems\nTicketing systems are designed to streamline the support process by organizing and prioritizing customer issues. Customer support engineers must have a comprehensive understanding of how these systems work, from ticket creation to resolution.\n\nEfficient use of ticketing systems involves categorizing and prioritizing tickets based on severity and impact. This ensures that critical issues are addressed promptly, preventing any potential negative impact on users or the business. Regular training on the ticketing system's features and updates is essential to stay current with best practices.\n\n### Prioritizing and Categorizing Support Requests\nNot all support requests are created equal. Some issues may have a significant impact on users or the overall system, while others may be less critical. Customer support engineers play a pivotal role in prioritizing and categorizing support requests appropriately.\n\nA well-defined prioritization framework takes into account factors such as the urgency of the issue, the number of affected users, and the potential business impact. This strategic approach enables support teams to allocate resources efficiently, ensuring that high-priority issues are addressed promptly.\n\n## Section 1.2: Time Management Strategies\nIn the fast-paced environment of customer support engineering, effective time management is a key differentiator between success and overwhelm. Support engineers often juggle multiple tasks and must prioritize their work to meet customer expectations.\n\n### Techniques for Efficient Time Utilization\nTime management is not just about being busy; it's about being productive. Support engineers should adopt techniques that help them make the most of their time. This may involve the use of time-tracking tools, setting realistic goals, and breaking down larger tasks into manageable chunks.\n\nProactive planning is another critical aspect of time management. Anticipating potential support spikes, such as after a product release, allows support teams to allocate resources appropriately and maintain a high level of responsiveness.\n\n### Balancing Multiple Tasks and Deadlines\nSupport engineers are often confronted with a variety of tasks and deadlines. Balancing multiple responsibilities requires effective prioritization and a systematic approach to task management. Techniques such as the Eisenhower Matrix, which categorizes tasks based on urgency and importance, can be valuable tools for support engineers.\n\nClear communication within the support team is also essential to avoid bottlenecks and ensure that tasks are distributed according to each team member's strengths and expertise. Regular check-ins and status updates contribute to a cohesive and well-coordinated support effort.\n\n## Section 1.3: Proactive Problem-Solving\nBeyond reactive support, customer support engineers should embrace a proactive mindset. Proactive problem-solving involves anticipating potential issues and implementing measures to prevent them from escalating into widespread problems.\n\n### Anticipating and Addressing Potential Issues\nProactive problem-solving begins with a thorough understanding of the product and its potential pain points. By analyzing historical data, monitoring user feedback, and staying informed about industry trends, support engineers can anticipate issues before they become critical.\n\nImplementing preventive measures, such as creating comprehensive documentation, conducting training sessions, and collaborating with the development team to address recurring issues, positions support engineers as proactive contributors to the overall product quality.\n\n### Preventive Measures to Reduce Future Support Requests\nThe ultimate goal of proactive problem-solving is to reduce the number of support requests by preventing issues from arising in the first place. This involves a holistic approach, including regular product updates, addressing common user challenges, and fostering a culture of continuous improvement within the support team.\n\nCustomer support engineers should actively seek feedback from users about potential pain points and use this information to drive improvements. By addressing root causes and enhancing the overall user experience, support teams contribute not only to customer satisfaction but also to the long-term success of the product.\n\nIn conclusion, effective time management, prioritization, and proactive problem-solving are integral components of successful customer support engineering. As support engineers master these skills, they contribute not only to the resolution of immediate customer issues but also to the overall efficiency and quality of the support process.",
category: "customer_support_engineer",
},
lesson_6: {
title: "Fundamentals of Customer Support Engineering",
about: "Continuous improvement in the field",
content:
"## Section 1.1: Recap of Key Concepts\nAs we conclude our exploration of Customer Support Engineering, it's essential to recap the key concepts that form the foundation of this dynamic and impactful role. Throughout this journey, we've delved into understanding the role's definition and scope, the significance of customer support in business success, and the diverse responsibilities that support engineers shoulder.\n\n### Definition and Scope\nCustomer Support Engineering is a multifaceted role that requires a unique blend of technical expertise and interpersonal skills. Support engineers serve as the frontline representatives, providing solutions to users while actively contributing to the improvement of products and services.\n\n### Significance in Business Success\nThe success of a business is intricately tied to customer satisfaction, making customer support engineering a strategic asset. Positive customer interactions contribute to brand loyalty, customer retention, and positive word-of-mouth, all of which are essential for sustained growth.\n\n### Key Responsibilities\nSupport engineers play a crucial role in identifying common tasks, balancing technical and interpersonal skills, and maintaining a customer-centric mindset. Their ability to troubleshoot effectively, communicate clearly, and handle difficult situations distinguishes them as experts in their field.\n\n## Section 1.2: Commitment to Excellence\nBecoming a Customer Support Engineering expert is not a destination; it's a continuous journey of commitment to excellence. As we conclude, let's explore the elements that contribute to this commitment.\n\n### Continuous Improvement\nA commitment to excellence begins with a dedication to continuous improvement. Support engineers should embrace a mindset of continuous learning, staying updated on technology trends, and participating in training programs. This proactive approach ensures that they are equipped to address evolving challenges and provide cutting-edge solutions to users.\n\n### Customer-Centric Mindset\nAt the core of excellence in customer support engineering is a genuine customer-centric mindset. Support engineers should prioritize active listening, effective communication, and empathetic problem-solving. Understanding and addressing customer needs go beyond technical proficiency, contributing to positive user experiences and long-term relationships.\n\n### Collaboration and Feedback\nExcellence is achieved not in isolation but through collaboration and feedback. Support engineers should actively seek feedback from customers and team members, using it as a catalyst for personal and team development. A collaborative environment fosters knowledge sharing, empowering support teams to collectively overcome challenges and drive improvements.\n\n### Professional Development and Career Growth\nA commitment to excellence extends to proactive career management and professional development. Support engineers should identify opportunities for career advancement, build a professional network within the industry, and actively engage in feedback-driven improvement. This holistic approach ensures that they not only excel in their current roles but also carve out fulfilling and impactful careers.\n\n## Conclusion\nIn the ever-evolving landscape of customer support engineering, the journey towards excellence is a dynamic and ongoing process. By embracing the principles outlined in this guide, support engineers can navigate the complexities of their roles, contribute to business success, and ultimately become experts in their field. As we conclude this chapter, let it serve as a reminder that the pursuit of excellence is a rewarding and continuous endeavor.",
category: "customer_support_engineer",
},
lesson_7: {
title: "Introduction to Sales",
about: "Introduction to sales pitch",
content:
"## Section 1: Understanding the Art of Sales Pitching\nIn the realm of business, mastering the art of a compelling sales pitch is crucial for success. A sales pitch is more than a presentation; it's a strategic communication tool designed to influence potential customers and convey the value of a product or service. Understanding the fundamental principles behind effective sales pitching sets the foundation for building meaningful connections and driving conversions.\n\n## Section 2: Crafting a Persuasive Narrative\nA successful sales pitch hinges on the ability to craft a persuasive narrative that resonates with the audience. This section explores the elements of a compelling story, emphasizing the importance of connecting emotionally with prospects. From identifying pain points to presenting solutions, the narrative should guide the audience on a journey that highlights the unique benefits and value proposition.\n\n## Section 3: Tailoring Your Pitch to Your Audience\nRecognizing that one size does not fit all, this section delves into the significance of tailoring sales pitches to specific audiences. Understanding the needs, preferences, and challenges of different customer segments allows sales professionals to customize their approach for maximum impact. Whether addressing a small business owner or a corporate executive, adapting the pitch ensures relevance and increases the likelihood of a positive response.",
category: "sales",
},
};
Each lessons module consists of two actions.
Summarisation
Ask AI
Summarization - Summarize the entire lesson module and the summarized version is displayed to a candidate in a modal. The minds DB model used for the text summarization is summary_bot
.
When a summarization request triggered from UI, the skillsnap fires an api request /api/summary
. The API request executes a serverless function. The serverless function which then communicates with the minds DB model for the text summarization and returns the response.
ASK AI - The doubt clarification for a lesson module can be done using Ask AI feature. We are using lessons_askai
model created from above. When the 'Ask AI' action is triggered, the client fires an api call to /api/lessons/askai
and consecutively the serverless function communicates with the MindsDB to fetch the answer.
Practice
Totally, there are two kind of questions
Chat based question
Email writing
An example for chat based question is, "A customer received a wrong order, provide a resolution for it". In this scenario, the bot works as a customer and the candidate converses with the bot. Based on the conversation, the platform evaluates the candidate on language and tone proficiency.
If you are fan of office we all know how tough it will be to calm down William Buttlicker
The model used for conversation is conversation_agent
.
Similarly for Email writing, we used the evaluator bots for the evaluation purpose.
Contests
In Skillsnap, contests are nothing but job postings. Hiring manager can publish a contest with set of questions candidates can attend. There are only two kind of questions supported till now, chat based and email writing.
The method of evaluation and the conversation view are similar to how practice is. However, the contests are timed in nature. Each contest last 30 minutes and a contest will not have more than 3 questions.
In order for an user to not lost their progress we have implemented auto-save feature too.
Once the contest is submitted, the submission for the contest is registered and will be shown in the leaderboard section for hiring manager.
Hiring manager
Contest creation
A hiring manager can create a contest with the help of AI. For this we have used contest_creation_askai
model created from above.
While creating contests, the hiring manager can type their own wordings or they can make use of ASK AI feature available in the text box. The AI will generate a prompt based on the user's input, if the user is satisfied with the input they can directly insert it into the text box, else, the user can make revision to it and insert by themselves.
Contest details
The hiring manager can edit the contest details till the contest starts.
Once a contest starts, the user submissions are logged against the leader board tab. The hiring manager can take a quick view of the candidate in the right pane. With the help of it, the hiring manager can make a decision to whether interview a candidate or not.
Recommendations
Additionally to the contest flow, the hiring manager can see the globally popular recommended candidate in their view. Along with the list, the hiring manager can see the data of each candidates as well. This recommendation helps the hiring manager to view the tailor made recommendations powered through MindsDB and lightFM.
Custom integrations
A hiring manager can add custom integrations through skill snap UI.
Internals and working
Currently, skillsnap and slack integration can be done by the hiring manager. The details required for creating the slack integration is very minimal and easy to do. A slack app can be created by a hiring manager by following this link.
In Skillsnap, we have created agents with the custom knowledge base .
To create knowledge base, we have created an embedding model to append the data into knowledge base. Since, we have support only on the langchain and llama index engine we created a langchain engine first.
CREATE ML_ENGINE langchain_engine
FROM langchain;
CREATE MODEL embedding_model
PREDICT embeddings
USING
engine = 'langchain_engine',
mode='embedding',
model_name='text-embedding-ada-002',
question_column = 'content';
Once the model is created we have created a knowledge base with it
CREATE KNOWLEDGE BASE skill_snap_flows_kb
USING
model = embedding_model;
And, we have inserted two values into KB for hackathon purpose.
INSERT INTO skill_snap_flows_kb (content)
VALUES ('To create a contest, login or signup as a hiring manager, and go to contest listing page');
INSERT INTO skill_snap_flows_kb (content)
VALUES ('To attend a content, login as a candidate and headout to contest listing page. Click on any ongoing contests to participate');
A skill is created from the knowledge base so that an agent can use this particular skill
CREATE SKILL skill_snap_support
USING
type = 'knowledge_base',
source = 'skill_snap_flows_kb',
description = 'answers for the questions like how to create or attend a contest in skill snap';
We have also created a conversation model so that it can be used for creating a chatbot later.
CREATE MODEL conversational_model
PREDICT answer
USING
engine = 'langchain_engine',
mode = 'conversational',
user_column = 'question' ,
model_name='gpt-4',
assistant_column = 'answer',
max_tokens=100,
temperature=0,
prompt='Answer the user input in a helpful way';
An agent is created with the conversational model and skill to act as a logic brain for skillsnap
CREATE AGENT skill_snap_agent
USING
model = 'conversational_model',
skills = ['skill_snap_support'];
All the setup is now down.
UI Flow
From the sidebar, hiring manager can access the integrations page.
If there are no integrations created already, the UI will be like displayed below. In the integrations, currently we can add one integration at a point of time. And, the user can see the available agents available in skillsnap.
An integration can be created by providing the app and oauth tokens. The integration creates a chatbot, which the hiring manager can install in their slack workspace. The guide on how to create a slack app is provided as part of the form.
Once the integration is created, the user can see the logs and parameters for the chatbot. The user also has a provision to delete the existing integration and create a new one.
This will be useful for hiring manager since the user can install the integration in their slack workspace and query the Skillsnap knowledge base directly from the slack through the chatbot.
The future scope for the integrations are
User can request for a skill through skill snap dashboard
User can create their own chatbots through the available skills or request for a custom one.
Adding more than one integration for a platform(slack and MS Teams).
Infrastructure
For database we have used planetscale
as database provider.
For frontend deployment we have used vercel
For backend serverless function deployment we have used vercel
For MindsDB docker container deployment we have used Digital ocean
Local setup
Development Code base: https://github.com/Chris-Blesson/hashnode-mindsdb
Deployment Code base: https://github.com/Lokprakash-babu/hashnode-mindsdb
Live Project URL: www.skillsnap.space
To setup MindsDB, please follow this MindsDB local setup
To setup DB, please create an account in planetscale, which is free of cost for starters and add the username, password and DB name to the env file. The env file can follow this. Indeed, the values mentioned in the env file are demo credentials.
Clone the specified github repo and run yarn
then yarn dev
. Visit localhost:3000
for the app.
Live project URL
The live app can be found in https://www.skillsnap.space/
We have purchased the domain from GoDaddy.
Future scope
We see a lot of potential in Skillsnap and we hope it add values to the non-technical job aspirants preparation and helps solving the pain points for hiring manager. Though we are proud in developing this, we have enlisted the possible improvements
Content creators persona
- Currently the modules are generated manually by us and with the intervention of AI. Introducing a content creator persona helps in scaling the learning and practice modules which in turn can benefit candidates and hiring manager.Requesting content
- Currently there are modules which are generated by the assumption that they are useful to the candidates. If a candidate could not find a module which they feel should be there, those kind of contents can be requested through the portal and thecontent creators
can triage the requests.Resume evaluator
- In the current product a candidate can upload the resume. This can be extend to a point that with the help of AI, we can power in-house resume evaluator, which provides improvement pointers to the candidates. Additionally, the platform can support resume creation with the assistance of AI.Recommendations at the contest level
- In the current product we have global recommendations. With the help of MindsDB Recommendation model's fine tuning, we can bring in the recommendations at the contest level.In house hiring drive
- Currently the hiring managers can only view the candidates and they cannot start the hiring drive right from the product itself. This can be modified to a Hiring manager's HRMS tool.
Conclusion
We have learnt a lot just by participating in this hackathon. The learning started from what kind of DB to use and continued till what Auth provider we have to use. We meticulously thought about the UX and made sure that the user can move around the product easily without much of a learning curve. Previously there was a project which has practice module alone, in Skillsnap, we have extended the practice module to use MindsDB, and made the project as a SaaS product. All the names used in the project, videos and blog is for learning and hackathon purpose.
UPDATE:
The live link will no longer work since we have deprecated the droplet from digital ocean. This project is solely for Hashnode - MindsDB hackathon.
Collective resources
Candidate registration
Hiring manager registration
Contest creation
Contest Details
Attending a contest
Practice module
Learning module
Recommendations
Subscribe to my newsletter
Read articles from lokprakash babu directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
lokprakash babu
lokprakash babu
I am a frontend developer.