/gan-build "Auth + leads dashboard + heuristic scoring" --skip-planner --max-iterations 15 --pass-threshold 7.0 --eval-mode playwrightleads con RLS (solo su org)calculateScore(lead)lead_events// Auto-generado por gan-generator · iter-5 · score 7.8/10 import rules from './scoring-rules.json' import { Lead, ScoringResult } from '@/types' export function calculateScore(lead: Lead): ScoringResult { let score = 0 const breakdown: Record<string, number> = {} // Regla 1: Tamaño de empresa const sizeRule = rules.company_size.find( r => lead.employees >= r.min && lead.employees <= r.max ) if (sizeRule) { score += sizeRule.points breakdown['company_size'] = sizeRule.points } // Regla 2: Actividad reciente (visitas últimos 7 días) const recentVisits = lead.events.filter( e => e.type === 'page_view' && Date.now() - new Date(e.timestamp).getTime() < 7 * 24 * 3600 * 1000 ).length const activityScore = Math.min(recentVisits * rules.activity.points_per_visit, rules.activity.max) score += activityScore breakdown['recent_activity'] = activityScore // Regla 3: Cargo del contacto const titleMatch = rules.job_titles.find( t => lead.jobTitle?.toLowerCase().includes(t.keyword) ) if (titleMatch) { score += titleMatch.points breakdown['job_title'] = titleMatch.points } return { total: Math.min(score, 100), tier: score >= 75 ? 'hot' : score >= 45 ? 'warm' : 'cold', breakdown } }