Cómo se calcula el score de relación
El score mide la solidez de la relación entre un asesor y una empresa. Es aditivo, transparente y auditable: cada punto tiene una justificación de negocio visible en el desglose.
src/Services/ScoreCalculator.php.
Puntos por tipo de interacción
Cada interacción registrada suma puntos según su tipo. La lógica refleja una realidad operativa de M&A: no todos los contactos tienen el mismo valor. Una reunión con el CEO pesa mucho más que un email automatizado.
Reunión presencial o videoconferencia. Máximo compromiso relacional: ambas partes han dedicado tiempo y atención.
Llamada telefónica. Contacto directo y personal, sin la presencia física de una reunión.
Intercambio de correo electrónico. Documentado y trazable, pero de menor compromiso personal.
Contacto en evento, conferencia o feria. Primer punto de contacto habitual; base para un seguimiento posterior.
Bonificaciones por calidad de la relación
Además de los puntos por interacción, el sistema añade bonificaciones que miden dimensiones cualitativas de la relación: recencia, continuidad, profundidad e identificación del contacto. Estas reglas distinguen una relación consolidada de un contacto puntual.
En M&A, la recencia es el factor más crítico. Una relación de hace cinco años sin actividad reciente tiene escaso valor operativo: el contacto puede haber cambiado de empresa, de cargo o de disposición. El bonus más alto del sistema premia que la relación esté viva.
La continuidad distingue una relación duradera de un contacto puntual. Si el asesor ha mantenido interacciones en distintos años, la relación tiene profundidad temporal y no es fruto de una única campaña de prospección.
Contactar con la misma persona varias veces indica una relación personal construida, no solo un intercambio de tarjetas. La profundidad sobre un interlocutor concreto es más valiosa que muchos contactos superficiales con personas distintas.
Saber que "hubo contacto con Acme" es útil, pero saber que fue con "Jane Smith, CEO" es inteligencia accionable. El nombre del interlocutor permite al asesor que quiere hacer la introducción saber exactamente a quién debe pedir el acceso.
Etiquetas de resultado
El score total determina la etiqueta de la relación. Los umbrales son también configurables.
| Etiqueta | Puntuación | Interpretación operativa |
|---|---|---|
| alto | ≥ 50 puntos | Relación consolidada con interlocutor conocido. Candidato prioritario para hacer la introducción. |
| medio | 25 – 49 puntos | Relación existente pero sin la profundidad o recencia suficiente para garantizar acceso directo. |
| bajo | 0 – 24 puntos | Contacto puntual o muy antiguo. Conviene ampliar contexto antes de apoyarse en esta relación. |
Ejemplo completo — Carlos ↔ Acme Ltd
Desglose real de cómo se construye el score de Carlos García-Blanco con Acme Ltd a partir de sus interacciones registradas.
| Concepto | Puntos | Motivo |
|---|---|---|
| Reunión con Jane Smith · 10 mar 2022 | +15 | Tipo: reunion |
| Reunión con Jane Smith · 22 jul 2023 | +15 | Tipo: reunion |
| Llamada a Acme Ltd · 5 feb 2024 | +10 | Tipo: llamada |
| Reunión con Jane Smith · 15 ene 2025 | +15 | Tipo: reunion |
| Reunión con Sergio Martínez · 20 mar 2026 | +15 | Tipo: reunion |
| Relación activa | +20 | Contacto en los últimos 12 meses |
| Relación continuada | +15 | Interacciones en 2022, 2023, 2024, 2025 y 2026 |
| Relación de profundidad | +10 | Jane Smith aparece en 3 interacciones |
| Contacto identificado: Jane Smith | +5 | Nombre registrado en interacciones |
| Contacto identificado: Sergio Martínez | +5 | Nombre registrado en interacciones |
| Total | 125 | alto |
Dónde modificar los valores
Todos los puntos están definidos como constantes privadas en un único fichero. Cambiar un valor ahí lo actualiza en todo el sistema: scoring, desglose y etiquetas.
// Puntos por tipo de interacción
private const POINTS_BY_TYPE = [
'reunion' => 15, // ← modificar aquí
'llamada' => 10,
'email' => 7,
'evento' => 5,
];
// Bonificaciones por calidad de la relación
private const POINTS_RECENT_INTERACTION = 20; // últimos 12 meses
private const POINTS_MULTI_PERIOD = 15; // más de un año natural
private const POINTS_REPEATED_CONTACT = 10; // mismo contacto 2+ veces
private const POINTS_CONTACT_IDENTIFIED = 5; // contacto con nombre conocido
high ≥ 50, medium ≥ 25) se modifican
en el método label() del mismo fichero.
No hay base de datos ni panel de administración que tocar: es solo código.