NithyaAla commited on
Commit
ad1254b
·
verified ·
1 Parent(s): 5bd2b83

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -27
app.py CHANGED
@@ -8,11 +8,9 @@ import docx
8
 
9
  db = GraphDB()
10
 
11
- # Radio button options
12
  EDUCATION_OPTIONS = ["High School", "Undergraduate", "Graduate"]
13
  STATUS_OPTIONS = ["Student", "Employed", "Continuous Learning"]
14
 
15
- # ---------------- Helper: read PDF or DOCX ----------------
16
  def read_file(file):
17
  if file.name.endswith(".pdf"):
18
  reader = PdfReader(file.name)
@@ -22,41 +20,35 @@ def read_file(file):
22
  return "\n".join(p.text for p in doc.paragraphs)
23
  return ""
24
 
25
- # ---------------- Core pipeline ----------------
26
  def run_pipeline(education, status, role, file):
27
  user_id = str(uuid.uuid4())
28
-
29
- # Store user profile
30
  db.create_or_update_user(user_id, education, status, role)
31
  db.log_interaction(user_id, type_="PROFILE_CREATED", details=role, role=role)
32
 
33
- # Read resume text
34
  text = read_file(file)
 
35
 
36
- # Extract skills
37
- skills = extract_skills(text, threshold=0.50)
38
-
39
- # Store skills in Neo4j
40
- for skill, conf in skills:
41
  db.add_skill(user_id, skill, conf)
42
- db.log_interaction(user_id, type_="SKILL_ADDED", skill=skill)
43
-
44
- # Recommendations
45
- recommendations = generate_recommendations(db, user_id)
46
 
47
- # Normalize recommendation display
48
- recommended_skills_df = []
49
- for r in recommendations:
50
- if isinstance(r, tuple):
51
- recommended_skills_df.append([r[0], r[1]])
52
- else:
53
- recommended_skills_df.append([r, ""])
 
 
54
 
55
- extracted_skills_df = [[skill, conf] for skill, conf in skills]
 
 
56
 
57
- return user_id, extracted_skills_df, recommended_skills_df
58
 
59
- # ---------------- Gradio UI ----------------
60
  interface = gr.Interface(
61
  fn=run_pipeline,
62
  inputs=[
@@ -67,12 +59,13 @@ interface = gr.Interface(
67
  ],
68
  outputs=[
69
  gr.Textbox(label="User ID"),
70
- gr.Dataframe(headers=["Skill", "Confidence"], label="Extracted Skills"),
71
  gr.Dataframe(headers=["Skill", "Confidence"], label="Recommended Skills")
72
  ],
73
  title="Skill Grapher",
74
- description="Upload your CV to extract your skill profile and receive personalized skill recommendations."
75
  )
76
 
77
  interface.launch()
78
 
 
 
8
 
9
  db = GraphDB()
10
 
 
11
  EDUCATION_OPTIONS = ["High School", "Undergraduate", "Graduate"]
12
  STATUS_OPTIONS = ["Student", "Employed", "Continuous Learning"]
13
 
 
14
  def read_file(file):
15
  if file.name.endswith(".pdf"):
16
  reader = PdfReader(file.name)
 
20
  return "\n".join(p.text for p in doc.paragraphs)
21
  return ""
22
 
 
23
  def run_pipeline(education, status, role, file):
24
  user_id = str(uuid.uuid4())
 
 
25
  db.create_or_update_user(user_id, education, status, role)
26
  db.log_interaction(user_id, type_="PROFILE_CREATED", details=role, role=role)
27
 
 
28
  text = read_file(file)
29
+ extracted = extract_skills(text, threshold=0.50)
30
 
31
+ # Store extracted skills + evidence trail
32
+ for skill, conf, evidence in extracted:
 
 
 
33
  db.add_skill(user_id, skill, conf)
34
+ db.log_interaction(user_id, type_="SKILL_ADDED", skill=skill, details=evidence)
 
 
 
35
 
36
+ # Format extracted skills into collapsible HTML
37
+ extracted_html = ""
38
+ for skill, conf, evidence in extracted:
39
+ extracted_html += f"""
40
+ <details>
41
+ <summary><b>{skill}</b> — confidence {conf}</summary>
42
+ <p style="margin-left:10px;">Evidence: {evidence}</p>
43
+ </details>
44
+ """
45
 
46
+ # Generate recommendations (no evidence)
47
+ recommendations = generate_recommendations(db, user_id)
48
+ recommended_df = [[r[0], r[1]] for r in recommendations]
49
 
50
+ return user_id, extracted_html, recommended_df
51
 
 
52
  interface = gr.Interface(
53
  fn=run_pipeline,
54
  inputs=[
 
59
  ],
60
  outputs=[
61
  gr.Textbox(label="User ID"),
62
+ gr.HTML(label="Extracted Skills + Evidence Trails"),
63
  gr.Dataframe(headers=["Skill", "Confidence"], label="Recommended Skills")
64
  ],
65
  title="Skill Grapher",
66
+ description="Upload your CV to extract skills with evidence trails and receive personalized skill recommendations."
67
  )
68
 
69
  interface.launch()
70
 
71
+