from flask import Flask, request, jsonify import joblib import numpy as np app = Flask(__name__) # Load models (make sure these files exist) xgb = joblib.load("xgb_model.json") rf = joblib.load("rf_model.pkl") @app.route("/recommend", methods=["POST"]) def recommend(): data = request.get_json() # Extract input features length = float(data["length"]) width = float(data["width"]) price = float(data["price"]) coverage = float(data["coverage"]) area_range = float(data["area_range"]) tile_type = data["tile_type"].lower() # Feature engineering tile_type_num = 0 if tile_type == "floor" else 1 tile_area = length * width price_per_sqft = price / coverage budget_eff = coverage / price features = np.array([[tile_type_num, length, width, price, coverage, area_range, tile_area, price_per_sqft, budget_eff]]) # Predict using both models and average prob = (xgb.predict_proba(features)[0][1] + rf.predict_proba(features)[0][1]) / 2 result = "✅ Recommended" if prob >= 0.5 else "❌ Not Recommended" return jsonify({"result": result, "score": round(float(prob), 3)}) if __name__ == "__main__": app.run(debug=True)