Sonar

En vivo

Proyecto personal para explorar orquestación multi-agente. El caso de uso es revisión de llamadas de ventas; el objetivo real fue aprender Anthropic tool use, prompt caching y estado persistente de agentes de punta a punta.

Rol
Solo — diseño, ingeniería, despliegue
Período
sept 2025 – Actual
Stack
  • Next.js 16
  • TypeScript
  • Claude Sonnet 4.6
  • Claude Haiku 4.5
  • Groq Whisper Large v3
  • Tavily
  • Supabase Storage
  • PostgreSQL + pgvector
  • Prisma
  • Stripe
  • Resend
  • Tailwind v4
  • shadcn/ui

Qué hace

Un representante de ventas sube una grabación de llamada. Unos veinte segundos después, Sonar devuelve:

  1. Investigación sobre la empresa del prospecto (Tavily + Claude Haiku 4.5)
  2. Análisis estructurado de la llamada — temas, puntos de dolor, objeciones, tareas pendientes, sentimiento (Claude Sonnet 4.6)
  3. Un próximo paso recomendado con puntos de conversación y urgencia (Claude Sonnet 4.6)
  4. Un borrador de correo de seguimiento con citas entre corchetes que vinculan a segmentos de la transcripción (Claude Sonnet 4.6)
Dashboard del workspace de Sonar mostrando conteos de leads, llamadas y ejecuciones de agentes junto con ejecuciones recientes y leads recientes.
El dashboard del workspace: leads, llamadas y ejecuciones de agentes de un vistazo.

El revisor ve una UI de vista dividida: el correo a la izquierda, la transcripción a la derecha. Al pasar el cursor sobre una cita se resalta el segmento correspondiente. El revisor puede aprobar, editar el cuerpo directamente o regenerar el redactor con feedback. La regeneración reutiliza el estado previo de investigación, análisis y estrategia; solo vuelve a ejecutarse el redactor.

Pantalla de aprobación de correo en Sonar: un borrador de seguimiento a la izquierda con chips de citas numerados, y la transcripción de la llamada a la derecha con los segmentos citados marcados.
Aprobar y enviar: cada afirmación del borrador enlaza al segmento de la transcripción del que proviene.

Por qué lo construí

No es un producto — es un proyecto personal. Quería un único codebase que ejercitara el stack moderno de IA de punta a punta: orquestación multi-agente con estado persistente, manejo real de audio, tool use estructurado, prompt caching y la forma B2B multi-tenant. La revisión de llamadas de ventas fue el dominio porque el flujo de trabajo es genuinamente lineal con rollback, que es el punto ideal para grafos de agentes.

Cómo funciona

Orquestación multi-agente

  • Cinco nodos secuenciales: transcripción, luego investigación, análisis, estrategia y redacción.
  • Cada nodo de agente devuelve output estructurado mediante Anthropic tool use + un esquema Zod. Sin outputs de texto libre.
  • Cada paso escribe una fila AgentRunStep. La ejecución se pausa en AWAITING_APPROVAL tras el paso de redacción.
  • Anthropic prompt caching está habilitado en los mensajes de sistema — ~70% de reducción de tokens de entrada en ejecuciones repetidas.
  • La regeneración del redactor reutiliza el estado de los nodos anteriores.
  • Ejecución en background mediante el route handler after() de Next.js 16 (maxDuration = 300).
Visor de ejecución de agentes de Sonar mostrando los cinco nodos del pipeline — transcripción, investigación, análisis, estrategia, redacción — con el estado por nodo mientras la ejecución está en curso.
El visor de ejecución: cada nodo reporta su estado en vivo; la ejecución se pausa para aprobación tras el redactor.

Procesamiento de audio

  • La carga por drag-and-drop va del navegador a Supabase Storage mediante URL firmada. El servidor no está en la ruta de carga.
  • Groq Whisper Large v3 transcribe con timestamps a nivel de segmento.
  • El tipo MIME y el límite de 100 MB se aplican tanto en el server action como en la política del bucket.
  • El redactor recibe los segmentos de la transcripción etiquetados con índices entre corchetes; las citas referencian esos índices.
  • La UI de vista dividida desplaza el segmento citado a la vista al pasar el cursor.

B2B multi-tenant

Workspaces, roles (OWNER, ADMIN, MEMBER), invitaciones, API keys, log de auditoría, facturación con Stripe y seguimiento de entregas mediante Resend. Tres capas de aislamiento — scoping por fila en Postgres, guards a nivel de aplicación en cada server action y políticas de bucket en Supabase Storage con clave por workspace ID.

Estado

En vivo en sonar.picoral.me. El pipeline de agentes, la tenencia por workspace y la entrega de seguimientos funcionan de punta a punta; un walkthrough en Loom es lo siguiente.

Preguntas

¿Qué es Sonar?

Sonar es un workspace de IA multi-agente para equipos de ventas. Un representante sube una llamada grabada; unos veinte segundos después tiene investigación del prospecto, un análisis estructurado de la llamada, un próximo paso recomendado y un borrador de correo de seguimiento con citas que vinculan cada afirmación a un segmento específico de la transcripción.

¿Cómo funciona la orquestación multi-agente de Sonar?

Una ejecución de cinco nodos — transcripción, seguida de cuatro nodos de agentes Claude para investigación, análisis, estrategia y redacción — cada uno devuelve output estructurado mediante Anthropic tool use con esquemas Zod. Cada paso escribe una fila AgentRunStep en Postgres; la ejecución se pausa en AWAITING_APPROVAL tras el paso de redacción para revisión humana. El redactor puede regenerarse con feedback del revisor sin volver a ejecutar los nodos anteriores.

¿Por qué Sonar usa Anthropic prompt caching?

Los mensajes de sistema se cachean en cada nodo. En ejecuciones repetidas sobre el mismo workspace, esto reduce los tokens de entrada aproximadamente un 70%, lo que se traduce en mejoras de latencia y costo a medida que crece el corpus de contexto del workspace.