|
import gradio as gr |
|
from scorer import get_lead_score, calculate_score, calculate_confidence, calculate_risk |
|
from recommender import generate_recommendation |
|
from insights import explain_score |
|
from logger import log_submission |
|
|
|
def run_engine(amount, stage, industry, emails, meetings, close_gap, feedback=""): |
|
lead_score = get_lead_score(stage, emails, meetings, close_gap, amount) |
|
ai_score = calculate_score(lead_score, emails, meetings, close_gap, amount) |
|
confidence = calculate_confidence(ai_score) |
|
risk = calculate_risk(ai_score, confidence, emails, meetings) |
|
recommendation = generate_recommendation(stage, emails, meetings, risk) |
|
explanation = explain_score(lead_score, ai_score, confidence, risk, stage, close_gap, emails, meetings) |
|
|
|
|
|
log_submission({ |
|
"amount": amount, "stage": stage, "industry": industry, |
|
"emails": emails, "meetings": meetings, "gap": close_gap, |
|
"lead_score": lead_score, "score": ai_score, "confidence": confidence, |
|
"risk": risk, "feedback": feedback |
|
}) |
|
|
|
return lead_score, ai_score, confidence, risk, recommendation, explanation |
|
|
|
with gr.Blocks(title="AI Deal Qualification Engine") as app: |
|
gr.Markdown("# 🤖 AI-Powered Deal Qualification Engine") |
|
gr.Markdown("Score deals intelligently using pipeline stage, engagement, and timing.") |
|
|
|
with gr.Row(): |
|
amount = gr.Number(label="Deal Amount (USD)", value=50000) |
|
stage = gr.Dropdown(["Prospecting", "Proposal/Price Quote", "Negotiation", "Closed Won", "Closed Lost"], label="Stage") |
|
industry = gr.Textbox(label="Industry", value="Software") |
|
|
|
with gr.Row(): |
|
emails = gr.Number(label="Emails in Last 7 Days", value=3) |
|
meetings = gr.Number(label="Meetings in Last 30 Days", value=2) |
|
close_gap = gr.Number(label="Days Until Close Date", value=14) |
|
|
|
feedback = gr.Textbox(label="Optional: Rep Feedback") |
|
|
|
with gr.Row(): |
|
submit = gr.Button("Run AI Scoring") |
|
|
|
with gr.Accordion("📊 Results", open=True): |
|
lead_score_out = gr.Number(label="Lead Score (Generated)", interactive=False) |
|
ai_score_out = gr.Number(label="AI Score (0–100)", interactive=False) |
|
confidence_out = gr.Number(label="Confidence", interactive=False) |
|
risk_out = gr.Textbox(label="Risk Level") |
|
reco_out = gr.Textbox(label="AI Recommendation") |
|
explain_out = gr.Textbox(label="AI Explanation") |
|
|
|
submit.click(fn=run_engine, |
|
inputs=[amount, stage, industry, emails, meetings, close_gap, feedback], |
|
outputs=[lead_score_out, ai_score_out, confidence_out, risk_out, reco_out, explain_out]) |
|
|
|
app.launch() |
|
|