O agente é editado, não programado
Saudação, prompt, voz, tempo de silêncio até o fim do turno e aviso de identificação — tudo em formulário, com versão a cada publicação para dar para voltar atrás.
O Alliah Audio escuta, entende e responde falando — no navegador ou numa ligação de verdade. A resposta começa a sair antes de o modelo terminar de pensar, e dá para interromper no meio da frase, como em qualquer conversa. Cada ligação fica gravada, transcrita e com a latência de cada etapa à vista.
O áudio sai do microfone em blocos de 20 ms e volta como voz pelo mesmo canal. O que faz a conversa parecer conversa não é a soma das etapas — é o que acontece entre elas.
O VAD separa voz de silêncio e decide quando você terminou de falar. O ponto de corte é ajustável, de 200 ms a 3 s.
Transcrição em streaming, em português. O texto chega parcial, palavra a palavra, sem esperar o fim da frase.
Prompt do agente, variáveis e histórico da ligação. A resposta vem em pedaços e é cortada em sentenças fechadas.
Cada sentença pronta é sintetizada em paralelo, sem esperar a próxima. A primeira já está tocando enquanto o resto é escrito.
O laço do modelo só enfileira sentenças; quem sintetiza é outra tarefa rodando ao lado.
É essa separação que decide se a agente começa a falar em 400 ms ou em 2 segundos.
Quando você fala por cima, a fila de áudio esvazia no próprio navegador — esperar a ida e volta ao servidor custaria uns 80 ms bem audíveis.
O navegador então informa quanto de fato tocou, e o histórico que vai ao modelo guarda só o que você chegou a ouvir.
Saudação, prompt, voz, tempo de silêncio até o fim do turno e aviso de identificação — tudo em formulário, com versão a cada publicação para dar para voltar atrás.
Gravação, transcrição turno a turno e a latência de cada etapa — quanto foi escuta, quanto foi modelo, quanto foi voz. É onde se descobre quem está devendo o atraso.
Documento sobe, é fatiado e indexado com busca vetorial no Postgres. Durante a ligação o trecho certo entra no contexto sem estourar o prompt.
A agente chama uma API sua durante a ligação. A credencial é cifrada em repouso e destino em rede interna vem bloqueado por padrão.
Personas conversam com o agente e um avaliador dá nota por critério do scorecard. Serve para comparar duas versões antes de qualquer telefone tocar.
Lista de contatos, cenários e concorrência controlada. Com bloqueio de contato e registro de consentimento de voz na base.
Volume, duração, latência e nota agregada. Duas versões do mesmo agente lado a lado, para a mudança no prompt ter um número atrás.
Integração com Twilio para discar e receber em número real, por WebSocket de mídia. Desligada nesta instalação: sem número, sem ligação.
É como esta instalação está agora: nenhum provedor pago ligado, custo zero. A voz e a transcrição saem do próprio navegador e o diálogo é roteirizado — serve para sentir o ritmo da conversa e a interrupção antes de pagar por provedor.
a síntese nativa do Chrome fala a resposta; a voz muda de máquina para máquina.
o reconhecimento nativo escuta você — e por isso só funciona no Chrome e no Edge.
conduz a ligação por etapas e lembra do que já foi dito, mas não é um modelo: o repertório é finito.
O que o modo grátis não faz: a gravação fica muda (o servidor só manda texto), não há interrupção por voz — quem tem a palavra termina, e há o botão interromper na tela — e não serve para telefonia, porque a voz nasce no navegador e não há navegador do outro lado da linha. Ligando Deepgram, Anthropic e ElevenLabs no ambiente, tudo isso passa a valer.
O painel pede usuário e senha na entrada. Chrome ou Edge, porque a transcrição do modo grátis é a nativa do navegador.
Vem um agente semeado — "Cobrança amigável". Autorize o microfone e fale; ela responde por voz.
Em Chamadas está a transcrição turno a turno com a latência de cada etapa da conversa que você acabou de ter.
A aplicação não tem login: quem alcança a API tem acesso de administrador, às gravações e ao discador. Enquanto o login não existe, a barreira é a senha no servidor — peça a quem publicou.
O conteúdo pode estar perfeito. Se a resposta demora dois segundos, ou se ela não para quando você fala por cima, a pessoa do outro lado desliga — e nenhuma qualidade de texto conserta isso.
Você termina a frase e nada acontece. Transcrever, pensar e sintetizar em série soma tudo: cada etapa espera a anterior terminar por inteiro. O usuário não sabe se foi ouvido e repete a pergunta — o que reinicia o ciclo.
Sem corte por voz, a agente termina o parágrafo dela enquanto você tenta interromper. Conversa humana é feita de atropelo; um sistema que não aceita isso soa como uma URA cara.
Foi cortada no meio da frase, mas o histórico guardou a frase inteira. Nas próximas respostas ela se refere a algo que só ela sabe que disse — e a conversa descarrila sem que dê para explicar por quê.
A ligação ficou lenta. Foi a transcrição, o modelo ou a voz? Sem medir cada etapa separadamente, otimizar vira palpite — e normalmente se otimiza a etapa errada.
Alguém reescreve a instrução, acha que melhorou e publica. Sem versão, sem avaliação por critério e sem número antes e depois, "melhorou" é opinião de quem escreveu.
Transcrição, modelo e síntese são cobrados por uso, cada um na sua unidade. Sem custo por chamada visível na hora, o piloto vira surpresa no fim do mês.
Tudo abaixo está implementado e coberto por teste. O que não está ligado nesta instalação tem seção própria, mais adiante.
O laço do modelo e a síntese de voz rodam ao mesmo tempo: um segmentador vai fechando sentenças conforme o texto chega e as empilha; uma segunda tarefa vai retirando da pilha e sintetizando. A primeira frase começa a tocar enquanto o resto ainda está sendo escrito.
Precisão importa aqui: as sentenças são sintetizadas uma de cada vez, em fila. O paralelismo é entre gerar e falar, não entre sentenças — e é esse paralelismo que separa começar a falar em quatrocentos milissegundos de começar em dois segundos.
Quando você fala por cima, a fila de áudio é esvaziada dentro da própria thread de áudio do navegador. Mandar o pedido ao servidor e esperar a volta custaria dezenas de milissegundos — audíveis, e exatamente no pior momento.
Em seguida o navegador informa quantas amostras de fato tocaram. O servidor corta o texto na proporção correspondente, recuando até a fronteira da palavra, e é esse pedaço que entra no histórico, marcado como interrompido. A agente passa a lembrar só do que você chegou a ouvir.
Cada turno grava cinco marcas — fim da sua fala, transcrição final, primeiro token do modelo, primeiro áudio da voz e fim da fala dela — e delas derivam quatro latências: escuta, modelo, voz e total.
Quando uma marca chega fora de ordem, o resultado é nulo, não um número negativo. "Não medido" é informação; um valor absurdo é ruído que contamina a média de todo mundo.
O documento sobe, é fatiado em trechos de cerca de mil e duzentos caracteres com sobreposição, vira vetor e é gravado no Postgres com índice de vizinhança aproximada. A busca por proximidade é filtrada por organização e por base dentro da própria consulta, e descarta trecho abaixo de um piso de similaridade.
A decisão incomum: a busca roda em toda rodada, antes do modelo, sem perguntar a ele se quer buscar. Deixar o modelo decidir custaria uma ida e volta inteira — centenas de milissegundos dentro de um orçamento de novecentos — contra dezenas de milissegundos de uma busca vetorial local.
Uma ferramenta é um endereço, um método, um esquema de parâmetros e um tempo limite. O modelo enxerga só nome, descrição e parâmetros — a credencial nunca entra no prompt e é guardada cifrada com AES-256-GCM, com uma impressão digital da chave gravada junto para uma rotação saber quais registros ainda estão na chave antiga.
Contra requisição forjada para dentro da rede, a proteção não é uma lista de nomes proibidos: o endereço é resolvido em DNS antes da decisão, e então o IP é conferido. Um domínio que aponta para o endereço local é barrado do mesmo jeito.
Depois da ligação, um modelo mais forte que o da conversa avalia o diálogo fora do caminho crítico. Ele diz se o objetivo foi atingido, justifica, e dá nota de zero a dez por critério do scorecard — cada nota acompanhada de uma citação literal da transcrição.
A citação é conferida contra a transcrição de verdade. Citação inventada é marcada como tal, não aceita. Nota fora da faixa é limitada, critério que o avaliador pulou vira zero com evidência vazia em vez de desaparecer da conta.
Uma persona tem perfil, humor, nível de conhecimento, objetivo, objeções e informações ocultas. Três regras são impostas: o dado oculto só aparece se a agente perguntar, as objeções saem uma por vez no meio da conversa, e a persona pode encerrar a ligação — porque gente desliga.
A simulação é só texto, sem áudio, e por isso não mede latência. A tela mostra um travessão no lugar do número em vez de inventar um valor que não foi medido.
Escuta, modelo, voz, vetorização e telefonia são cinco interfaces com uma fábrica única. Trocar de fornecedor é mudar uma variável de ambiente; faltar credencial produz um erro que nomeia a variável que está faltando, em vez de falhar fundo na pilha.
Cada família tem uma implementação falsa, e a suíte de testes força as três da conversa para o modo falso independentemente do que estiver configurado na máquina — nenhum teste gasta crédito nem liga para ninguém.
Nenhuma delas é arbitrária, e várias são estreitas de propósito. Onde o número for frágil, está escrito que é.
Abaixo de duzentos milissegundos a agente atropela quem respira; acima de três segundos a conversa trava. O limite está no validador, não só na documentação — não dá para configurar fora da faixa.
O microfone costuma entregar 48 kHz; a reamostragem acontece no navegador, antes de sair pela rede. Vinte milissegundos é o tamanho de bloco que a telefonia também usa.
É detecção por energia, escrita à mão, não um modelo neural. O evento aponta o início real da fala, não o instante em que ela foi confirmada — senão o começo de cada frase se perderia.
É o número de engenharia do projeto, o que aparece no medidor da chamada. Diferente da medição do modo grátis citada no topo desta página, que é outra coisa — veja logo abaixo.
A sobreposição termina em fronteira de sentença, não no meio da palavra. Reprocessar um documento apaga os trechos antigos na mesma transação, para não duplicar conhecimento.
Abaixo disso a diferença é ruído, e a tela diz isso em vez de mostrar uma seta verde. Comparar versões de agentes diferentes é recusado com erro explícito.
É uma medição real, e é honesto dizer exatamente o que ela mede: sete turnos seguidos, cronometrados à mão, no modo grátis, do instante em que o Chrome declara a transcrição final até a agente começar a falar. Mediana 419 ms, pior caso 422 ms, nenhum turno perdido.
O que ela não mede: o tempo que o próprio Chrome leva para decidir que você parou de falar, que fica entre 300 e 1500 ms e está fora do nosso alcance. E não é latência de produto — no modo grátis não há transcrição paga, nem modelo de linguagem, nem voz sintetizada por provedor. Não existe teste automatizado que reproduza esse número. O compromisso de engenharia é o orçamento de 900 ms acima.
O painel é organizado por objeto: a ligação, o agente, o que ele sabe, com quem ele treina, o que ele executa em lote e como ele vai.
| Seção | Tela | O que resolve |
|---|---|---|
| Chamadas | Lista | Todas as ligações com origem, direção, situação, duração e custo estimado. |
| Chamadas | Detalhe | Gravação, transcrição turno a turno e a latência de cada etapa daquele turno. |
| Agentes | Lista | Agentes da organização, situação e a versão publicada de cada um. |
| Agentes | Estúdio | Sete abas — identidade, prompt, voz, conhecimento, ferramentas, comportamento e guardrails — com versão a cada publicação. |
| Conhecimento | Bases | As bases de conhecimento e o estado de processamento de cada documento. |
| Conhecimento | Documento | Trechos gerados, origem e o que de fato ficou indexado. |
| Personas | Lista | Perfis de cliente simulado: humor, nível de conhecimento, objetivo, objeções e informação oculta. |
| Campanhas | Lista | Campanhas de simulação ou discagem, com situação e progresso. |
| Campanhas | Detalhe | Cenários, repetições, concorrência, janela de horário e o resultado de cada execução. |
| Métricas | Painel | Volume, taxa de sucesso, nota média, latência em percentis, custo e duração no período. |
| Métricas | Comparar | Duas versões do mesmo agente lado a lado, com aviso quando a amostra é pequena demais. |
É a instalação mais complexa deste conjunto de soluções — e a complexidade tem endereço: voz em tempo real não cabe num processo só.
App Router com React 19 e componentes escritos à mão. É a única peça que o navegador enxerga como página.
REST mais o WebSocket de mídia. O caminho da voz não passa pelo painel: reescrita de rota não faz troca de protocolo, então o áudio vai direto.
Ingestão de documento, execução de campanha e avaliação rodam fora da requisição, em filas sobre Redis, com concorrência controlada.
Vinte e duas tabelas, onze enumerações e busca vetorial no mesmo banco. Gravação de áudio em armazenamento de objetos compatível com S3.
As bibliotecas internas são consumidas como TypeScript, sem etapa de compilação entre elas: o domínio da conversa, os provedores, os codecs de áudio, a busca, as ferramentas, a conformidade e o cálculo de custo ficam num pacote só, usado igualmente pela API e pelos processos de fundo.
É o que garante que a simulação e a ligação de verdade percorram o mesmo motor de conversa, e não duas implementações que divergem com o tempo.
O valor é computado ao encerrar e gravado na chamada, nunca recalculado na leitura — assim uma mudança de tabela de preço não reescreve o passado.
Duas escolhas honestas no agregado: ligação feita com provedor falso tem custo nulo, não zero, e fica de fora da média; e a tela informa quantas ligações ficaram sem custo, para você saber que fatia do período a média realmente cobre.
A tabela de preços tem data de consulta escrita ao lado e um aviso no próprio código: quem fecha a conta é o painel do provedor, não esta tabela.
A integração com Twilio está escrita e testada nas duas direções: discar, receber num número que roteia para o agente correspondente, transferir para um humano e desligar. O áudio trafega por WebSocket de mídia, com conversão entre o formato da telefonia e o do motor, em quadros de vinte milissegundos ritmados pelo próprio servidor.
Detalhe de segurança que não costuma existir em integração de demonstração: todo webhook confere a assinatura antes de qualquer efeito colateral, com comparação em tempo constante. Sem o segredo configurado, a chamada é recusada — não liberada por conveniência.
Nesta instalação a telefonia está desligada: sem provedor configurado, a rota de discagem responde que o recurso está indisponível. Veja a seção de limites.
O agente que vem semeado. Volume alto, roteiro estável, resultado mensurável e uma conversa que precisa soar humana para não virar bloqueio de número.
agente de exemplo · já configuradoEntender o motivo do contato, buscar no material da empresa e transferir com contexto — em vez de perguntar tudo de novo quando a pessoa chega no atendente.
usa · conhecimento e transferênciaLigações curtas e repetitivas onde a agente precisa consultar um sistema no meio da conversa. É o caso que justifica ferramentas com credencial cifrada.
usa · ferramentasPersonas, scorecard, avaliação com citação conferida e comparação entre versões com amostra mínima. Serve para transformar "achei que melhorou" em número.
usa · simulação e métricasO valor aqui é o motor: segmentação, corte no cliente, truncamento honesto do histórico e medição por etapa. São as partes que costumam faltar em protótipo de voz.
referência · motor de cascataO modo grátis existe para isso: conversar de verdade, sentir a interrupção e o tempo de resposta, sem contratar provedor nenhum. Abra no Chrome e fale.
custo zero · nenhuma chaveGuardada em armazenamento de objetos, com prazo de retenção configurado por organização.
Quem falou, o que falou, e o trecho de conhecimento ou a ferramenta que entrou naquele turno.
Escuta, modelo e voz separados, mais o total até o primeiro áudio. É onde se descobre quem está devendo o atraso.
Objetivo atingido ou não, nota por critério do scorecard e a citação da transcrição que sustenta cada nota.
A lista do que a agente disse e não se sustenta no material que ela recebeu, classificada por gravidade.
Cada publicação vira uma versão com prompt, voz, guardrails e limites congelados — dá para voltar atrás.
Volume, taxa de sucesso, nota média, latência em percentis, custo médio, duração média e taxa de transferência.
Lado a lado, com aviso explícito quando a amostra ainda é pequena demais para a diferença significar algo.
Calculado no encerramento e congelado ali, para mudança de preço não reescrever o histórico.
Interrupção, busca realizada, ferramenta chamada, pedido de descadastro — doze tipos de evento com hora.
Esta é a seção mais importante desta página. Leia inteira antes de gravar a voz de qualquer pessoa.
AES-256-GCM em repouso, com impressão digital da chave gravada junto para permitir rotação. A credencial nunca aparece na leitura da API nem no prompt.
O endereço é resolvido em DNS antes da decisão, e a faixa de metadados de nuvem está entre as bloqueadas. A liberação existe, e vem desligada.
Conferida em tempo constante antes de qualquer efeito. Sem o segredo configurado a chamada é recusada, não liberada.
O campo não tem valor padrão: campanha sem base legal declarada é recusada, e existe teste de ponta a ponta que garante isso.
Na criação da chamada e de novo no momento de discar. Número bloqueado recebe recusa explícita nas duas portas.
Não no fuso do servidor. Fora da janela, a discagem é adiada em vez de acontecer na hora errada.
O painel não pede credencial: quem alcança a API tem acesso de administrador, às gravações e ao discador. A barreira é uma senha no servidor web à frente — e nada mais.
Todo acesso a gravação continua sendo registrado, mas sempre sob o mesmo usuário — sem login, não há como distinguir quem ouviu.
A transcrição é a nativa do navegador, e o Chrome envia o áudio aos servidores dele. Para conversa com cliente de verdade, isso não serve — use provedor pago.
O prazo de guarda e a data de expurgo de cada gravação estão modelados no banco, mas o apagamento automático ainda não roda.
Distinção que vale para tudo aqui: implementado quer dizer que o código existe e tem teste; ligado quer dizer que está funcionando nesta instalação. Nem tudo que está implementado está ligado.
Transcrição, modelo, voz, vetorização e telefonia estão todos sem credencial. O que está no ar é o modo grátis, de ponta a ponta. Tudo que esta página descreve sobre Deepgram, Anthropic, ElevenLabs, Cartesia e Twilio descreve código implementado e testado, não configuração ativa.
Foi removido a pedido. Não existe tela de entrada, e as rotas de autenticação respondem que não existem — há teste que garante isso. A proteção é a senha no servidor web. Enquanto for assim, não trate esta instalação como ambiente de produção.
O corte por energia do microfone fica desligado nos dois lados, porque a voz nasce no navegador e o sistema não tem como distinguir com precisão a sua fala do eco dela. Só o botão de interromper na tela corta. Com provedor pago, o corte por voz passa a valer.
O servidor emite silêncio com a duração que a fala teria, porque quem realmente fala é o navegador. A transcrição fica completa; o áudio da agente, não.
A transcrição depende de uma API que só existe nesses navegadores. E o ajuste de silêncio até o fim do turno não tem efeito nenhum ali — quem decide é o navegador.
É um roteiro. Ele conduz por etapas e lembra do que já foi dito, mas não entende, não raciocina e não segue o prompt que você escreveu no estúdio. O repertório é finito e escrito à mão.
Sem provedor configurado, a rota de discagem responde que o recurso está indisponível. Além disso, o modo grátis não serve para telefone — a voz nasce no navegador e não há navegador do outro lado da linha. Isso está documentado, mas não é impedido em tempo de execução.
As frases de descadastro são reconhecidas e viram evento na chamada, e a lista de bloqueio barra criação e discagem. O que falta é o elo: ninguém ainda alimenta a lista a partir da fala.
A tabela existe e o vínculo com a configuração de voz também. A checagem antes de publicar uma voz clonada ainda não acontece em tempo de execução.
A alternativa de voz para voz direta — modelo que ouve e fala sem passar por texto — está prevista no modelo de dados e na interface, mas não implementada. O que existe é escuta, modelo e voz encadeados.
O corte é proporcional ao áudio reproduzido, recuado até a fronteira da palavra. Fazer melhor exigiria alinhamento fonema a fonema, que nenhum sintetizador em streaming devolve. Em telefonia é ainda mais grosseiro: sem navegador, o motor assume que tudo que saiu foi ouvido.
A medição foi feita à mão, em sete turnos, numa máquina. É honesta e está documentada, mas não é reproduzível por comando. O compromisso verificável é o orçamento de 900 ms escrito no código.
Abrir no Chrome, falar com a agente e ouvir a resposta por voz; interromper pelo botão; ver a ligação registrada com transcrição turno a turno e a latência de cada etapa. Também dá para percorrer o estúdio, o conhecimento, as personas, as campanhas e as métricas.
O que você não vai ouvir é um modelo de linguagem: no modo grátis o diálogo é roteirizado. Para o agente que você escreveu no estúdio responder de verdade, é preciso ligar os provedores.
Porque você está no modo grátis. Ali a voz nasce no próprio navegador e o microfone escuta a agente falando — sem uma referência confiável de eco, o corte por energia se dispararia sozinho a cada frase. Então ele fica desligado, e o corte é pelo botão.
Com provedor de voz pago, o corte por voz passa a valer: exige energia acima de um limiar e acima do eco medido, sustentada por meio segundo, com uma janela de carência logo depois que ela começa a falar.
Porque não espera o modelo terminar. Um segmentador fecha a primeira sentença assim que ela existe e a manda para a síntese, enquanto o modelo continua escrevendo o resto. Quando a segunda sentença fica pronta, a primeira já está tocando.
A sutileza é que as sentenças são sintetizadas em fila, uma por vez. O ganho vem de sobrepor geração e fala, não de sintetizar tudo ao mesmo tempo.
Não. O navegador informa quantas amostras de áudio realmente tocaram; o servidor corta o texto na proporção correspondente, recuando até o fim da palavra, e guarda no histórico só esse pedaço, marcado como interrompido.
É aproximação, e o código diz isso: precisão real exigiria alinhamento fonema a fonema, que sintetizador em streaming não devolve.
Sim, e em toda rodada — sem perguntar ao modelo se vale a pena buscar. Perguntar custaria uma ida e volta inteira ao modelo, centenas de milissegundos dentro de um orçamento de novecentos; a busca vetorial local custa dezenas.
Se a busca falhar, o turno não morre: fica registrada a falha e a agente responde com o que tem.
Há um detector que confere cada afirmação contra o contexto que a agente recebeu — os trechos buscados e os resultados de ferramenta — e não contra o mundo. Ele classifica por gravidade.
E ele desconfia de si mesmo: afirmação sinalizada que não está literalmente na fala da agente é descartada, porque nesse caso quem inventou foi o detector.
É para isso que existem as personas, o scorecard e a comparação. Você roda uma campanha de simulação contra as duas versões e compara taxa de sucesso, nota média, latência e custo lado a lado.
Com menos de dez ligações avaliadas de cada lado, a tela avisa que a amostra é pequena em vez de mostrar uma diferença que é ruído. E comparar versões de agentes diferentes é recusado.
Pode. Você declara o endereço, o método, os parâmetros e o tempo limite; a credencial fica cifrada e o modelo nunca a vê — ele enxerga só nome, descrição e parâmetros.
Destino em rede interna vem bloqueado por padrão, e o bloqueio é feito depois de resolver o nome em DNS, então um domínio apontando para dentro não passa. Erro de chamada volta como resultado para o modelo, para ele dizer que falhou em vez de inventar o dado.
O código está pronto e testado nas duas direções, com validação de assinatura em todo webhook. Mas nesta instalação a telefonia está desligada: não há provedor configurado, e a rota de discagem responde que o recurso está indisponível.
E o modo grátis não serve para telefone de jeito nenhum: a voz nasce no navegador, e não há navegador do outro lado da linha.
Depende dos provedores que você ligar e da duração. O produto calcula uma estimativa no encerramento de cada chamada e a congela ali, e as telas de métrica mostram o custo médio do período.
Duas ressalvas que estão no próprio código: a tabela de preços tem data de consulta e quem fecha a conta é o painel do provedor; e ligação feita com provedor falso tem custo nulo, não zero — ela fica fora da média, e a tela informa quantas foram.
O motor de conversa, sim, no sentido de estar implementado e coberto por quase seiscentos casos de teste. A instalação, não: sem login, com provedores desligados e com uma parte das obrigações de privacidade ainda modelada em vez de aplicada.
Preferimos escrever isso do que deixar você descobrir depois. A seção de limites é a versão longa da resposta.
Os termos que aparecem no painel, no sentido em que o painel os usa.
Abra no Chrome, autorize o microfone e converse. Depois volte na chamada e veja a transcrição turno a turno com a latência de cada etapa — do que você acabou de dizer.