RevOps / server /data_generator.py
Jyo-K's picture
partial
38336e8
from typing import Tuple, List
from models import LeadData, EnrichmentData, CRMState, OpportunityHistory, Rep
def get_reps() -> List[Rep]:
return [
Rep(rep_id="rep_amer_mm", name="Alice", segment="mid-market", territory="AMER", capacity="high"),
Rep(rep_id="rep_emea_ent", name="Bob", segment="enterprise", territory="EMEA", capacity="medium"),
Rep(rep_id="rep_amer_ent_original", name="Charlie", segment="enterprise", territory="AMER", capacity="low"), # The original AE
Rep(rep_id="rep_amer_ent_other", name="Diana", segment="enterprise", territory="AMER", capacity="high"),
]
def get_icp_criteria() -> str:
return "ICP: Tech/FinTech/SaaS. Mid-market (100-999 employees) -> score 60-79. Enterprise (1000+ employees) -> score 80-100. Disqualify students and competitors. Treat closed-lost re-engagements with priority."
def generate_easy_task() -> dict:
leads = [
LeadData(
id="lead_1",
name="Jane Doe",
title="VP of Engineering",
email="jane@cloudscale.io",
company="CloudScale",
message="Looking for a new RevOps tool to handle our inbound.",
source="web_form",
score=None
)
]
enrichment_map = {
"lead_1": EnrichmentData(enriched=True, company_size="400", revenue="$50M", industry="Tech", region="AMER", tier="mid-market")
}
crm = CRMState(checked=False, existing_accounts=[], opportunities=[])
return {
"leads": leads,
"enrichment_map": enrichment_map,
"crm": crm,
}
def generate_medium_task() -> dict:
leads = [
LeadData(
id="lead_2",
email="k.mueller@fintech.de",
source="email",
message="Inquiry about pricing."
)
]
enrichment_map = {
"lead_2": EnrichmentData(enriched=True, company_size="1200", revenue="$200M", industry="FinTech", region="EMEA", tier="enterprise")
}
crm = CRMState(checked=False, existing_accounts=[], opportunities=[])
return {
"leads": leads,
"enrichment_map": enrichment_map,
"crm": crm,
}
def generate_hard_task() -> dict:
leads = [
LeadData(
id="lead_3_student",
name="Student Joe",
email="joe.college@university.edu",
message="Doing a research project.",
source="web_form"
),
LeadData(
id="lead_3_competitor",
name="Sneaky Sam",
email="sam@competitor.com",
message="Just browsing your features.",
source="web_form"
),
LeadData(
id="lead_3_cfo",
name="Sarah Smith",
title="CFO",
email="ssmith@majorfinance.com",
company="Major Finance Corp",
message="We looked at your product last year. Ready to revisit.",
source="click_to_message_ad"
)
]
enrichment_map = {
"lead_3_student": EnrichmentData(enriched=True, industry="Education", region="AMER", tier="other"),
"lead_3_competitor": EnrichmentData(enriched=True, industry="Tech", region="AMER", tier="other"),
"lead_3_cfo": EnrichmentData(enriched=True, company_size="5000", industry="Finance", region="AMER", tier="enterprise")
}
crm = CRMState(
checked=False,
existing_accounts=[{"account_id": "acc_major_fin", "name": "Major Finance Corp"}],
opportunities=[
OpportunityHistory(
opportunity_id="opp_101",
status="closed-lost",
amount=240000,
assigned_rep_id="rep_amer_ent_original",
closed_date="2025-10-15"
)
]
)
return {
"leads": leads,
"enrichment_map": enrichment_map,
"crm": crm,
}
def get_task_data(task_id: str) -> dict:
if task_id == "task_easy":
return generate_easy_task()
elif task_id == "task_medium":
return generate_medium_task()
elif task_id == "task_hard":
return generate_hard_task()
else:
raise ValueError(f"Unknown task {task_id}")