curiouscurrent commited on
Commit
05469a5
·
verified ·
1 Parent(s): 2c59240

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -8
app.py CHANGED
@@ -62,7 +62,7 @@ Respond only 'Yes' if suitable, otherwise 'No'.
62
  return "No"
63
 
64
  # ----------------------------
65
- # Filter by roles (step 1)
66
  # ----------------------------
67
  def filter_by_roles(category_name):
68
  job_titles = CATEGORIES[category_name]
@@ -95,16 +95,23 @@ def filter_by_roles(category_name):
95
  return df, FILTERED_CSV
96
 
97
  # ----------------------------
98
- # LLM-based recommendations (step 2)
99
  # ----------------------------
100
  def llm_recommendations(category_name):
101
  job_titles = CATEGORIES[category_name]
 
 
102
  if not os.path.exists(FILTERED_CSV):
103
  return pd.DataFrame(), None
104
 
105
- df = pd.read_csv(FILTERED_CSV)
106
- filtered_candidates = df.to_dict(orient="records")
 
 
 
 
107
  recommended = []
 
108
 
109
  for i in range(0, len(filtered_candidates), BATCH_SIZE):
110
  batch = filtered_candidates[i:i+BATCH_SIZE]
@@ -118,11 +125,18 @@ def llm_recommendations(category_name):
118
  return pd.DataFrame(), None
119
 
120
  df_rec = pd.DataFrame(recommended)
121
- df_rec["Salary_sort"] = df_rec["Salary"].apply(lambda s: float(s.replace("$","").replace(",","")) if isinstance(s,str) and s.startswith("$") else float('inf'))
 
 
 
 
 
 
122
  df_rec = df_rec.sort_values("Salary_sort").drop(columns=["Salary_sort"])
123
- df_rec = df_rec.head(5)
124
- df_rec.to_csv(OUTPUT_FILE, index=False)
125
- return df_rec, OUTPUT_FILE
 
126
 
127
  # ----------------------------
128
  # Show first 5 raw JSON candidates
 
62
  return "No"
63
 
64
  # ----------------------------
65
+ # Step 1: Filter by roles
66
  # ----------------------------
67
  def filter_by_roles(category_name):
68
  job_titles = CATEGORIES[category_name]
 
95
  return df, FILTERED_CSV
96
 
97
  # ----------------------------
98
+ # Step 2: LLM recommendations
99
  # ----------------------------
100
  def llm_recommendations(category_name):
101
  job_titles = CATEGORIES[category_name]
102
+
103
+ # Read filtered candidates from CSV
104
  if not os.path.exists(FILTERED_CSV):
105
  return pd.DataFrame(), None
106
 
107
+ df_filtered = pd.read_csv(FILTERED_CSV)
108
+ df_filtered = df_filtered[df_filtered["Category"] == category_name]
109
+
110
+ if df_filtered.empty:
111
+ return pd.DataFrame(), None
112
+
113
  recommended = []
114
+ filtered_candidates = df_filtered.to_dict(orient="records")
115
 
116
  for i in range(0, len(filtered_candidates), BATCH_SIZE):
117
  batch = filtered_candidates[i:i+BATCH_SIZE]
 
125
  return pd.DataFrame(), None
126
 
127
  df_rec = pd.DataFrame(recommended)
128
+ # Sort by Salary (numeric)
129
+ def parse_salary(s):
130
+ try:
131
+ return float(s.replace("$","").replace(",",""))
132
+ except:
133
+ return float('inf')
134
+ df_rec["Salary_sort"] = df_rec["Salary"].apply(parse_salary)
135
  df_rec = df_rec.sort_values("Salary_sort").drop(columns=["Salary_sort"])
136
+ df_top5 = df_rec.head(5)
137
+ df_top5.to_csv(OUTPUT_FILE, index=False)
138
+
139
+ return df_top5, OUTPUT_FILE
140
 
141
  # ----------------------------
142
  # Show first 5 raw JSON candidates