Sistema de Clusterização com IA

Roteiros que se
entendem entre si

O Escalia agrupa automaticamente scripts de criadores de conteúdo por similaridade semântica, detecta duplicatas antes de aprovação e entrega decisões auditáveis — em escala.

82% Threshold de similaridade
1536 Dimensões de embedding
ANN Busca aproximada de vizinhos
Roteiro A
Roteiro B
Roteiro C
Roteiro D
Roteiro E
95% similar
88% similar

Como o Escalia processa roteiros

Da submissão bruta até a decisão final — tudo rastreável, auditável e reversível.

01

Submissão

O criador envia o roteiro via API. O sistema registra no banco e dispara o pipeline de processamento de forma assíncrona.

POST /api/v1/submissions
02

Normalização

O texto é limpo, dividido em blocos semânticos e filtrado para remover spam. Blocos de cena, gancho e CTA são identificados separadamente.

Celery Worker
03

Embedding

Cada bloco e o roteiro completo são transformados em vetores de 1536 dimensões via OpenAI text-embedding-3-small. Resultado armazenado com pgvector.

OpenAI API + pgvector
04

Clusterização

ANN busca os 20 vizinhos mais próximos. Com similaridade ≥ 82%, o roteiro entra no cluster existente ou cria um novo. Conflitos são sinalizados para revisão.

ANN + cosine similarity

Tudo que você precisa para gerir roteiros em escala

Detecção de Duplicatas

Identifica scripts semanticamente similares mesmo quando escritos com palavras diferentes. Vai além da comparação textual simples.

82% threshold configurável

Auditoria Completa

Toda decisão — aprovação, rejeição ou revisão — é registrada com evidências de similaridade e usuário responsável.

Dashboard Analítico

Métricas por campanha, distribuição de similaridade e pares mais próximos. Visibilidade total sobre o corpus de roteiros.

Análise por Blocos

Compara gancho, desenvolvimento e CTA separadamente. Identifica onde dois roteiros são similares, mesmo que o conjunto seja diferente.

Processamento Assíncrono

Pipeline via Celery + Redis. A submissão retorna instantaneamente; o processamento acontece em background sem bloquear a requisição.

RBAC nativo

Controle de acesso por papel: admin, analyst e viewer. Autenticação JWT com expiração configurável.

Arquitetura construída para produção

Cada componente escolhido pela razão certa.

FastAPI Web framework assíncrono
PostgreSQL + pgvector Banco de dados + busca vetorial
Redis + Celery Cache + fila de tarefas
OpenAI Embeddings text-embedding-3-small (1536d)
SQLAlchemy + Alembic ORM assíncrono + migrações
JWT + Passlib Autenticação segura

API REST pronta para integrar

Endpoints limpos, autenticação JWT, respostas paginadas.

Criadores
POST /api/v1/submissions Enviar novo roteiro
GET /api/v1/submissions/{id}/status Verificar status de processamento
Clusters
GET /internal/campaigns/{id}/clusters Listar clusters de uma campanha
GET /internal/clusters/{id}/members Membros de um cluster
Decisões
POST /internal/decisions Registrar decisão (aprovar/rejeitar)
GET /internal/decisions/{id} Recuperar decisão com evidências
Dashboard
GET /internal/campaigns/{id}/analytics Métricas consolidadas
GET /internal/submissions/{a}/compare/{b} Comparação lado a lado
Exemplo — Submeter roteiro cURL
# POST /api/v1/submissions
curl -X POST https://escalia.shinp.ai/api/v1/submissions \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "campaign_id": "uuid-da-campanha",
    "creator_id": "criador-123",
    "title": "Roteiro do produto X",
    "raw_text": "Você já sentiu que..."
  }'

# Resposta 202 — processamento assíncrono
{
  "id": "sub_abc123",
  "status": "received",
  "message": "Script received and queued for processing"
}