import gradio as gr from utils import extract_text_from_pdf, simple_clause_split from model import classify_clauses from report import generate_pdf from salesforce_stub import send_to_salesforce # Initialize Gradio interface def analyze_contract(file): tmp_path = file.name text = extract_text_from_pdf(tmp_path) clauses = simple_clause_split(text) results = classify_clauses(clauses) overall_score = sum(r['risk_score'] for r in results) / len(results) if results else 0 report_path = generate_pdf(results, overall_score) highlight_output = "" for r in results: color = ( "red" if r['risk_level'] == "High" else "orange" if r['risk_level'] == "Medium" else "green" ) highlight_output += f"
{r['risk_level']}: {r['clause']}

" send_to_salesforce({ "clauses": results, "overall_score": overall_score }) return f"Overall Risk Score: {overall_score:.2f}", highlight_output, report_path # Create Gradio Interface iface = gr.Interface( fn=analyze_contract, inputs=gr.File(label="Upload Contract PDF"), outputs=[ gr.Textbox(label="Overall Risk Score"), gr.HTML(label="Clause Risk Highlight"), gr.File(label="Download Risk Report (PDF)") ], title="📜 Contract Risk Heatmap Generator", description="Upload a contract and get clause-level risk scores with heatmap-style highlights." ) # Ensure the Gradio app starts properly if __name__ == "__main__": iface.launch()