Bitácora del Proyecto
Tracking de Marcas — Ergo Systems.com
Contraseña incorrecta.
Tracking de Marcas
Bitácora del Proyecto — Ergo Systems.com
Última actualización: 05 de septiembre de 2026
1. Caso de negocio
Los estudios de abogados que gestionan la defensa de marcas de sus clientes ya no pueden dedicar personal a revisar manualmente, día a día, las publicaciones de solicitudes de registro de marca en la Gaceta Electrónica de Propiedad Industrial de INDECOPI. INDECOPI no notifica proactivamente a terceros: publica la intención de registro y corre un plazo de 30 días hábiles para presentar oposición — si la publicación pasa desapercibida, el derecho de oposición se pierde.
Objetivo del proyecto: ofrecer un servicio automatizado con IA que monitoree diariamente la Gaceta de INDECOPI, compare cada solicitud nueva contra las marcas/nombres comerciales que cada cliente registra como propios a vigilar, y genere alertas (en pantalla y por WhatsApp) ante coincidencias — literales, fonéticas, gráficas y tipográficas.
Referencias de mercado: servicio similar ofrecido comercialmente por drmarcas.com — Radar de Vigilancia Marcaria.
Alcance de la solución: backend independiente de ODIN (aplicación propia, con su propia base de datos y flujos), aunque construido reutilizando el know-how técnico de scraping ya validado en ODIN (SPIJ del Poder Judicial). Frontend en React, con registro/validación de usuarios y uso previsto desde dispositivos móviles.
2. Actores y Casos de Uso
Diagrama general de casos de uso (fuente: DCU Tracking, definido por Martín):
graph LR Usuario["👤 Usuario
(abogado/estudio)"] Admin["👤 Admin"] Usuario --> CU1(("Define Marca")) Usuario --> CU2(("Frecuencia de
tracking")) Usuario --> CU3(("Consulta
reportes")) Usuario --> CU4(("Solicita
precisiones")) Usuario --> CU5(("Recibe
alertas")) Usuario --> CU6(("Login")) Admin --> CU6 Admin --> CU7(("Gestión
usuarios")) Admin --> CU8(("Gestión de
cuentas")) Admin --> CU9(("Gestión
Tarifas")) Admin --> CU10(("Reportes de
consumo")) Admin --> CU11(("Gestión tablas
maestras"))
2.1 Usuario (abogado / estudio)
| Caso de uso | Descripción confirmada |
|---|---|
| Define Marca | Registra la(s) marca(s)/nombre(s) comercial(es) a vigilar, incluyendo el logo de referencia (imagen), no solo el texto. |
| Frecuencia de tracking | El usuario configura libremente cada cuánto corre su monitoreo — sin restricción ligada a un plan/tarifa (a diferencia del esquema de tiers de ODIN). |
| Consulta reportes | Visualiza los resultados históricos del tracking. |
| Solicita precisiones | Drill-down sobre una alerta ya generada (texto completo de la publicación, clase Niza, solicitante, etc.) — no es edición de la marca definida ni asesoría legal humana. |
| Recibe alertas | Notificación por WhatsApp + visualización en pantalla ante una coincidencia. |
| Login | Acceso autenticado, compartido con Admin. |
2.2 Admin
| Caso de uso | Descripción confirmada |
|---|---|
| Gestión usuarios | Administración de las personas individuales (abogados) dentro de cada cuenta. |
| Gestión de cuentas | Sinónimo de gestión de suscripciones: cuentas pagadas, de prueba, y cuentas empresa. Distinta de Gestión usuarios. |
| Gestión Tarifas | Administración de precios/planes. |
| Reportes de consumo | Visibilidad de uso de la plataforma por cliente. |
| Gestión tablas maestras | Mantenimiento de catálogos del sistema. |
Pendiente de precisión: detalle funcional caso por caso (queda para una siguiente fase, según lo indicado por Martín).
3. Requisito diferenciador: similitud gráfica y tipográfica de logos
La Gaceta de INDECOPI publica, junto a cada solicitud de signo distintivo, el logo/diseño propuesto. El matching del sistema debe evaluar coincidencia en tres dimensiones, no solo el nombre:
- Literal / fonética — similitud del texto/denominación.
- Gráfica — similitud visual del diseño del logo.
- Tipográfica — similitud del estilo de letra/tipografía usada en el logo.
Hallazgo clave de la investigación técnica: INDECOPI ya clasifica cada logo figurativo publicado usando la Clasificación de Viena (estándar internacional de elementos gráficos de marcas) — por ejemplo 2.3.16; 24.9.21; 24.9.22; 25.1.5; 3.1.1; 3.1.6. Esto permite un primer filtro de similitud gráfica barato y estructurado (comparación de códigos Viena) antes de recurrir a embeddings de imagen o perceptual hashing para una comparación visual más fina entre dos logos específicos.
4. Arquitectura técnica del scraping — INDECOPI Gaceta
Investigación de reconnaissance realizada el 05/09/2026 (Playwright, uso temporal solo para mapear tráfico — no es una dependencia de producción) contra https://pi.indecopi.gob.pe/gaceta/.
4.1 Comparación con el enfoque usado en ODIN (SPIJ)
| Aspecto | SPIJ (Poder Judicial, ODIN) | Gaceta INDECOPI (Tracking de Marcas) |
|---|---|---|
| Tecnología | API REST/JSON oculta detrás de la UI Angular | JBoss Seam + JSF 1.2 + RichFaces (server-rendered, AJAX postbacks) |
| Estado entre requests | JWT (~24h) reenviado como Bearer token | jsessionid (cookie) + javax.faces.ViewState — confirmado constante ("j_id1"), no rota por request |
| Bloqueo de red desde el VPS | Sí — bloqueo TLS a nivel de firewall gubernamental, requirió relay residencial | No — conectividad directa confirmada, 200 OK en ~0.9s |
| ¿Necesita navegador headless en producción? | No (una vez mapeada la API) | No — replicación vía HTTP puro confirmada viable |
4.2 Flujo de scraping confirmado
sequenceDiagram participant S as Scheduler (n8n, cada 24h) participant G as Gaceta INDECOPI S->>G: GET /gaceta/ (inicia sesión) G-->>S: Set-Cookie JSESSIONID S->>G: POST /gaceta/index.seam (Área=SIGNOS DISTINTIVOS,
Fecha Desde/Hasta, ViewState=j_id1, btnAceptar) G-->>S: Fragmento HTML con resultados página 1 (~26 items) loop Por cada página adicional (hasta ~30/día) S->>G: POST /gaceta/index.seam (paginacionDSDDIN=N, ViewState=j_id1) G-->>S: Fragmento HTML con resultados página N end loop Por cada resultado nuevo S->>G: GET /gaceta/dsd/<archivo>.gif (sin sesión, directo) G-->>S: Imagen del logo (resolución completa) end S->>S: Parsear expediente, denominación,
solicitante, clases, código Viena, logo
4.3 Datos capturables por publicación
- Nro. de Expediente, Fecha de Publicación, Fecha Límite para Oposición, Fecha de Presentación
- Signo Solicitado (imagen del logo, descargable directo)
- Tipo de Solicitud (marca de producto / de servicio / etc.)
- Solicitante(s) y país
- Descripción del signo, Producto(s)/Servicio(s), Clase de Niza
- Clasificación de los Elementos Figurativos (código Viena) — insumo directo para el matching gráfico
Volumen real observado: 768 resultados en una ventana de 3 días solo en el área Signos Distintivos (~30 páginas) — confirma que el volumen diario es considerable, tal como anticipaba el caso de negocio original.
5. Modelo de datos conceptual (preliminar)
Diagrama preliminar — se ajustará cuando se precise el detalle funcional de cada caso de uso (sección 2). No representa un esquema de base de datos final.
classDiagram
class Usuario {
+id
+nombre
+email
+telefono_whatsapp
+cuenta_id
}
class Cuenta {
+id
+tipo : PAGADA|PRUEBA|EMPRESA
+nivel_tarifa_id
+fecha_inicio
}
class NivelTarifa {
+id
+nombre
+precio
}
class MarcaVigilada {
+id
+usuario_id
+denominacion
+logo_referencia
+codigo_viena_referencia
+frecuencia_tracking
+clases_niza
}
class PublicacionGaceta {
+id
+nro_expediente
+fecha_publicacion
+fecha_limite_oposicion
+denominacion
+logo_url
+codigo_viena
+solicitante
+clase_niza
}
class AlertaCoincidencia {
+id
+marca_vigilada_id
+publicacion_id
+score_texto
+score_fonetico
+score_grafico
+score_tipografico
+fecha_generada
+estado
}
Usuario "1" --> "1" Cuenta
Cuenta "1" --> "0..1" NivelTarifa
Usuario "1" --> "*" MarcaVigilada
MarcaVigilada "1" --> "*" AlertaCoincidencia
PublicacionGaceta "1" --> "*" AlertaCoincidencia
6. Estado actual del proyecto
| Ítem | Estado |
|---|---|
| Caso de negocio y alcance | ✅ Definido |
| Diagrama de casos de uso (Usuario/Admin) | ✅ Definido |
| Detalle funcional por caso de uso | ⏳ Pendiente |
| Reconnaissance técnica del scraping (Gaceta) | ✅ Completa — HTTP puro confirmado viable |
| Conectividad VPS de producción → Gaceta | ✅ Confirmada, sin bloqueo |
| Workflow n8n de ingesta (scraping real) | ⏳ Pendiente de construcción |
| Motor de matching (texto/fonética/gráfica/tipografía) | ⏳ Pendiente de diseño |
| Modelo de datos definitivo | ⏳ Pendiente (depende del detalle funcional) |
| Frontend React | ⏳ No iniciado |
| Integración WhatsApp para alertas | ⏳ No iniciado |
| Registro/autenticación de usuarios | ⏳ No iniciado |
7. Referencias y accesos
- Fuente de datos: https://pi.indecopi.gob.pe/gaceta/
- Referencia de mercado: drmarcas.com — Radar de Vigilancia Marcaria
- Infraestructura: mismo VPS compartido de Ergo Systems (Dokploy/Docker,
76.13.111.224) usado por ODIN y CCH — backend de este proyecto será independiente (BD y workflows propios), infraestructura física puede compartirse. - Esta bitácora se actualizará al cierre de cada tanda relevante de trabajo, mismo criterio usado en la bitácora de ODIN.
