import gradio as gr from modules.kyc_processor import extract_text_from_id from modules.profile_matcher import match_profiles from modules.interview_scheduler import suggest_slots from modules.onboarding_trainer import generate_quiz from modules.performance_tracker import analyze_performance from modules.agent_motivation import personalized_nudge def run_kyc(image): return extract_text_from_id(image) def run_profile_match(resume, job_role): return match_profiles(resume, job_role) def run_schedule(availability): return suggest_slots(eval(availability)) # input as a dict def run_quiz(topic): return generate_quiz(topic) def run_performance(agent_data): try: agents = eval(agent_data) return "\n".join(analyze_performance(agents)) except: return "Invalid data format. Use: [{'name': 'A', 'sales': 5}, ...]" def run_motivation(name, goal): return personalized_nudge(name, goal) with gr.Blocks(title="Agent Recruitment & Management Suite") as demo: with gr.Tab("KYC OCR"): gr.Markdown("### Upload an ID Document for OCR") image_input = gr.Image(type="filepath") ocr_output = gr.Textbox(label="Extracted Text") gr.Button("Extract").click(run_kyc, inputs=image_input, outputs=ocr_output) with gr.Tab("Agent Profile Matcher"): gr.Markdown("### Compare Resume with Job Role") resume_input = gr.Textbox(label="Resume Text") job_input = gr.Textbox(label="Job Role Description") match_output = gr.Textbox(label="Match Result") gr.Button("Check Match").click(run_profile_match, [resume_input, job_input], match_output) with gr.Tab("Interview Scheduler"): gr.Markdown("### Suggest Interview Slots") schedule_input = gr.Textbox(label="Availability Dict (e.g. {'2025-06-21': ['10AM', '2PM']})") schedule_output = gr.Textbox(label="Suggested Slots") gr.Button("Suggest").click(run_schedule, schedule_input, schedule_output) with gr.Tab("Training Quiz"): gr.Markdown("### Generate Quiz for a Topic") topic_input = gr.Textbox(label="Training Topic") quiz_output = gr.JSON(label="Generated Quiz") gr.Button("Generate Quiz").click(run_quiz, topic_input, quiz_output) with gr.Tab("Performance Tracker"): gr.Markdown("### Enter Agent Sales Data") performance_input = gr.Textbox(label="Agent List (e.g. [{'name': 'A', 'sales': 3}])") performance_output = gr.Textbox(label="Alerts") gr.Button("Analyze").click(run_performance, performance_input, performance_output) with gr.Tab("Motivational Nudge"): gr.Markdown("### Send Motivation to Agent") name_input = gr.Textbox(label="Agent Name") goal_input = gr.Textbox(label="Goal (e.g. 10 meetings)") nudge_output = gr.Textbox(label="Generated Nudge") gr.Button("Motivate").click(run_motivation, [name_input, goal_input], nudge_output) demo.launch()