terminal Referencia Tecnica

Documentacion Tecnica

Arquitectura, flujos de datos, modelos de datos, zonas geoespaciales y motor de busqueda de la plataforma MaxLeadsNow.

01 Vision General

MaxLeadsNow es una plataforma de inteligencia territorial B2B que combina busqueda de negocios en tiempo real con analisis geoespacial. Disenada para equipos de ventas que necesitan reconocimiento territorial sistematico.

Flujo principal
Busqueda Visualizacion en mapa Dibujo de zonas Analisis Conversion a leads Exportacion

La plataforma permite a representantes y gerentes de ventas identificar oportunidades comerciales en cualquier zona geografica, analizar la densidad y calidad de negocios existentes, y convertir esos datos en leads accionables para su pipeline de ventas.

02 Arquitectura

El sistema esta construido sobre una arquitectura moderna de aplicacion web con renderizado hibrido (servidor y cliente).

code Frontend
  • Aplicacion web progresiva (Next.js + React 19)
  • TypeScript estricto
  • 35+ componentes UI (dark-mode nativo)
  • Renderizador de mapas interactivo
dns Backend
  • Base de datos PostgreSQL con ORM moderno
  • Autenticacion JWT con cookies HTTP-only
  • Motor de busqueda (indice de millones de negocios)
  • Procesamiento geoespacial en servidor
Diagrama de Arquitectura
Browser (React 19 + Maps)
App Server (Next.js API Routes)
Motor de Busqueda
PostgreSQL DB
Maps Renderer

El procesamiento geoespacial incluye calculo de areas geodesicas, deteccion de puntos dentro de poligonos (point-in-polygon) y generacion de metricas de densidad en tiempo real.

03 Motor de Busqueda

El motor de busqueda de negocios permite consultar un indice actualizado con millones de establecimientos registrados. La busqueda avanzada acepta los siguientes parametros:

Parametro Tipo Descripcion
keyword string Tipo de negocio + terminos de busqueda
location string Ciudad o area metropolitana
language string Codigo de idioma (default: es)
device string Tipo de dispositivo para resultados contextuales

Estructura de respuesta

Cada resultado del motor devuelve los siguientes campos:

{
  "title":        "Farmacia San Pablo Reforma",
  "address":      "Av. Paseo de la Reforma 222, Juarez, CDMX",
  "phone":        "+52 55 1234 5678",
  "website":      "https://ejemplo.com",
  "rating":       4.6,
  "reviewsCount": 312,
  "category":     "Farmacia",
  "latitude":     19.4326,
  "longitude":    -99.1332
}

Categorias preconfiguradas

Farmacia Odontologo Pediatra Medico General Endocrinologo Psiquiatra Infectologo

El sistema es extensible a cualquier categoria de negocio disponible en el indice.

04 Zonas Tacticas

Las zonas tacticas son regiones geograficas definidas por el usuario mediante herramientas de dibujo de poligonos sobre el mapa. Cada zona se almacena como un GeoJSON Polygon.

Datos de cada zona

Campo Descripcion
geometry Array de coordenadas lat/lng que definen el poligono
name Nombre asignado por el usuario
color Color hexadecimal para visualizacion en mapa
assignedRep Representante asignado (opcional)

Metricas calculadas por zona

Geografia
  • Area: km2 calculados con algoritmo geodesico
  • Densidad: negocios/km2
Calidad
  • Rating promedio: media ponderada
  • Contactabilidad: % telefono, % web, % email
Distribucion de Ratings
  • Excelente: rating ≥ 4.5
  • Bueno: 4.0 – 4.4
  • Promedio: 3.0 – 3.9
  • Bajo: < 3.0
  • Sin rating
Operaciones
  • Top 5 negocios: ranking por score compuesto
  • Carga de trabajo: estimacion de jornada

Score compuesto

El ranking de los mejores negocios por zona utiliza la formula:

score = rating * log10(reviewsCount + 1)

Este calculo balancea la valoracion del negocio con su volumen de resenas, evitando que negocios con pocas resenas pero rating perfecto dominen el ranking.

Estimacion de carga de trabajo

tiempo_por_visita  = 20 min (constante)
tiempo_traslado    = ajustado por densidad (min: 5 min, max: 20 min)
jornada            = 6 horas efectivas
visitas_por_dia    = jornada / (tiempo_por_visita + tiempo_traslado)

05 Pipeline de Leads

Cada negocio identificado puede convertirse en un lead dentro del pipeline. Los leads avanzan a traves de estados definidos:

Estados del Pipeline
Nuevo En revision Aprobado Exportado
Rechazado

Datos de cada lead

Cada lead almacena: fuente, tipo de negocio, datos de contacto (nombre, telefono, email, sitio web, redes sociales), direccion completa, coordenadas GPS, valoracion, notas del operador y timestamps de creacion y actualizacion.

Fuentes de leads

Busqueda directa Scraping web Scraping redes sociales Ingreso manual

Tipos de negocio

Farmacia Odontologo Pediatra Medico General Endocrinologo Psiquiatra Infectologo Otro

06 Importacion CSV

El sistema permite importar leads masivamente desde archivos CSV. El proceso es completamente automatizado con deduplicacion inteligente.

Proceso de importacion

1
Subir archivo CSV
Columnas opcionales soportadas:
name businessName phone email address city state website socialUrl leadType
2
Deduplicacion automatica
Se detectan duplicados por dos criterios:
duplicado = (businessName + city) coincide
         OR (phone) coincide
3
Normalizacion
El tipo de negocio se normaliza automaticamente a las categorias del sistema.
4
Registro de importacion
Se genera un registro con metricas: total de filas procesadas, leads nuevos creados y duplicados detectados.
5
Leads creados
Los leads nuevos se crean con la fuente marcada como csv_import.

07 Modelo de Datos

El sistema opera con 4 entidades principales almacenadas en PostgreSQL:

person Usuario
Usuario {
  id          String    @id
  email       String    @unique
  nombre      String
  activo      Boolean   @default(true)
  createdAt   DateTime
}
saved_search Busqueda Guardada
BusquedaGuardada {
  id              String    @id
  usuarioId       String
  nombre          String
  keyword         String
  resultados      JSON      // array de negocios encontrados
  zonas           JSON      // GeoJSON con poligonos dibujados
  totalResultados Int
  createdAt       DateTime
}
contact_page Lead
Lead {
  id              String    @id
  usuarioId       String
  fuente          String    // search, scraping_web, scraping_social, manual, csv_import
  estado          String    // nuevo, en_revision, aprobado, rechazado, exportado
  tipo            String    // farmacia, odontologo, pediatra, etc.
  nombre          String?
  negocio         String?
  direccion       String?
  ciudad          String?
  estado_geo      String?
  telefono        String?
  email           String?
  web             String?
  redesSociales   String?
  valoracion      Float?
  latitud         Float?
  longitud        Float?
  notas           String?
  createdAt       DateTime
  updatedAt       DateTime
}
upload_file Importacion
Importacion {
  id              String    @id
  usuarioId       String
  fuente          String
  archivo         String
  total           Int
  nuevos          Int
  duplicados      Int
  createdAt       DateTime
}

08 Seguridad

La seguridad del sistema se implementa en multiples capas:

lock Autenticacion
  • JWT firmado con algoritmo HS256
  • Cookies HTTP-only (no accesibles desde JavaScript)
  • Expiracion de sesion: 30 dias
shield Proteccion de rutas
  • Middleware de autenticacion en todas las rutas protegidas
  • Aislamiento de datos por usuario (cada consulta filtra por userId)
https Transporte
  • HTTPS obligatorio en produccion
  • Sin almacenamiento de datos sensibles en cliente
database Base de datos
  • Conexiones encriptadas (SSL/TLS)
  • Credenciales gestionadas via variables de entorno

Listo para comenzar?

Accede al dashboard y empieza a buscar negocios en tu zona objetivo.

Ir al Dashboard arrow_forward