🌐
Prueba técnica · Carlos García-Blanco

Prueba técnica · ONEtoONE Corporate Finance

Inteligencia de red sobre empresas

"Cuando un usuario consulta una empresa, ¿quién de la red ya tiene relación con ella, cuándo interactuaron, y qué tan sólida es esa relación?"

Ver interfaz → Ver API JSON

Explora los datos del sistema

Estos son los datos simulados disponibles para probar el sistema. Haz clic en una empresa para ver su análisis de red.

Empresas

data/companies.php
Datos de prueba · El listado real se conecta sustituyendo el repositorio

No hay empresas que coincidan con la búsqueda.

Contactos de la red

data/users.php
CG
Carlos García-Blanco
ID 1 · usuario de la red
BT
Belén Torres
ID 2 · usuario de la red
AG
Abraham García
ID 3 · usuario de la red
EM
Elena Moral
ID 4 · usuario de la red
DP
David Pérez
ID 5 · usuario de la red

Top por interacciones

NetworkStatsService API →
1
CG
2
BT
3
DP
4
EM
5
AG

Dos interfaces, una misma lógica

El sistema expone la misma lógica de negocio en dos formatos distintos.

Vista para el usuario

Interfaz visual con sidebar de empresas, tarjetas de contacto y scores con colores. Pensada para usuarios internos de la plataforma.

GET /view.php GET /view.php?domain=acme.com Abrir interfaz →

Endpoint para integraciones

Devuelve JSON estructurado y consumible por cualquier sistema externo: CRM, frontend desacoplado, app móvil.

GET /api.php?domain=acme.com GET /api.php?id=1 GET /api.php?stats=top_users Ver respuesta JSON
🔓
Acceso abierto en esta demo. En producción, tanto la interfaz como la API se protegerían mediante autenticación. La arquitectura soporta cualquier mecanismo: OAuth 2.0 (Google Workspace SSO, el más habitual en entornos corporativos), JWT Bearer token para las llamadas API, o el sistema de identidad que ONEtoONE tenga implantado. El control de acceso se añadiría en un middleware antes del controlador, sin modificar la lógica de negocio.

Cómo funciona

Dado un dominio o ID de empresa, el sistema sigue estos pasos:

1
Matching híbrido
Busca interacciones históricas relacionadas con la empresa por dominio de email (alta precisión) o nombre de empresa (mayor cobertura).
2
Agrupación por usuario
Todas las interacciones encontradas se agrupan por usuario de la red para analizar cada relación de forma individual.
3
Scoring transparente
Se calcula una puntuación basada en volumen, recencia, continuidad y profundidad. Cada regla se devuelve explícita en el resultado.
Metodología inspirada en los modelos de relationship strength scoring usados por plataformas de inteligencia de red en M&A como 4Degrees y Affinity, que puntúan relaciones en base a frecuencia e interacción reciente para identificar el mejor camino de introducción en una operación.
4
Identificación de contacto
Se intenta identificar el contacto concreto dentro de la empresa cruzando las interacciones con contenido web indexado.
{ "company": "Acme Ltd", "domain": "acme.com", "network_contacts": [ { "user_name": "Carlos Ruiz", "score": 60, "score_label": "high", "interaction_count": 4, "first_contact_at": "2022-03-10", "last_contact_at": "2025-01-15", "score_breakdown": [ "+40 (4 interacciones × 10 pts)", "+20 (contacto en últimos 12 meses)", "+15 (interacciones en 4 años)", "+10 (mismo contacto repetido)", "+5 (contacto identificado)" ], "identified_contact": "Jane Smith", "identified_contact_role": "CEO" } ] }

Sistema de scoring explicable

Cada regla es visible en la respuesta. El revisor no necesita leer código para entender un score.

Regla Puntos Por qué
Por cada interacción +10 El volumen es señal de engagement
Interacción en los últimos 12 meses +20 La recencia es crítica en M&A
Interacciones en más de un año +15 Continuidad distingue una relación real de un contacto puntual
Mismo contacto repetido 2+ veces +10 Profundidad de relación sobre amplitud
Contacto identificado +5 Inteligencia accionable vale más
high 50+ puntos
medium 25–49 puntos
low 0–24 puntos

Stack deliberadamente ligero

Sin frameworks, sin Composer, sin servicios externos. Corre en cualquier servidor con PHP.

Lenguaje
PHP 8.3+
Dependencias
Ninguna
Arquitectura
3 capas MVC
Datos
Arrays PHP

Los repositorios son la única capa que toca los datos. Sustituir los arrays por PDO + MySQL no requiere modificar ningún servicio ni controlador.

Prueba el sistema

Hay 5 empresas y 13 interacciones de ejemplo para explorar.