Megzz22's picture
Create app.py
301465a verified
from flask import Flask, request, jsonify
from flask_cors import CORS
import joblib
import pandas as pd
import os
app = Flask(__name__)
CORS(app)
# In Spaces, files are in the same directory
model = joblib.load('alumni_match_model.joblib')
model_columns = joblib.load('model_feature_columns.joblib')
@app.route('/', methods=['POST'])
def handler():
incoming_data = request.get_json()
df = pd.DataFrame([incoming_data])
def count_common_skills(row):
viewer_skills = set(str(row.get('viewer_skills', '')).lower().split('|'))
target_skills = set(str(row.get('target_skills', '')).lower().split('|'))
return len(viewer_skills.intersection(target_skills))
df['common_skills_count'] = df.apply(count_common_skills, axis=1)
df['branch_match'] = (df['viewer_branch'].str.lower() == df['target_branch'].str.lower()).astype(int)
for col in model_columns:
if col.startswith('company_'):
df[col] = 0
company_name = incoming_data.get('target_company', '')
if company_name:
company_col_name = f"company_{company_name}"
if company_col_name in df.columns:
df[company_col_name] = 1
final_df = df[model_columns]
prediction_proba = model.predict_proba(final_df)
match_probability = prediction_proba[0][1]
final_score = round(match_probability * 10)
return jsonify({'score': final_score})