Seguridad y protección de datos desde el diseño

Markatzy

Una plataforma de vigilancia de marcas para Ecuador. Cada mes, la oficina nacional de propiedad intelectual publica alrededor de 1.800 nuevas solicitudes, y los titulares tienen 30 días para oponerse a las que entren en conflicto con sus marcas. Markatzy lee cada gaceta, compara cada solicitud con las marcas que vigila en cuatro dimensiones y redacta el escrito de oposición cuando un conflicto lo justifica.

Rol
Fundador; único diseñador y desarrollador
Periodo
2023 - presente
Tecnologías
Next.js, tRPC, Prisma, PostgreSQL con pgvector, pg-boss, Claude y Cohere en AWS Bedrock, Tesseract, Railway
markatzy.com
3000+commits en doce meses
858pruebas automatizadas
127klíneas de TypeScript
4dimensiones de similitud

De la gaceta al escrito de oposición

  1. 01Páginas de la gacetaLa gaceta mensual llega como páginas escaneadas, unas 900 por número, almacenadas en S3.
  2. 02OCR y extracciónEn cada página se detectan columnas, logotipos y campos; las entradas se extraen y reciben una puntuación de confianza.
  3. 03Revisión humanaAntes de la importación, un revisor confirma la disposición de la página y resuelve primero las entradas de menor confianza.
  4. 04MonitoreoUn proceso en segundo plano compara cada marca vigilada con el nuevo número en cuatro dimensiones.
  5. 05Escrito de oposiciónClaude redacta el escrito a partir de la base de conocimiento jurídico, con cada cita enlazada a su artículo.

Seguridad y protección de datos

Construida para varias firmas en un solo sistema, con protección de datos conforme a la LOPDP de Ecuador desde el inicio.

  • Cada consulta sobre datos de una firma se limita a la organización de esa firma, y esto se aplica en la capa de API
  • Límites de tasa escalonados en los endpoints de registro, búsqueda y escritos, contra el scraping y los costos descontrolados; las direcciones IP se convierten en hash antes de usarse
  • Webhooks de pago verificados por firma y procesados una sola vez, sin importar el número de reintentos
  • Registros de auditoría de la actividad de los casos, de las correcciones del registro y de las referencias en que se basa cada escrito
  • Política de privacidad y términos versionados, con registro de la versión aceptada por cada usuario
  • Todos los modelos de IA se ejecutan en AWS Bedrock, de modo que no existen claves de API de modelos que puedan filtrarse

El problema

Conforme a la Decisión 486 de la Comunidad Andina, quien tenga legítimo interés puede oponerse a una solicitud de registro de marca dentro de los 30 días siguientes a su publicación. En Ecuador, la oficina de propiedad intelectual (SENADI) publica las solicitudes en una gaceta mensual de aproximadamente 1.000 a 2.300 entradas, en páginas escaneadas. Una firma que vigila 100 marcas debe evaluar unos 170.000 pares cada mes, y los conflictos relevantes suelen ser fonéticos o visuales, no de grafía idéntica.

Conocí este problema como abogado de marcas, tramitando solicitudes y oposiciones ante el SENADI, y en ese momento escribí mis primeros scripts de comparación. Markatzy es ese trabajo convertido en producto.

Escritos de oposición con sus fuentes

Cuando un conflicto justifica actuar, Claude redacta el escrito de oposición. Los artículos obligatorios de la Decisión 486 están siempre en su contexto, y puede consultar otros artículos en una base de conocimiento jurídico mediante herramientas de búsqueda: búsqueda vectorial más un pequeño grafo de qué artículos citan a cuáles. Cada cita del escrito está enlazada a su artículo de origen en un registro de auditoría que el abogado puede verificar, y el escrito se genera como PDF listo para revisión.

La base de conocimiento es, en sí misma, una carpeta de 82 notas en texto plano en git que un abogado puede editar, sincronizada en un solo sentido con la base de datos. Se consideró una base de datos de grafos y se descartó por ser más de lo que necesita un corpus de este tamaño.

Práctica de ingeniería

Más de 3.000 commits en doce meses, escritos conforme a una constitución del proyecto y con las especificaciones por delante. 858 pruebas automatizadas y un pipeline de integración continua que ejecuta verificación de tipos, linting, migraciones contra un PostgreSQL real con pgvector y una quality gate de SonarQube que hace fallar la compilación. La aplicación y sus procesos en segundo plano se ejecutan en Railway desde una sola imagen; el proceso por lotes escala a cero y se activa para la gaceta mensual.

Cuatro formas en que dos marcas pueden entrar en conflicto

Cada solicitud se puntúa frente a cada marca vigilada en cuatro dimensiones. La puntuación global es la más alta de las cuatro, junto con la dimensión que la produjo, porque basta una sola semejanza fuerte para confundir al público. Cada organización fija sus propios umbrales, y la coincidencia de clases de Niza se muestra como contexto, sin incorporarse a la puntuación.

  • Fonética: las palabras de la marca se transcriben al Alfabeto Fonético Internacional en español y en inglés (eSpeak NG); los dígitos se leen como palabras y como letras, y cuenta el mejor de hasta 16 pares de variantes
  • Tipográfica: distancia de edición, además de comprobar si una marca está contenida en la otra y cuál es la palabra con mejor coincidencia
  • Semántica: los embeddings de texto de Cohere comparan el significado, de modo que afloran traducciones y sinónimos
  • Visual: la imagen del logotipo y la marca publicada comparten un mismo espacio de embeddings, de modo que un logotipo se compara con todas las marcas del registro sin generar el embedding de cada logotipo del registro

Capturas de pantalla

Las marcas que vigila una firma, con sus interruptores de monitoreo.
Búsqueda en la última gaceta, con sensibilidad ajustable.
Conflictos, cada uno puntuado en las cuatro dimensiones.
Dos marcas lado a lado, con productos, clases y solicitantes.
Un escrito de oposición redactado, listo para la revisión del abogado.

Markatzy está en producción en Ecuador con un plan gratuito. Cifras del repositorio a julio de 2026; las capturas de pantalla usan datos públicos de la gaceta.