Sonar
No arProjeto pessoal explorando orquestração multi-agente. O caso de uso é revisão de chamadas de vendas; o objetivo real foi aprender Anthropic tool use, prompt caching e estado persistente de agente de ponta a ponta.
O que ele faz
Um rep de vendas faz upload de uma gravação de chamada. Cerca de vinte segundos depois, o Sonar retorna:
- Pesquisa sobre a empresa do prospect (Tavily + Claude Haiku 4.5)
- Análise estruturada da chamada — tópicos, dores, objeções, itens de ação, sentimento (Claude Sonnet 4.6)
- Próximo passo recomendado com talking points e urgência (Claude Sonnet 4.6)
- Rascunho de follow-up com citações entre colchetes linkando de volta a trechos da transcrição (Claude Sonnet 4.6)
O revisor vê uma UI em tela dividida: e-mail à esquerda, transcrição à direita. Passar o mouse sobre uma citação destaca o trecho correspondente. O revisor pode aprovar, editar o corpo diretamente ou regerar o redator com feedback. A regeração reutiliza o estado anterior de pesquisa, análise e estratégia; só o redator executa novamente.
Por que eu construí
Não é um produto — é um projeto pessoal. Queria uma base de código que exercitasse o stack moderno de IA de ponta a ponta: orquestração multi-agente com estado persistente, processamento real de áudio, tool use estruturado, prompt caching e o formato B2B multi-tenant. Revisão de chamadas de vendas foi o domínio escolhido porque o fluxo é genuinamente linear com rollback, que é o ponto ideal para grafos de agentes.
Como funciona
Orquestração multi-agente
- Cinco nós sequenciais: transcrição, depois pesquisa, análise, estratégia e redação.
- Cada nó de agente retorna output estruturado via Anthropic tool use + um schema Zod. Sem outputs em texto livre.
- Cada etapa grava uma linha
AgentRunStep. A execução pausa emAWAITING_APPROVALapós o nó de redação. - Prompt caching da Anthropic habilitado nas system messages — redução de ~70% nos tokens de entrada em execuções repetidas.
- A regeração do redator reutiliza o estado dos nós anteriores.
- Execução em background via route handler
after()do Next.js 16 (maxDuration = 300).
Processamento de áudio
- O upload por drag-and-drop vai direto do browser para o Supabase Storage via URL assinada. O servidor não está no caminho do upload.
- Groq Whisper Large v3 transcreve com timestamps por segmento.
- Tipo MIME e limite de 100 MB aplicados tanto na server action quanto na política do bucket.
- O redator recebe os segmentos da transcrição marcados com índices entre colchetes; as citações referenciam esses índices.
- A UI em tela dividida rola até o segmento citado ao passar o mouse.
B2B multi-tenant
Workspaces, papéis (OWNER, ADMIN, MEMBER), convites, chaves de API, log de auditoria, cobrança via Stripe e rastreamento de entrega via Resend. Três camadas de isolamento — escopo por linha no Postgres, guards na camada de aplicação em cada server action e políticas de bucket no Supabase Storage com chave por ID de workspace.
Status
No ar em sonar.picoral.me. O pipeline de agentes, a tenancy de workspace e a entrega de follow-up estão funcionando de ponta a ponta; um walkthrough em Loom é o próximo passo.
Perguntas
O que é o Sonar?
Sonar é um workspace de IA multi-agente para times de vendas. Um rep faz upload de uma chamada gravada; cerca de vinte segundos depois, tem em mãos pesquisa sobre o prospect, análise estruturada da chamada, próximo passo recomendado e um rascunho de follow-up com citações linkando cada afirmação a um trecho específico da transcrição.
Como funciona a orquestração multi-agente do Sonar?
Uma execução com cinco nós — transcrição, seguida de quatro nós de agente Claude para pesquisa, análise, estratégia e redação — cada um retornando output estruturado via Anthropic tool use com schemas Zod. Cada etapa grava uma linha AgentRunStep no Postgres; a execução pausa em AWAITING_APPROVAL após o nó de redação para revisão humana. O redator pode ser regerado com feedback do revisor sem re-executar os nós anteriores.
Por que o Sonar usa prompt caching da Anthropic?
As system messages são cacheadas em todos os nós. Em execuções repetidas no mesmo workspace, isso reduz os tokens de entrada em cerca de 70%, o que se traduz em ganhos de latência e custo à medida que o corpus de contexto do workspace cresce.