Pular para o conteúdo principal

Lucent KYC - Visão Geral

Plataforma brasileira multi-tenant de compliance para análise e gestão de risco KYC (Know Your Customer) com integração a múltiplos provedores de dados.

1. Visão Geral do Projeto

  • Nome do Projeto: Lucent KYC
  • Cliente/Caso de Uso: Plataforma SaaS de compliance para instituições financeiras brasileiras
  • Status: Desenvolvimento Ativo
  • Repositório: https://github.com/LucentMinds-ai/lucent-kyc
  • Contato Principal: Henrique Andrade - Lucent Minds
  • Iniciado em: 2024

2. Contexto de Negócio

Problema a Resolver

Instituições financeiras brasileiras necessitam de uma plataforma escalável e multi-tenant para:

  • Verificação automatizada de CPF e CNPJ via provedores de dados (BigDataCorp, Google, Serviços Lucent Minds, entre outros)
  • Avaliação de risco baseada em regras customizáveis
  • Recertificação periódica automatizada de perfis
  • Gestão centralizada de múltiplos tenants com isolamento de dados
  • Análise de perfis com dashboards analíticos avançados

Métricas de Sucesso

  • Sistema de pontuação de risco em 5 níveis (Baixíssimo, Baixo, Moderado, Alto, Reprovado)
  • Conformidade com regulamentações financeiras brasileiras via integração com provedores de dados especializados
  • Processamento em lote com até 50 perfis simultâneos
  • Recertificação automatizada via BullMQ worker
  • Interface moderna com shadcn-ui e React 18
  • Analytics de perfis CPF/CNPJ com métricas em tempo real

Usuários Alvo

  • Platform Admin: Administradores da plataforma SaaS
  • Tenant Admin: Administradores de instituições financeiras clientes
  • User: Oficiais de compliance e analistas de risco

3. Stack Técnico

ComponenteTecnologiaVersãoPor que Esta Escolha?
RuntimeNode.js20.xEstabilidade LTS e recursos modernos
FrontendReact18.xArquitetura baseada em componentes e hooks
Build ToolVite5.xBuild rápido e HMR eficiente
LinguagemTypeScript5.xType safety e melhor DX
BackendExpress4.xAPI REST leve e flexível
Banco de DadosSupabase PostgreSQL-Database gerenciado com RLS e auth
State ManagementTanStack Query5.xServer state management otimizado
UI Componentsshadcn-ui-Componentes acessíveis e customizáveis
EstilizaçãoTailwindCSS3.xDesenvolvimento rápido de UI
i18ni18next-Internacionalização (pt-BR, en, es)
WorkerBullMQ + Redis-Recertificação automatizada em background
AI/LLMOpenAI GPT-4 / Anthropic Claude-Análise inteligente de perfis (opcional)

4. Arquitetura

Arquitetura de Alto Nível

Componentes da Arquitetura:

ComponenteTecnologiaPortaFunção
FrontendReact 18 + Vite8080Interface do usuário, queries KYC, dashboards
API BackendExpress + TypeScript3000Lógica de negócio, proxy para APIs externas
DatabaseSupabase PostgreSQL-Armazenamento multi-tenant com RLS
WorkerBullMQ-Recertificação automatizada de perfis
QueueRedis6379Fila de jobs do worker
KYC ProvidersBigDataCorp, Google, Lucent Minds-Verificação CPF/CNPJ via múltiplos provedores
AI/LLMOpenAI/Anthropic-Análise inteligente (opcional)

Fluxo de Dados:

  1. Frontend faz requisições HTTP para API Express
  2. API consulta Supabase PostgreSQL (com RLS por tenant_id)
  3. API proxy chama provedores de dados para consultas KYC
  4. API opcionalmente consulta LLM para análise adicional
  5. Worker BullMQ processa jobs de recertificação via Redis
  6. Worker atualiza perfis no Supabase após recertificação

Decisões Chave de Design

Multi-Tenancy com Isolamento

  • Row-Level Security (RLS): Todas as tabelas protegidas por tenant_id
  • Hierarquia de Roles: platform_admin > tenant_admin > user
  • API Keys Criptografadas: AES-256-GCM para credenciais sensíveis
  • Proxy Backend: Todas as chamadas aos provedores de dados passam pelo backend

Backend Logic Preference

  • CRÍTICO: Lógica de negócio em Node.js/Express, NÃO em funções PostgreSQL
  • Serviços: server/src/services/ para regras de risco, LLM, recertificação
  • Supabase: Apenas para auth, RLS e armazenamento de dados

Sistema de Risco Centralizado

  • Configuração Única: src/lib/riskLevelConfig.ts como single source of truth
  • 5 Níveis: very_low, low, moderate, high, rejected
  • Cores Consistentes: Hex colors para UI, PDFs e relatórios
  • Engine JSON: Regras customizáveis por tenant em risk_rules table

Recertificação Automatizada

  • BullMQ + Redis: Worker isolado com filas por tenant
  • Batch Processing: 50 perfis, 5 requisições concorrentes
  • Manual Override: Respeita manual_risk_next_revision
  • Retry Strategy: Exponential backoff (1min → 5min → 15min)

5. Funcionalidades Principais

Queries KYC

  • Consulta CPF/CNPJ: Integração com múltiplos provedores de dados (BigDataCorp, Google, Serviços Lucent Minds)
  • Modo Mock: Testes sem consumir créditos das APIs externas
  • Batch Processing: Processamento em lote de até 50 perfis
  • Datasets Customizáveis: Datasets configuráveis por tenant e provedor
  • Fragmentação Inteligente: Parser smartSplit para sintaxe de filtros

Análise de Risco

  • Engine de Regras JSON: Sistema customizável baseado em regras por tenant
  • 5 Níveis de Risco: Baixíssimo, Baixo, Moderado, Alto, Reprovado
  • Configuração de Thresholds: Ajuste de pontos por nível via admin
  • Risk Factors: Detalhamento de fatores que contribuem para score
  • Manual Override: Analistas podem sobrescrever classificações automáticas

Profile Analytics

  • Dashboard CPF/CNPJ: Métricas agregadas por tipo de perfil
  • Distribuição de Risco: Visualização de percentuais por nível
  • Review Status: Perfis próximos de recertificação (7/15/30 dias)
  • High Risk Profiles: Lista com top risk factor
  • Manual Overrides: Acompanhamento de alterações manuais
  • Date Range Filter: Análise temporal customizável

Recertificação Automatizada

  • Jobs Programados: Execução periódica via BullMQ
  • Configuração por Tenant: Frequência, horários, batch size customizáveis
  • Manual Trigger: Execução sob demanda via admin panel
  • Logs Detalhados: Rastreamento completo de execuções e resultados
  • Skip Logic: Respeita overrides manuais e datas customizadas

Administração Multi-Tenant

  • Platform Admin: Gestão de tenants, usuários globais, configurações da plataforma
  • Tenant Admin: Gestão de usuários, datasets, regras de risco, LLM, storage
  • Role-Based Access: 3 níveis hierárquicos com permissões granulares
  • Audit Logs: Rastreamento completo de ações administrativas
  • Storage Config: 3-tier system (Global, Permissions, Config)

Gestão de Usuários (User Admin)

  • Listar Usuários: Visualizar todos os usuários com email, roles e tenant. Tenant admins veem apenas sua organização.
  • Convidar Usuários: Envio de convites por email com atribuição automática de tenant e role.
  • Impersonar Usuários (Platform Admin): Gerar magic link para login como qualquer usuário (audit log com severidade critical).
  • Redefinir Senha (Platform Admin): Disparar email de reset de senha para qualquer usuário.

API Analytics

  • Dashboard em Tempo Real: Monitoramento de uso de API Keys, métricas de performance e padrões de consulta.
  • Métricas: Total de chamadas, taxa de sucesso, tempo médio de resposta, breakdown CPF/CNPJ.
  • Gráficos: Linhas de tendência (diárias), gráficos de distribuição (pizza).
  • Tabelas: Breakdown por API Key, por endpoint, chamadas recentes com paginação.
  • Privacidade: Mascaramento de documentos (primeiros 3 + últimos 2 dígitos).
  • Filtros: Intervalo de datas (7/30/60/90 dias), seletor de API Key, tipo de documento.

Gestão de Provedores (Provider Management)

  • Credenciais no Banco: Substituição de variáveis de ambiente por credenciais gerenciadas no banco de dados (BigDataCorp, Google Maps).
  • Criptografia AES-256-GCM: Credenciais criptografadas em repouso com IV aleatório.
  • Cache de Credenciais: TTL de 1h com dupla criptografia e locks distribuídos via Redis.
  • Testes de Conectividade: Teste de conectividade ou consulta real (BDC CPF, Google Maps geocode).
  • Fallback: Banco de dados → variáveis .env (compatibilidade retroativa).

LLM Integration (Opcional)

  • OpenAI GPT-4 / Anthropic Claude: Análise inteligente adicional
  • Prompts Customizáveis: Templates por tenant e tipo de documento
  • Encryption: Chaves API criptografadas com AES-256-GCM
  • Test Endpoint: Validação de configuração antes de ativar

Internacionalização

  • 3 Idiomas: Português (pt-BR), Inglês (en), Espanhol (es)
  • i18next: Framework completo de tradução
  • UI Multilíngue: Interface adaptável por preferência do usuário

6. Configuração

Variáveis de Ambiente

Frontend (VITE_ prefixado)

VITE_SUPABASE_URL=https://seu-projeto.supabase.co
VITE_SUPABASE_PUBLISHABLE_KEY=eyJhbGc...
VITE_API_URL=http://localhost:3000

Backend (server/.env)

# Servidor
PORT=3000
NODE_ENV=development

# Supabase
SUPABASE_URL=https://seu-projeto.supabase.co
SUPABASE_ANON_KEY=eyJhbGc...
SUPABASE_SERVICE_ROLE_KEY=eyJhbGc... # OBRIGATÓRIO para admin operations

# Encryption (32+ caracteres)
LLM_ENCRYPTION_KEY=your-32-character-minimum-encryption-key-here # OBRIGATÓRIO

# Provedores de Dados KYC (configure conforme necessário)
# BigDataCorp
BIGDATACORP_LOGIN=seu-login
BIGDATACORP_PASSWORD=sua-senha
BDC_BASE_URL=https://api.bigdatacorp.com.br

# Outros provedores (Google, Serviços Lucent Minds, etc.)
# GOOGLE_API_KEY=sua-chave
# LUCENT_SERVICES_KEY=sua-chave

# LLM (opcional)
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...

Worker (worker/.env)

# Redis
REDIS_HOST=localhost
REDIS_PORT=6379

# Supabase
SUPABASE_URL=https://seu-projeto.supabase.co
SUPABASE_SERVICE_ROLE_KEY=eyJhbGc...

# Ambiente
NODE_ENV=development
LOG_LEVEL=info

7. Setup de Desenvolvimento Local

Pré-requisitos

# Node.js 20.x ou superior
node -v

# npm ou yarn
npm -v

# Supabase CLI (para migrations)
npm install -g supabase

# Docker (para worker com Redis)
docker --version

Passos de Instalação

1. Clonar e Instalar Dependências

# Clonar repositório
git clone https://github.com/LucentMinds-ai/lucent-kyc.git
cd lucent-kyc

# Instalar dependências raiz (frontend)
npm install

# Instalar dependências backend
cd server && npm install && cd ..

# Instalar dependências worker
cd worker && npm install && cd ..

2. Configurar Supabase

# Criar projeto no Supabase (supabase.com)
# Copiar URL e chaves para .env

# Executar migrations localmente
npx supabase db reset

3. Configurar Variáveis de Ambiente

# Copiar templates
cp .env.example .env
cp server/.env.example server/.env
cp worker/.env.example worker/.env

# Editar arquivos .env com suas credenciais
# OBRIGATÓRIO: SUPABASE_SERVICE_ROLE_KEY, LLM_ENCRYPTION_KEY

4. Iniciar Serviços

Opção A: Full Stack com Worker (Recomendado)

# Terminal 1: Frontend + Backend
npm run dev:all

# Terminal 2: Worker (com Redis via Docker)
cd worker
docker-compose up -d # Inicia Redis
npm run dev

Opção B: Apenas Frontend + Backend

npm run dev:all

Opção C: Serviços Separados

# Terminal 1: Frontend
npm run dev

# Terminal 2: Backend
npm run dev:backend

# Terminal 3 (opcional): Worker
cd worker && npm run dev

Verificação

A aplicação deve estar rodando em:

8. Estrutura do Projeto

lucent-kyc/
├── src/ # Frontend React + Vite
│ ├── components/ # Componentes React
│ │ ├── ui/ # shadcn-ui components
│ │ ├── ProfileAnalytics/ # Analytics dashboards
│ │ ├── AppLayout.tsx # Layout principal
│ │ ├── DashboardSelector.tsx
│ │ └── DateRangePicker.tsx
│ ├── pages/ # Páginas da aplicação
│ │ ├── Dashboard.tsx
│ │ ├── CPFQuery.tsx, CNPJQuery.tsx
│ │ ├── QueryHistory.tsx
│ │ ├── admin/ # Admin pages
│ │ │ ├── AdminDashboard.tsx
│ │ │ ├── TenantManagement.tsx
│ │ │ ├── UserManagement.tsx
│ │ │ ├── DatasetManagement.tsx
│ │ │ ├── RiskManagement.tsx
│ │ │ ├── RiskThresholds.tsx
│ │ │ ├── LLMConfig.tsx
│ │ │ ├── StorageConfig.tsx
│ │ │ ├── JobsConfig.tsx
│ │ │ ├── ReportConfig.tsx
│ │ │ └── AuditLogs.tsx
│ │ └── settings/
│ │ └── RecertificationSettings.tsx
│ ├── hooks/ # Custom React hooks
│ │ ├── useProfile.ts
│ │ ├── useRoles.ts
│ │ ├── useQueries.ts
│ │ ├── useApiUsage.ts
│ │ ├── useRiskAssessment.ts
│ │ ├── useProfileAnalytics.ts
│ │ └── ...
│ ├── lib/ # Utilitários
│ │ ├── supabase.ts
│ │ ├── riskLevelConfig.ts # Sistema centralizado de cores/níveis
│ │ └── utils.ts
│ ├── i18n/ # Internacionalização
│ │ └── locales/ # pt-BR, en, es
│ └── types/ # TypeScript types

├── server/ # Backend Express
│ ├── src/
│ │ ├── routes/ # API endpoints
│ │ │ ├── kyc.ts
│ │ │ ├── datasets.ts
│ │ │ ├── risk.ts
│ │ │ ├── llm.ts
│ │ │ ├── profileAnalytics.ts
│ │ │ ├── platformStorageConfig.ts
│ │ │ ├── tenantStoragePermissions.ts
│ │ │ ├── platformJobs.ts
│ │ │ └── tenantRecertification.ts
│ │ ├── services/ # Lógica de negócio
│ │ │ ├── riskAssessment.ts
│ │ │ ├── llmService.ts
│ │ │ ├── profileAnalyticsService.ts
│ │ │ └── ...
│ │ ├── middlewares/
│ │ │ └── auth.ts # JWT verification
│ │ └── index.ts # Express app
│ └── package.json

├── worker/ # BullMQ Worker
│ ├── src/
│ │ ├── services/
│ │ │ └── profileRecertificationService.ts
│ │ ├── workers/
│ │ │ └── recertificationWorker.ts
│ │ └── index.ts
│ ├── docker-compose.yml # Redis setup
│ └── package.json

├── supabase/ # Database migrations
│ └── migrations/
│ └── 20250107000000_consolidated_schema.sql

├── docs/ # Documentação adicional
├── postman/ # Coleções Postman
├── .clinerules # Padrões de desenvolvimento com IA
├── CLAUDE.md # Guia para Claude Code
├── .env.example # Templates de ambiente
└── package.json # Frontend dependencies

9. Deploy

Hospedagem Recomendada

Frontend

  • Plataforma: Vercel ou Netlify
  • Build Command: npm run build
  • Output Directory: dist/
  • Environment Variables: VITE_SUPABASE_URL, VITE_SUPABASE_PUBLISHABLE_KEY, VITE_API_URL

Backend

  • Plataforma: Render, Railway ou Vercel Serverless
  • Build Command: cd server && npm install && npm run build
  • Start Command: cd server && npm start
  • Port: 3000 (configurável via PORT env)
  • Environment Variables: Todas as variáveis listadas em seção 6

Worker

  • Plataforma: Render Background Worker ou Railway
  • Redis: Upstash Redis ou Redis Cloud
  • Build Command: cd worker && npm install && npm run build
  • Start Command: cd worker && npm start
  • Environment Variables: REDIS_HOST, REDIS_PORT, SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY

Banco de Dados

  • Supabase: Projeto gerenciado em supabase.com
  • Migrations: Executar via Supabase Dashboard ou CLI
  • RLS: Já configurado nas migrations

Estratégia de Deploy

Opção 1: Monorepo (Recomendado para pequenos times)

# Frontend + Backend no mesmo repositório
# Frontend: Vercel
# Backend: Render
# Worker: Render Background Worker
# Database: Supabase
# Redis: Upstash

Opção 2: Microserviços

# Repositórios separados
# lucent-kyc-frontend → Vercel
# lucent-kyc-api → Render/Railway
# lucent-kyc-worker → Render Background Worker
# Database: Supabase

Domínios

  • Produção: A definir
  • Staging: A definir
  • API: api.seu-dominio.com ou seu-dominio.com/api

10. Registros de Decisões de Arquitetura (ADRs)

ADR-001: Lógica de Negócio no Backend (Node.js), Não no Banco

Data: 2024

Contexto: Inicialmente consideramos usar PostgreSQL functions para lógica de risco e recertificação, como é comum em aplicações Supabase.

Decisão: TODA lógica de negócio DEVE estar em Node.js/Express (server/src/services/), NÃO em funções ou triggers PostgreSQL.

Consequências:

  • Positivo: Testabilidade, versionamento, debugging, portabilidade, facilidade de manutenção
  • Positivo: Código em uma linguagem (TypeScript) ao invés de duas (TypeScript + PL/pgSQL)
  • Positivo: Fácil integração com APIs externas (provedores de dados, OpenAI, etc.)
  • Negativo: Latência adicional de rede (minimizada com lazy initialization)

Alternativas Consideradas:

  • PostgreSQL Functions: Performance melhor mas dificulta testes e manutenção
  • Edge Functions Supabase: Boa opção mas requer deploy separado e tem limitações

ADR-002: Multi-Tenancy com Row-Level Security (RLS)

Data: 2024

Contexto: Precisávamos de isolamento forte entre tenants para compliance financeiro.

Decisão: Usar Row-Level Security (RLS) do PostgreSQL com tenant_id em todas as tabelas.

Consequências:

  • Positivo: Isolamento nativo no banco, impossível acessar dados de outro tenant
  • Positivo: Performance otimizada (índices PostgreSQL em tenant_id)
  • Negativo: Complexidade adicional em queries e migrations

Alternativas Consideradas:

  • Schema-per-Tenant: Isolamento total mas dificulta agregações cross-tenant
  • Database-per-Tenant: Máximo isolamento mas custo e complexidade operacional altos
  • Application-Level Filtering: Mais simples mas maior risco de vazamento de dados

ADR-003: Sistema Centralizado de Risk Levels

Data: Janeiro 2025

Contexto: Cores e labels de risk levels estavam espalhados em múltiplos arquivos, causando inconsistências.

Decisão: Criar src/lib/riskLevelConfig.ts como single source of truth para cores, labels e configuração de níveis de risco.

Consequências:

  • Positivo: Consistência total entre UI, PDFs, relatórios e analytics
  • Positivo: Facilita mudanças globais (ex: alterar cor de "high")
  • Positivo: Funções utilitárias centralizadas (normalizeRiskLevel, getRiskLevelColor)

Alternativas Consideradas:

  • Manter cores em cada componente: Flexibilidade mas inconsistência
  • Database-driven colors: Mais flexível mas overhead de queries

ADR-004: BullMQ + Redis para Recertificação Automatizada

Data: 2024

Contexto: Necessitávamos de sistema robusto para recertificar milhares de perfis periodicamente.

Decisão: Usar BullMQ com Redis para worker service isolado.

Consequências:

  • Positivo: Escalabilidade horizontal, retry automático, job scheduling, isolamento por tenant
  • Positivo: UI de monitoring via BullBoard
  • Negativo: Infraestrutura adicional (Redis), complexidade operacional

Alternativas Consideradas:

  • Cron Jobs no Backend: Mais simples mas não escala
  • Supabase pg_cron: Nativo mas limitado e mistura lógica no banco
  • AWS SQS/Lambda: Escalável mas vendor lock-in e custo

ADR-005: TypeScript com Modo Relaxado

Data: 2024

Contexto: Desenvolvimento inicial rápido vs. type safety estrito.

Decisão: TypeScript com noImplicitAny: false, strictNullChecks: false para agilidade, com migração gradual para modo estrito em novas features.

Consequências:

  • Positivo: Velocidade de desenvolvimento, onboarding mais fácil
  • Negativo: Alguns bugs de tipos podem passar, refatoração futura necessária

Alternativas Consideradas:

  • Strict Mode desde início: Qualidade maior mas velocidade menor
  • JavaScript puro: Desenvolvimento mais rápido mas maior risco de bugs em runtime

11. Problemas Conhecidos e Limitações

Segurança

  • JWT Verification: Verificação dual implementada — JWKS (ES256) via jwks-rsa com cache de 10 minutos, fallback HS256 via jsonwebtoken com SUPABASE_JWT_SECRET.

Funcionalidades

  • Profile Analytics: Date range filter implementado mas sem persistência de preferências
  • Recertification Worker: TODOs pendentes:
    • server/src/routes/tenantRecertification.ts:~80-85 - Integrar criação de jobs BullMQ
    • worker/src/services/profileRecertificationService.ts:~120 - Substituir simulação por chamadas KYC reais

Infraestrutura

  • Redis: Necessário para worker em produção (Upstash ou Redis Cloud recomendados)
  • Environment Variables: Sem validação robusta no startup (considerar zod/joi)

Dados

  • Provedores de Dados: Integrações testadas mas requerem credenciais válidas para uso real
  • Mock Mode: Dados simulados podem não refletir estrutura exata das APIs dos provedores

12. Melhorias Futuras

Concluído

  • JWT Verification: Verificação dual JWKS (ES256) + HS256 implementada
  • Structured Logging: Sistema de logs com correlation ID, níveis configuráveis, e rastreamento de requisições
  • API Analytics: Dashboard em tempo real para monitoramento de uso de API Keys
  • User Admin: Gestão de usuários (listar, convidar, impersonar, redefinir senha)
  • Provider Management: Credenciais gerenciadas no banco com criptografia AES-256-GCM
  • Field Mapping System V2: Sistema de mapeamento de campos (Fases 1-9 completas) com PDFs multilíngues
  • CI/CD Pipeline: CircleCI + Docker para backend e worker
  • Pre-commit Hooks: Husky com ESLint + testes + auditoria de segurança

Alta Prioridade

  • Recertification Worker: Completar integração BullMQ no backend
  • Environment Validation: Adicionar validação de variáveis obrigatórias no startup
  • Error Boundaries: Implementar error boundaries React para melhor UX
  • Strict TypeScript: Migrar para strict: true no tsconfig

Média Prioridade

  • Colaboração em Tempo Real: WebSockets para equipes de compliance
  • ML Risk Scoring: Modelo de ML complementar às regras JSON
  • Webhooks: Notificações para eventos críticos (high risk, recertification failed)
  • API Rate Limiting: Proteção contra abuso (express-rate-limit)

Baixa Prioridade

  • Mobile App: React Native para verificação em campo
  • Bureaus de Crédito: Integração com Serasa, Boa Vista SCPC
  • Dark Mode: Tema escuro para UI
  • Advanced Search: Filtros complexos em Query History

📚 Documentação da API

Consulte a documentação completa da API Lucent KYC para integração e uso:

Referência Completa:

Guias Práticos:

Postman Collection: Importe postman/Lucent_KYC_Tenant_User.postman_collection.json do repositório para testar todos os endpoints.

Documentação do Projeto

APIs e Integrações Externas

Ferramentas e Frameworks

Stack Técnico

Deploy e Infraestrutura


Última Atualização: Janeiro 2025 Mantido Por: Henrique Andrade - Lucent Minds Versão: 1.0.0