File size: 2,874 Bytes
2758618
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7fed6bf
2758618
7fed6bf
2758618
 
 
0264cca
b51cd1c
2758618
 
 
 
 
 
 
 
 
 
 
 
7fed6bf
2758618
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b51cd1c
2758618
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
# from embeddings import rank_jobs 

# Function to wrap the existing rank_resume
def process_input(job_description, *resumes):
    print("[JOB DESC]", job_description)
    print("[RESUMES]", resumes)
    resumes = [r for r in resumes if r and r.strip() != ""]  # Remove empty
    if not job_description.strip() or not resumes:
        return "Please provide both resume and at least one job description."
    
    results = zip(*rank_jobs(job_description, resumes))
    formatted_output = ""
    for i, (resume, score) in enumerate(results, 1):
        formatted_output += f"Job #{i}:\nScore: {score:.2f}\nJob Description Snippet: {resume[:200]}...\n\n-------\n\n"
    return formatted_output



# resumes = [
            
# ]

def add_resume_count(*resumes):
    resumes = [r for r in resumes if r and r.strip() != ""]
    resumes.append("")
    print('[RESUMES]', resumes)
    return resumes


# UI definition
with gr.Blocks() as demo:
    gr.Markdown("## πŸ“ Job Suggestion")

    resumes_list = []

    with gr.Row():

        resume_count = gr.State([
            "", ""
        ])

        with gr.Column():
            @gr.render(inputs=resume_count)
            def render_count(count):
                # print("[COUNT]", count)
                # print("[RESUME LIST]", resumes_list)
                for i in range(len(count)):
                    resume_input = gr.Textbox(
                        lines=6,
                        placeholder=f"Paste job description #{i+1} here...",
                        label=f"Job #{i+1}",
                        value=count[i]
                    )
                    resumes_list.append(resume_input)

                submit_btn.click(
                    fn=process_input,
                    inputs=[job_description] + resumes_list,
                    outputs=output
                )
                add_resume_btn.click(add_resume_count, resumes_list, resume_count)

            # @gr.render(inputs=input_text)
            # def add_resume():
            #     new_input = gr.Textbox(
            #         lines=6,
            #         placeholder=f"Paste resume #{len(resumes_list)+1} here...",
            #         label=f"Resume #{len(resumes_list)+1}"
            #     )
            #     resumes_list.append(new_input)
            #     return resumes_group.update(visible=True)
    
            add_resume_btn = gr.Button("βž• Add Job Description")

        with gr.Column():
            job_description = gr.Textbox(
                lines=8,
                placeholder="Paste Job Description here...",
                label="Job Description"
            )

            output = gr.Textbox(
                lines=10,
                label="Job Suggestion Result",
                interactive=False
            )
            submit_btn = gr.Button("πŸš€ Job Suggestion")

demo.launch()