import gradio as gr from size_rules import evaluate_size, apply_fit_preference def predict_size(chest, waist, bicep, shoulder, fit_pref): data = { "chest": chest, "waist": waist, "bicep": bicep, "shoulder": shoulder } base_size, base_reason = evaluate_size(data) final_size, fit_reason = apply_fit_preference(base_size, fit_pref, data) explanation = { "recommended_size": final_size, "fit_preference": fit_pref, "confidence": "high", "reason": f"{base_reason} {fit_reason}" } html_output = f"""
{final_size}
""" return html_output, explanation with gr.Blocks(title="AI Size Recommendation Engine") as demo: gr.Markdown("# AI Size Recommendation Engine") gr.Markdown("Enter your body measurements (in inches) to get a deterministic size recommendation.") with gr.Row(): with gr.Column(): chest = gr.Number(label="Chest (inches)", value=38.0, step=0.5) waist = gr.Number(label="Waist (inches)", value=32.0, step=0.5) bicep = gr.Number(label="Bicep (inches)", value=13.0, step=0.5) shoulder = gr.Number(label="Shoulder (inches)", value=46.0, step=0.5) fit = gr.Dropdown(choices=["Slim", "Regular", "Loose"], label="Fit Preference", value="Regular") submit_btn = gr.Button("Predict Size", variant="primary") with gr.Column(): gr.Markdown("### Recommended Size") output_size = gr.HTML() output_json = gr.JSON(label="Explainable AI Output") # Prediction event submit_btn.click( fn=predict_size, inputs=[chest, waist, bicep, shoulder, fit], outputs=[output_size, output_json] ) if __name__ == "__main__": demo.launch()