Call Signal Layer

Como reuniões Inventa viram sinais estruturados, passam por triagem e voltam pro dia a dia via Slack. Visão da arquitetura em produção (PoC Fase 1).

Atualizado em maio/2026 · Público · cs-architecture.pages.dev

6
Slices em produção
13
Marcas com canal Slack
3
Modelos IA no pipeline
Humano
Sempre no loop de triagem

1 · Entrada e extração

Reunião entra pelo Granola; IA extrai sinais sobre transcript diarizado completo (fallback: resumo).

flowchart LR
  granola["Granola
Reuniões Inventa"] captura["Captura
Poll 15 min"] storage["Armazenamento
Resumo + metadados"] pii["Proteção PII
Antes do LLM"] haiku["Triagem Haiku
Vale extrair?"] sonnet["Extração Sonnet
6 tipos de sinal"] entities["Entidades
Marcas · pessoas"] db["Base de sinais
Postgres Neon"] granola --> captura --> storage --> pii --> haiku --> sonnet --> entities --> db

2 · Triagem — confiança da IA

Todo sinal passa por regras de confiança. Decisões ficam na trilha de auditoria (inclui revisão Opus).

Auto-promove

Confiança > 85%

Vai direto pro Slack, sem fila humana.

Revisão Opus

Confiança 70% – 85%

Opus valida, ajusta score e pode promover, dispensar ou mandar pra fila.

Fila humana

Confiança < 70%

App de Triagem — promover, editar ou dispensar. Escalação automática após 24h.

3 · Ativação no Slack

Sinais aprovados são empurrados pro dia a dia — push antes de pull.

flowchart LR
  promoted["Sinal aprovado
Promovido"] brand["Canal da marca
#cliente-marca"] tracker["Commitments
#commitments-tracker"] themes["Temas
#cs-themes-semanal"] inventa["/inventa
Consulta com fontes"] reminders["Lembretes
48h + D+1"] promoted --> brand promoted --> tracker promoted --> themes promoted --> inventa tracker --> reminders

4 · Consulta /inventa

Comando no Slack para consultar o que saiu das reuniões — complementa o push de sinais nos canais. Responde só com sinais promovidos (triados ou auto-aprovados).

flowchart TB
  slack["Slack /inventa"]
  rules["Regras fixas
marca · periodo · tipo
sem LLM"] search["Busca sinais promovidos"] zero{"Zero resultados?"} retry["Amplia busca
periodo · tipo · modo"] haikuAdv["Haiku sugere reformular"] answer["Resposta com fontes"] slack --> rules --> search --> zero zero -->|nao| answer zero -->|sim| retry --> search retry -->|"ainda zero"| haikuAdv --> answer

Busca rápida

~1 segundo

Lookup tipo Bauducco essa semana — lista sinais com botão Abrir reunião. Sem síntese IA.

Pergunta aberta

2 – 4 segundos

O que rolou com Bauducco? — busca semântica, Haiku ordena candidatos, Sonnet redige com citações numeradas.

Etapa Como funciona LLM?
Entender a pergunta Regex + palavras-chave (marca, período, tipo) Não
Busca rápida Full-text search no Postgres Não
Busca semântica Embedding + Vectorize (similaridade) Não generativo
Ordenar candidatos Haiku escolhe os mais relevantes Sim
Redigir resposta Sonnet sintetiza com citações obrigatórias Sim
Zero resultados Retry automático (amplia filtros) → Haiku sugere reformulação Só no empty state
Confiança O /inventa não inventa reunião. Toda afirmação na síntese cita sinal real; cada card traz link pro Granola. Se nada aparece, o sistema amplia a busca (período, tipo, modo) e só então a IA sugere como reformular — sem afirmar que algo existe na base.

Exemplos: /inventa Bauducco essa semana · /inventa o que rolou com Bauducco? · /inventa quais riscos foram levantados nos últimos 14 dias?

Tipos de sinal

Tipo Uso típico
Compromisso Prazo + responsável → lembretes
Decisão O que foi decidido na call
Risco Ameaça a prazo ou entrega
Sinal de cliente Feedback ou demanda de marca
Process gap Falha de processo interno
Ideia Proposta ainda não decidida

Observabilidade

Ferramenta O que monitora
Langfuse Qualidade IA — Haiku, Sonnet, Opus
cs-ops Custo LLM, Opus reviews, erros
Trilha de auditoria Promote · edit · dismiss · delta Opus
Granola — transcript diarizado O poller busca a transcrição completa via Granola API (?include=transcript). A extração prioriza utterances com speaker label; se indisponível, cai no resumo editorial (modo degradado).

Componentes técnicos

Workers Cloudflare, filas e storage — referência para engenharia.

Mapa de workers
Camada Worker / App Função
Entrada cs-poller Cron 15 min → R2 + fila cs-ingest
Extração cs-extraction-pipeline PII · Haiku · Sonnet · Opus · Vectorize
Triagem cs-triage-api + triage-app API + UI promote/edit/dismiss
Slack cs-slack-bot Posts promovidos + /inventa
Compromissos cs-commitments-scheduler Cron horário · quiet hours 20–8h BRT
Temas cs-themes-digest Digest seg 9h BRT
Ops cs-ops Dashboard Analytics Engine
/inventa — referência
Item Detalhe
Endpoint cs-slack-bot POST /slack/command
Dados Neon Postgres (FTS) + Vectorize cs-signals (synth)
Modelos Haiku rerank + empty advisor · Sonnet síntese (AI Gateway)
Latência FTS síncrono ~1s · synth ack + waitUntil 2–4s
Retry zero-result drop texto → drop tipo → período 30d → escalar hybrid · depois Haiku empty advisor
Filas e storage
Recurso Papel
cs-ingest Poller → extraction pipeline
cs-promoted Triagem → slack-bot
cs-transcripts (R2) Payload sanitizado por reunião
Neon Postgres Sinais, entidades, commitments, audit
Vectorize cs-signals /inventa synth + themes digest