File size: 3,495 Bytes
4ea17aa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# LinkedIn Sourcing Agent API 🎯

An AI-powered candidate sourcing and scoring system that automatically finds, analyzes, and ranks LinkedIn candidates for job openings.

## πŸš€ Features

- **Intelligent Search**: Generates optimized search queries for LinkedIn candidate discovery
- **Profile Analysis**: Extracts and structures candidate data using advanced parsing
- **AI Scoring**: Multi-dimensional scoring algorithm evaluating education, experience, skills, and cultural fit
- **Personalized Outreach**: Generates tailored outreach messages highlighting candidate strengths
- **RESTful API**: Easy integration with existing HR systems and workflows

## πŸ“‘ API Usage

### POST `/source-candidates`

Submit a job description and get ranked candidates with personalized outreach messages.

**Request:**
```json
{
  "title": "Software Engineer, ML Research",
  "company": "Windsurf",
  "location": "Mountain View, CA",
  "requirements": [
    "Experience with large language models (LLMs)",
    "Strong background in machine learning and AI",
    "PhD or Master's in Computer Science or related field"
  ],
  "description": "We are looking for a talented ML Research Engineer...",
  "max_candidates": 10,
  "confidence_threshold": 0.3
}
```

**Response:**
```json
{
  "job_id": "abc123",
  "job_title": "Software Engineer, ML Research",
  "company": "Windsurf",
  "candidates_found": 5,
  "candidates_scored": 5,
  "top_candidates": [
    {
      "name": "John Doe",
      "linkedin_url": "https://linkedin.com/in/johndoe",
      "fit_score": 8.5,
      "confidence": 0.9,
      "adjusted_score": 7.65,
      "key_highlights": [
        "PhD in Computer Science from Stanford",
        "Current: Senior ML Engineer at Google",
        "Skills: LLM, PyTorch, TensorFlow"
      ],
      "outreach_message": "Hi John, I noticed your impressive work with LLMs at Google and think you'd be perfect for our ML Research role at Windsurf...",
      "profile_summary": {
        "name": "John Doe",
        "headline": "Senior ML Engineer | LLM Specialist",
        "current_company": "Google",
        "score_breakdown": {
          "education": 9.5,
          "career_trajectory": 8.0,
          "company_relevance": 9.0,
          "experience_match": 8.5
        }
      }
    }
  ],
  "processing_time": 12.5,
  "status": "completed",
  "timestamp": "2025-07-01T02:30:00Z"
}
```

## πŸ”§ Endpoints

- `GET /` - API information
- `GET /health` - Health check
- `POST /source-candidates` - Main sourcing endpoint  
- `GET /example` - Example request format
- `GET /docs` - Interactive API documentation

## 🎯 Scoring Algorithm

The system evaluates candidates across multiple dimensions:

- **Education** (25%): University prestige, degree relevance, field of study
- **Experience Match** (30%): Role similarity, industry relevance, skill alignment
- **Career Trajectory** (20%): Progression, tenure, company quality
- **Company Relevance** (15%): Similar company experience, industry fit
- **Location Match** (10%): Geographic compatibility

## πŸš€ Quick Start

1. Visit the API documentation at `/docs`
2. Try the `/example` endpoint to see request format
3. Submit a job via `/source-candidates`
4. Get ranked candidates with personalized messages

## πŸ” Note

This demo uses mock data for educational purposes. In production, you would need:
- Valid LinkedIn API access
- SerpAPI key for search
- Groq API key for LLM processing

Built with FastAPI, Pydantic, and modern async Python.