File size: 2,065 Bytes
84bc138
d31a363
84bc138
e791f2f
 
84bc138
7e2083c
d31a363
5c62f99
84bc138
fb85604
e791f2f
 
 
 
 
 
 
57374a9
e791f2f
fb85604
e791f2f
fb85604
e791f2f
84bc138
5c62f99
100dadd
84bc138
5c62f99
 
 
 
 
 
 
 
 
84bc138
e791f2f
 
 
 
8421e19
84bc138
e791f2f
57374a9
e791f2f
fb85604
e791f2f
d31a363
 
 
 
 
 
 
e791f2f
d31a363
5c62f99
d31a363
 
 
100dadd
d31a363
 
 
e791f2f
5c62f99
e791f2f
 
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
import os
import requests

# Use environment variable or fallback key
GROQ_API_KEY = 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"

def summarize_match(job_description, cv_names, cv_snippets):
    if not GROQ_API_KEY:
        return "❌ GROQ_API_KEY not set."

    try:
        # Ensure we have 3 entries
        while len(cv_names) < 3:
            cv_names.append("[No CV]")
            cv_snippets.append("[No content]")

        # Trim content safely
        job_description = job_description.strip()[:1000] or "[No description provided]"
        cv_names = [name[:60] for name in cv_names[:3]]
        cv_snippets = [(text.strip()[:1500] or "[No content]") for text in cv_snippets[:3]]

        # Construct prompt
        prompt = f"""
You are an AI recruitment assistant helping match CVs to job descriptions.

### Job Description:
{job_description}

### Candidate CVs:
1. {cv_names[0]}:
{cv_snippets[0]}

2. {cv_names[1]}:
{cv_snippets[1]}

3. {cv_names[2]}:
{cv_snippets[2]}

Based on the job requirements, analyze each candidate and explain which (if any) are suitable. Focus on:
- PHP experience
- Web/software development
- Technical relevance
""".strip()

        # Safety: Truncate if prompt is too long
        if len(prompt) > 8000:
            prompt = prompt[:8000]

        # Make Groq API request
        response = requests.post(
            url="https://api.groq.com/openai/v1/chat/completions",
            headers={
                "Authorization": f"Bearer {GROQ_API_KEY}",
                "Content-Type": "application/json"
            },
            json={
                "model": "mixtral-8x7b-32768",
                "messages": [{"role": "user", "content": prompt}],
                "temperature": 0.4
            },
            timeout=30
        )

        response.raise_for_status()
        return response.json()["choices"][0]["message"]["content"]

    except requests.exceptions.RequestException as e:
        return f"❌ Groq API error: {e}"
    except Exception as e:
        return f"❌ Unexpected error: {e}"