|
from datetime import datetime |
|
import random |
|
|
|
def score_opportunity(data): |
|
score = ( |
|
data["lead_score"] * 0.5 + |
|
data["emails_last_7_days"] * 3 + |
|
data["meetings_last_30_days"] * 5 |
|
) |
|
|
|
try: |
|
close_date = datetime.strptime(data["close_date"], "%Y-%m-%d") |
|
days_to_close = (close_date - datetime.today()).days |
|
except: |
|
days_to_close = 30 |
|
|
|
if days_to_close > 30: |
|
score -= 10 |
|
elif days_to_close < 5: |
|
score += 5 |
|
|
|
score = max(0, min(100, round(score))) |
|
confidence = round(random.uniform(0.7, 0.95) if score >= 60 else random.uniform(0.4, 0.7), 2) |
|
|
|
return { |
|
"score": score, |
|
"confidence": confidence |
|
} |
|
|