AI-Powered Talent Matching Documentation
Explore the comprehensive documentation for KIEDIS - an intelligent platform that connects clients with freelancers through semantic search and LLM-powered job description analysis.
Semantic search using pgvector embeddings and LLM technology for intelligent talent matching.
Automated extraction from job descriptions and resumes using AIDP technology.
LLM-powered conversational interface for refining requirements and search criteria.
Vector-based similarity search with HNSW indexing for fast, accurate results.
Custom user model extending AbstractUser with support for both client and freelancer roles. OAuth integration with LinkedIn for streamlined registration.
class User(AbstractUser):
id = models.UUIDField(primary_key=True, default=uuid.uuid4)
email = models.EmailField(unique=True)
is_freelancer = models.BooleanField(default=False)
is_client = models.BooleanField(default=False)
SearchSession tracks search state and chat history with 1:1 relationship to JobDescription. Supports both authenticated and anonymous users.
class SearchSession(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4)
user = models.ForeignKey(User, null=True, blank=True)
filters = models.JSONField(default=dict)
state = models.JSONField(default=dict)
llm_ctx = models.JSONField(default=dict)
pristine = models.BooleanField(default=True)
Comprehensive freelancer profile with embeddings for semantic search. Related models for education, experience, skills, and certifications.
class Freelancer(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4)
user = models.OneToOneField(User)
name = models.CharField(max_length=255)
nationality = models.CharField(max_length=100)
academic_title = models.CharField(max_length=255)
embedding = VectorField(dimensions=1536)
{
"name": "Senior Backend Developer Search",
"filters": {
"skills": ["Python", "Django", "PostgreSQL"],
"experience_years": 5,
"location": "Remote"
}
}
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Senior Backend Developer Search",
"filters": {},
"state": {},
"pristine": true,
"created_at": "2024-01-15T10:30:00Z"
}
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Senior Backend Developer Search",
"filters": {
"skills": ["Python", "Django"],
"experience_years": 5
},
"state": {
"search_performed": true,
"results_count": 24
},
"job_description": {
"title": "Senior Backend Developer",
"description": "Looking for experienced developer..."
}
}
{
"query": "Experienced Python developer with Django expertise",
"filters": {
"skills": ["Python", "Django", "REST API"],
"min_experience": 3,
"max_experience": 10,
"availability": "full-time"
},
"page": 1,
"limit": 20
}
{
"results": [
{
"freelancer_id": "123e4567-e89b-12d3-a456-426614174000",
"name": "John Doe",
"title": "Senior Python Developer",
"skills": ["Python", "Django", "PostgreSQL"],
"experience_years": 7,
"similarity_score": 0.95,
"profile_summary": "Experienced backend developer..."
}
],
"total": 45,
"page": 1,
"limit": 20,
"has_next": true
}
curl -X POST \
-F "document=@resume.pdf" \
-F "freelancer_id=550e8400-e29b-41d4-a716-446655440000" \
/resume/upload/
{
"resume_id": "789e0123-e45b-67c8-d901-234567890123",
"status": "processing",
"message": "Resume uploaded successfully. Processing started.",
"task_id": "celery-task-456",
"redirect_url": "/resume/check-status/?id=789e0123-e45b-67c8-d901-234567890123"
}
{
"status": "STARTED",
"progress": 45,
"message": "Extracting work experience...",
"estimated_completion": "2024-01-15T10:33:00Z"
}
{
"status": "SUCCESS",
"progress": 100,
"message": "Resume processed successfully",
"freelancer": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Jane Smith",
"skills_extracted": 15,
"experience_entries": 4,
"education_entries": 2
}
}
{
"session_id": "550e8400-e29b-41d4-a716-446655440000",
"message": "I need a Python developer with 5+ years experience",
"mode": "edit_job_description",
"context": {
"current_filters": {},
"previous_messages": []
}
}
{
"response": "I'll help you find Python developers with 5+ years of experience. Let me refine your job description...",
"suggestions": [
"Would you like to specify particular Python frameworks?",
"What type of projects will they work on?",
"Any preference for industry experience?"
],
"updated_filters": {
"skills": ["Python"],
"min_experience": 5
},
"message_id": "msg_789"
}
{
"type": "chat_message",
"session_id": "550e8400-e29b-41d4-a716-446655440000",
"message": "Show me freelancers who match these requirements",
"timestamp": "2024-01-15T10:30:00Z"
}
{
"type": "token",
"content": "I found 12 freelancers who match your requirements. Here are the top candidates:",
"message_id": "msg_790"
}
{
"type": "freelancer_results",
"results": [...]
}
{
"type": "message_complete",
"message_id": "msg_790"
}
Comments & Discussions