Luxtor Cred — Painel v3
Sistema de qualificação por voz com Karol, gestão de leads para Erika e métricas de funil comercial. Documentação integrada ao painel — acesse sempre pelo botão 📖 Docs.
v3.1 — Conversas + busca — Jun 2026Visão geral
O que este painel faz
URL oficial
https://paineldisparador.luxtorcred.com.br — porta interna 3339 no servidor (proxy HTTPS).
Quando algo quebra
Comece pela seção Ops / Debug — scripts prontos na VPS para status, rastreio de ligação e diagnóstico por serviço.
ℹ️Este painel é o produto Luxtor Cred (Karol + Erika). O CRM da clínica (Sofia/Gabi) é outro painel: painel-clinica.luxtor.ia.br.
Login e acesso
1
Acesse /login.html ou a raiz do painel — redireciona se não estiver logado
2
Digite o PIN de 6 dígitos no campo único
3
Perfis: Admin (Marcelo — tudo) e Operador (Erika — Leads e Conversas)
🔑PINs são definidos pelo admin. Se não entrar, peça ao Marcelo para resetar em
/opt/luxtor-shared/auth-users.json na VPS.Fluxo de operação (produção)
1
Disparador — Preset Segunda (Karol + 1 linha) → checklist verde → Iniciar
2
Karol liga, qualifica na voz, detecta interesse
3
Lead aparece na aba Leads + alerta sonoro (+ Telegram quando configurado)
4
Consultor (Erika/equipe) — Leads → Atender → Ligar → Fechou / Perdeu
5
Conversas — revisar transcrições e melhorar script semanalmente
📵Karol não envia WhatsApp na ligação. Ela registra interesse e promete que um consultor da equipe entra em contato no Zap. WhatsApp Karol está pausado.
Dashboard e funil
Funil comercial v3
Discadas → Atendeu → Interesse → Fechou. Filtros: Hoje, 7 dias, Todos. Taxas de atendimento, interesse e conversão.
Saúde do sistema
Gateways Karol/Clara, voice-karol, dialer. Disparador só inicia após checklist verde.
Aba Leads
Cards: Total Hoje, Pendentes, Com Margem. Filtros: Pendentes, Hoje, Quentes, Todos.
Status: Novo → Em atendimento → Fechou / Perdeu
Ações: Ligar, Copiar, Atender. Ao marcar Perdeu, informe o motivo.
Exportar CSV no topo da aba.
Status: Novo → Em atendimento → Fechou / Perdeu
Ações: Ligar, Copiar, Atender. Ao marcar Perdeu, informe o motivo.
Exportar CSV no topo da aba.
Aba Conversas
Transcrições, busca e ajuste de script
Para que serve v3
Cada ligação da Karol fica salva com diálogo completo (cliente + Karol, turno a turno). Use para entender o fluxo, revisar objeções e melhorar o script sem precisar ligar de novo toda hora.
Onde aparecem os resultados
Depois de digitar no campo 🔍 Buscar e clicar Buscar, as conversas aparecem na tabela abaixo dos filtros (Hoje, Interesse, Todas…). O texto “Buscando…” é só um aviso — clique numa linha da tabela para abrir o diálogo do início ao fim.
🔍 Buscar conversa
Busca em todo o histórico por:
• Nome do cadastro (coluna Nome)
• Telefone (com ou sem DDD / +55)
• CPF (com ou sem pontos)
• CallSid Twilio (ex.: CA81dc5…)
• Trecho do diálogo — ex.: buscar “Marcelo” acha mesmo se o nome na tabela for “Teste”
• Nome do cadastro (coluna Nome)
• Telefone (com ou sem DDD / +55)
• CPF (com ou sem pontos)
• CallSid Twilio (ex.: CA81dc5…)
• Trecho do diálogo — ex.: buscar “Marcelo” acha mesmo se o nome na tabela for “Teste”
Filtros da tabela
📋 Todas — padrão; mostra todas as ligações salvas
📅 Hoje — só ligações do dia (testes de ontem não aparecem aqui)
🎯 Interesse · ❌ Rejeitou · ⏸ Ocupado — por resultado da ligação
Ao clicar num filtro, a busca é limpa. Use Limpar para voltar ao padrão.
📅 Hoje — só ligações do dia (testes de ontem não aparecem aqui)
🎯 Interesse · ❌ Rejeitou · ⏸ Ocupado — por resultado da ligação
Ao clicar num filtro, a busca é limpa. Use Limpar para voltar ao padrão.
Modal — ver conversa completa
Clique em qualquer linha da tabela. Abre chat estilo WhatsApp:
• Início e fim da ligação, telefone, CPF, duração, CallSid
• Cada fala com horário (Karol vs Cliente)
• Histórico do mesmo contato — links para outras ligações do mesmo tel/CPF
• 📋 Copiar transcrição — cola no bloco de notas para revisar o script offline
• Início e fim da ligação, telefone, CPF, duração, CallSid
• Cada fala com horário (Karol vs Cliente)
• Histórico do mesmo contato — links para outras ligações do mesmo tel/CPF
• 📋 Copiar transcrição — cola no bloco de notas para revisar o script offline
Fluxo recomendado — ajustar script Karol
1
Disparador → card 📞 Ligação teste (nome real + celular + CPF opcional)
2
Conversas → busque pelo telefone ou CPF
3
Clique na linha → leia do início ao fim → Copiar transcrição
4
Ajuste roteiro em
REGRA_VOZ.md / voice-karol5
Nova ligação teste → repita até o fluxo ficar redondo
💡Go-live amanhã: comece com 1 linha discando e 1 Karol. Cada ligação real também cai aqui — use a busca para auditar o script no fim do dia.
⚠️Ligação teste com nome vazio vira “Teste” no sistema — sempre preencha o nome no card ou no JSON do curl.
📁Arquivo bruto na VPS:
/opt/luxtor-painel/conversas_ligacao.jsonl (backup diário às 3h).Disparador
Discagem em massa + ligação teste
Operação normal
Base CSV, vendedora Karol (Clara opcional), linhas Twilio. Preset Segunda = Karol + 1 linha. Horário comercial 8h–18h (fim de semana bloqueado). Só inicia após checklist verde.
📞 Ligação teste v3
Card no topo da aba Disparador: preencha nome, celular e CPF (opcional) → dispara uma ligação só para você. Depois vá em Conversas e busque pelo número para ver a transcrição.
API (painel → dialer)
POST/api/dialer/testar
{ "numero": "5519984440516", "nome": "Marcelo", "cpf": "22409530559" }
{ "numero": "5519984440516", "nome": "Marcelo", "cpf": "22409530559" }
Não Perturbe (LGPD)
Bloqueie números que pediram para não ser ligados. Dialer e Karol respeitam a lista. Karol também bloqueia automaticamente se o cliente disser "não me ligue" / "tira da lista". Arquivo:
/opt/luxtor-painel/supressao.jsonNovidades Produto v3
Login PIN
Painel protegido — admin e operador.
Funil + métricas
Dashboard com números de negócio reais.
SLA 15 min
Lead novo sem ação → alerta Telegram (quando configurado).
Watchdog
Monitora serviços; avisa se algo cair.
Backup diário
3h — leads, conversas, configs (
/opt/scripts/luxtor-backup.sh).Conversas — busca e transcrição v3
Busca por nome, telefone, CPF, CallSid e trecho do diálogo. Modal com histórico do contato e botão copiar transcrição. Ver guia completo.
Ligação teste no painel
Disparador → card 📞 Ligação teste — sem curl na VPS.
APIs principais
POST/api/auth/login
GET/api/funil?periodo=hoje
GET/api/leads-interessados
GET/api/leads-interessados/export
GET/api/conversas?busca=marcelo&limit=200 — busca nome, tel, CPF, CallSid, texto no diálogo
GET/api/conversas/historico?telefone=&cpf= — todas as ligações do mesmo contato
GET/api/conversas/:id — uma conversa por id ou CallSid
POST/api/dialer/testar — ligação teste (proxy :4600/testar)
GET/POST/api/supressao
GET/api/health/disparo
GET/api/leads/pendentes (header x-painel-token — dialer)
Arquitetura
Como os serviços se conectam
Dialer :4600
↓ POST Twilio (discagem)
Twilio PSTN
↓ webhook voz
voice.luxtorcred.com.br → voice-karol :3338
↓ STT + LLM
karol-gateway :19021 (OpenClaw Karol)
↓ TTS ElevenLabs
Cliente ouve Karol
↓ interesse detectado
luxtor-painel :3339 (Leads + Conversas)
↓ handoff humano
Consultor no WhatsApp (Erika/equipe)
🤖Clara roda em paralelo (clara-gateway :19041 + voice-clara :3341) quando o disparador alterna vendedoras.
Voz Karol
Roteiro e regras atuais
Abertura
Apresenta oportunidade de crédito consignado — sem pedir WhatsApp no início.
Durante a ligação
Escuta e reage ao que o cliente disse. Usa cache semântico para respostas rápidas.
Fechamento com interesse
"Um consultor da nossa equipe entra em contato no WhatsApp o mais rápido possível" — depois encerra a ligação (evita voz Twilio/Polly no final).
Arquivos de voz
/opt/voice-karol/server.js — lógica da ponte Twilio/root/.openclaw-karol/workspace/karol/REGRA_VOZ.md — regras da Karol⚠️Teste manual com
nome vazio vira "Teste" no dialer — sempre passe o nome real no JSON de teste.Serviços PM2
| Serviço | Porta | URL pública | Função |
|---|---|---|---|
| luxtor-painel | 3339 | paineldisparador.luxtorcred.com.br | Este painel CRM |
| dialer-luxtor | 4600 | — | Discador Cred |
| voice-karol | 3338 | voice.luxtorcred.com.br | Ponte voz Twilio ↔ Karol |
| karol-gateway | 19021 | karol.luxtorcred.com.br | Gateway OpenClaw Karol |
| clara-gateway | 19041 | clara.luxtorcred.com.br | Gateway Clara |
| voice-clara | 3341 | voice-clara.luxtorcred.com.br | Voz Clara |
| bridge-queue | 3008 | — | Fila bridge |
pm2 resurrect
pm2 start /root/ecosystem.master.cjs
pm2 restart luxtor-painel voice-karol dialer-luxtor karol-gateway
pm2 save
pm2 start /root/ecosystem.master.cjs
pm2 restart luxtor-painel voice-karol dialer-luxtor karol-gateway
pm2 save
🔄Cron OpenClaw (seg 4:30) roda
openclaw update + script pós-update que reinicia gateways/voice e garante Clara no PM2.Ops / Debug
Por onde começar quando algo quebra
1. Visão geral (30 seg)
bash /root/system-status.sh
bash /root/flow-check.sh voz
bash /root/flow-check.sh voz
2. Rastrear uma ligação
bash /root/log-trace.sh 5519984440516
bash /root/log-trace.sh CAxxxxxxxx
bash /root/log-trace.sh CAxxxxxxxx
3. Diagnóstico por serviço
bash /root/quick-diagnose.sh voice-karol
bash /root/quick-diagnose.sh karol-gateway
bash /root/quick-diagnose.sh dialer-luxtor
pm2 logs voice-karol --lines 50 --nostream
bash /root/quick-diagnose.sh karol-gateway
bash /root/quick-diagnose.sh dialer-luxtor
pm2 logs voice-karol --lines 50 --nostream
4. Painel 502 / serviço sumiu do PM2
pm2 list
pm2 resurrect
pm2 start clara-gateway voice-clara
pm2 save
pm2 resurrect
pm2 start clara-gateway voice-clara
pm2 save
5. Health checks rápidos
curl -s http://localhost:3339/health
curl -s http://localhost:3338/health
curl -s http://localhost:4600/health
curl -s http://localhost:3338/health
curl -s http://localhost:4600/health
Teste ao vivo
Disparar ligação de teste na VPS
curl -s -X POST http://localhost:4600/testar \
-H "Content-Type: application/json" \
-d '{"numero":"5519984440516","nome":"Marcelo","cpf":"22409530559"}'
-H "Content-Type: application/json" \
-d '{"numero":"5519984440516","nome":"Marcelo","cpf":"22409530559"}'
Pelo painel (recomendado)
Aba Disparador → 📞 Ligação teste → depois aba Conversas → busque pelo telefone. Clique na linha para ver o diálogo completo.
Pelo terminal: confira também em
conversas_ligacao.jsonl. Use o CallSid com log-trace.sh se algo falhar.Arquivos importantes
| Arquivo | Uso |
|---|---|
/opt/luxtor-painel/leads_interessados.json | Leads quentes |
/opt/luxtor-painel/conversas_ligacao.jsonl | Transcrições das ligações |
/opt/luxtor-painel/supressao.json | Não Perturbe (LGPD) |
/opt/dialer-luxtor/dialer.js | Motor discador |
/opt/voice-karol/server.js | Roteiro e TTS voz Karol |
/opt/luxtor-shared/ | Módulos compartilhados (auth, handoff, watchdog) |
/root/ecosystem.master.cjs | Fonte PM2 master |
/opt/luxtor-painel/PRODUTO-CRED.md | Documentação markdown (VPS) |
Cred vs Clínica
Produtos isolados na mesma VPS
| Cred | Clínica | |
|---|---|---|
| Painel | :3339 paineldisparador | :3350 painel-clinica |
| Dialer | :4600 | :4601 |
| Voz | voice-karol :3338 | voice-sofia :3343 |
| IA | Karol + Clara | Sofia + Gabi |
| Docs | /docs.html (aqui) | painel-clinica /docs.html |
⚠️Compartilham VPS, PM2 e proxy — falha de infra pode afetar ambos. Cada produto tem dialer, voz e painel próprios.
Markdown na VPS
Mesmo conteúdo, formato texto
Cópias do guia operacional (útil via SSH ou para a IA):
No painel (logado): /produto.md
/opt/luxtor-painel/PRODUTO-CRED.md/root/.openclaw-karol/PRODUTO-CRED.md/root/.openclaw/luxtor/PRODUTO-CRED.mdNo painel (logado): /produto.md