from flask import Flask, request, jsonify import pickle import pandas as pd import traceback app = Flask(__name__) # Load pipeline (preprocessor + model) with open("best_model.pkl", "rb") as f: model = pickle.load(f) @app.route("/", methods=["GET"]) def health(): return jsonify({"status": "ExtraaLearn API running"}), 200 @app.route("/predict", methods=["POST"]) def predict(): try: data = request.get_json() if "inputs" not in data: return jsonify({"error": "Expected key 'inputs'"}), 400 df = pd.DataFrame(data["inputs"]) pred = int(model.predict(df)[0]) prob = float(model.predict_proba(df)[0][1]) if prob >= 0.75: category = "High Conversion Potential" elif prob >= 0.40: category = "Medium Conversion Potential" else: category = "Low Conversion Potential" return jsonify({ "prediction": pred, "conversion_probability": round(prob, 2), "lead_category": category }), 200 except Exception as e: return jsonify({ "error": "Prediction failed", "details": str(e), "trace": traceback.format_exc() }), 500