TalentKernel is a Semantic Kernel based application designed to automate the search and analysis of job postings using AI agents. This project demonstrates advanced LLM orchestration, agentic workflows, and custom plugin development within the .NET 10 ecosystem.
The core purpose of this project is to leverage Large Language Models to perform semantic searches, moving beyond the limitations of traditional keyword-based platforms.
Instead of rigid text matching, TalentKernel understands the intent and context of job descriptions:
- ๐ Nuanced Requirements: Identifies "Relocation Support" even if the specific string isn't present.
- ๐ป Tech Stack Synonyms: Connects ".NET" with "C# Specialist" or "Web API development" naturally.
- ๐ Contextual Fit: Filters for "Remote-first" or "Greenfield projects" by analyzing the job's overall description.
The application has transitioned from a basic console loop to a Discord Bot, providing a modern, persistent, and multi-modal interface for career interaction.
- ๐ง Core Logic: A library containing specialized plugins:
JobSearchPlugin: Connects to recruitment APIs (Adzuna).JobAnalystPlugin: Evaluates job requirements against candidate profiles.FileExtractorPlugin: Uses PdfPig to parse CVs and job descriptions from PDF attachments.MarkdownBatchReaderPlugin: Scrapes and cleans web-based job postings.
- ๐ฌ Discord Integration: A
BackgroundServicethat allows the agent to live in a Discord server, supporting file uploads (CVs) and rich text responses.
To run this project, you will need:
- An Azure AI subscription with a deployed model (DeepSeek V3.2 or GPT-4o recommended).
- An Adzuna developer account for job search data.
- A Discord Bot Token from the Discord Developer Portal.
Populate the appsettings.json file in the main project. Ensure the Message Content Intent is enabled in your Discord Developer Portal settings.
{
"Model": {
"key": "YOUR_AZURE_API_KEY",
"deploymentName": "YOUR_DEPLOYMENT_NAME",
"endpoint": "YOUR_ENDPOINT_URL"
},
"Adzuna": {
"AppId": "YOUR_ADZUNA_APP_ID",
"ApiKey": "YOUR_ADZUNA_API_KEY"
},
"Discord": {
"Token": "YOUR_DISCORD_BOT_TOKEN"
}
}