import gradio as gr def create_ui(): def generate_plan(property_type, retrofit_area, building_age, blueprints, heating_system, cooling_system, insulation_quality, known_issues, energy_source, windows, monthly_bills, mortgage, mortgage_years, gross_income, monthly_expenses, credit_score, financing_term, preferred_term, budget, financing_interest): retrofit_plan = ( f"Property Type: {property_type}\n" f"Retrofit Area: {retrofit_area} sqft\n" f"Building Age: {building_age} years\n" f"Blueprints or Energy Audits: {blueprints}\n" f"Heating System: {heating_system}\n" f"Cooling System: {cooling_system}\n" f"Insulation Quality: {insulation_quality}\n" f"Known Issues: {known_issues}\n" f"Energy Source: {energy_source}\n" f"Windows: {windows}\n" f"Monthly Heating and Electricity Bills: ${monthly_bills}\n" f"Mortgage: {mortgage}\n" f"Mortgage Years Remaining: {mortgage_years} years\n" f"Gross Income: ${gross_income}/month\n" f"Monthly Expenses: ${monthly_expenses}\n" f"Credit Score: {credit_score}\n" f"Financing Term: {financing_term}\n" f"Preferred Financing Term: {preferred_term}\n" f"Budget: {budget}\n" f"Interested in Financing: {financing_interest}\n" ) return retrofit_plan def calculate_cost(retrofit_area, insulation_quality, known_issues, energy_source, windows): base_cost = 5000 area_cost = retrofit_area * 10 insulation_cost = {'Poor': 3000, 'Average': 2000, 'Good': 1000, 'Excellent': 500}[insulation_quality] issues_cost = 2000 if known_issues == 'Yes' else 0 windows_cost = {'Yes': 3000, 'No': 5000, 'Unsure': 4000}[windows] energy_cost = {'Electricity': 1000, 'Natural gas': 2000, 'Oil': 3000, 'Renewable': 500}[energy_source] total_cost = base_cost + area_cost + insulation_cost + issues_cost + windows_cost + energy_cost return f"Estimated Retrofit Cost: ${total_cost}" with gr.Blocks() as demo: with gr.TabItem("Property Information"): property_type = gr.Dropdown(label="Type of Property", choices=["Single-family home", "Multi-family building", "Other residential"]) retrofit_area = gr.Number(label="Retrofit Area (sqft)") building_age = gr.Number(label="Building Age (years)") blueprints = gr.Dropdown(label="Existing Blueprints or Energy Audits", choices=["Yes", "No"]) heating_system = gr.Dropdown(label="Heating System", choices=["Furnace", "Boiler", "Heat pump", "None", "Other"]) cooling_system = gr.Dropdown(label="Cooling System", choices=["Central air conditioning", "Window units", "None", "Other"]) insulation_quality = gr.Dropdown(label="Insulation Quality", choices=["Poor", "Average", "Good", "Excellent"]) known_issues = gr.Dropdown(label="Known Issues (e.g., leaks, drafts)", choices=["Yes", "No"]) energy_source = gr.Dropdown(label="Primary Energy Source", choices=["Electricity", "Natural gas", "Oil", "Renewable", "Other"]) windows = gr.Dropdown(label="Windows Double-Glazed", choices=["Yes", "No", "Unsure"]) with gr.TabItem("Financial Information"): monthly_bills = gr.Number(label="Average Monthly Heating and Electricity Bills ($)") mortgage = gr.Dropdown(label="Do you have a mortgage?", choices=["Yes", "No"]) mortgage_years = gr.Number(label="Years remaining on mortgage", visible=False) gross_income = gr.Number(label="Total Household Monthly Gross Income ($)") monthly_expenses = gr.Number(label="Total Monthly Household Expenses ($)") credit_score = gr.Number(label="Credit Score") financing_term = gr.Dropdown(label="Preferred Financing Term", choices=["Align with mortgage", "Different term"]) preferred_term = gr.Dropdown(label="Preferred Term for Financing", choices=["5 years", "10 years", "15 years", "25 years"], visible=False) budget = gr.Dropdown(label="Budget for Retrofit Project", choices=["Under $10,000", "$10,000 to $50,000", "$50,000 to $100,000", "Over $100,000"]) financing_interest = gr.Dropdown(label="Interested in Financing Options", choices=["Yes", "No"]) with gr.TabItem("Generate Plan"): submit_btn = gr.Button("Generate Retrofit Plan") output_plan = gr.Textbox(label="Retrofit Plan") submit_btn.click( fn=generate_plan, inputs=[ property_type, retrofit_area, building_age, blueprints, heating_system, cooling_system, insulation_quality, known_issues, energy_source, windows, monthly_bills, mortgage, mortgage_years, gross_income, monthly_expenses, credit_score, financing_term, preferred_term, budget, financing_interest ], outputs=output_plan ) with gr.TabItem("Calculate Cost"): cost_btn = gr.Button("Calculate Retrofit Cost") output_cost = gr.Textbox(label="Estimated Cost") cost_btn.click( fn=calculate_cost, inputs=[retrofit_area, insulation_quality, known_issues, energy_source, windows], outputs=output_cost ) demo.launch(server_name="0.0.0.0", server_port=7860, share=True)