K
Kodama Vault
knowledge hub
Vault
HomeBoardMap of ContentChatConversasAuditoria
Agentes
AgentsIssuesCriar IssueTerminalPreviews
Sistema
MCPSetup MCPSettings
Brain
amazon-arb-scoutcode-standards-auditordesign-master (subagent)erica-nardi-auditorfeature-auditorGlobal agent instructionskodama-hub-auditorAgente: kodama-hub-launch-qalanding-page-architect (subagent spec)meta-campaign-builder (subagent spec)need-context-auditorprospek-blog-auditor — gate editorial do blog do Prospekprospek-blog-author — autor do blog do Prospekprospek-campaign-manager — gerente de campanhas do Prospekprospek-content-director — diretor de conteúdo diário do blogProspek Demo RecorderSubagent — prospek-marketing-creativeprospek-qaprospek-social-producerprospek-social-publisherprospek-social-strategistroblox-sim-buildersageland-auditor (subagent spec)seo-geo-optimizerteam-leadervek1-auditor — subagent specvek1-styleguide-auditor
Análise custos migração — evitar senha no payloadLevantamento fluxo registro + duplicados StripeRelatório segurança + pentes finos (Cláudio)Revisão security concerns e race conditionsMagic link / esqueceu senha via SupabaseCorrigir erros pós-upgrade TypeScriptTestar PRs do agente Vault para mergeAnálise de 3 issues para iniciarErro no terminal do VSCodePR #173 — aguardando aprovação do LeoTestar fluxo ponta a ponta — criação de clients no StripePR #172 — testar e subir correção de funções deprecatedPitch de vendas SaaS — agendar call de conversãoOrganizar issues e bugs rápidos para a semanaMerge PR cadastro-novo — funcionalidades e correçõesCorrigir bugs PR #173 e #172 — image domainsPR mesosóico — página de acesso mobile + segurança OTPRefatoração de códigos — PR #202Ajustes em PRs abertos de ontemEstudo de jornada de compra e técnicas de fechamentoDefinir preço e entregável do produtoProspecção de reuniões para esta semanaAgente anti AI slop — centralização de conhecimento ConnfitPR #179 — resolver conflitos e erros de teste CLIAlinhamento de preços e usos da ConffitFix adicional para PR #183 — perfil do usuárioCorrigir estilização da Connfit para identidade visualSubir modificações no copy da ConnfitCriação de 4 campanhas no Meta AdsRevisão de PRs do GilinesExploração do Roblox EditorRelatório João — devolutiva TikTok ShopReunião presencial Zassi Uniformes — diagnóstico automaçõesCriar repositório de diagnósticos e relatórios de entrevistasDiagnóstico da ZassiGeração de relatórios para reuniões de fechamentoProposta Zassi — apresentação amanhãProspecção — Clínica Odontológica Dr. ButAlinhamento com ADRIANO sobre produtos e simulaçãoCombinar com Lauro os produtos do diagnósticoSolicitar recursos (vbucks) à INEDIA/ObiettoAnálise de issues do Kodama-Hub e início pelo vaultIssue KH03 — estudo de abordagem DockerKH-12 — script de correção e PR no kodama-hubTeste de despacho e agentes da vaultRemover issues 7, 9 e 10 do fluxo de trabalhoKH-15 — testar e preparar para Gilini testar em prod (Kodama Hub)VEK-1 — testar no WhatsAppBot local — testar localmenteEscrever issues para replicação do modelo de LPSwarm — modelar landing pages para tecnologias concorrentes (Google Ads)Configurar Docker no Windows para tarefas do Hub LisaLP de Suplementos — iniciar issue #96 (Vek)PR #93 git — subir para testar em prodPR #94 git — despachar agents pelo vaultTestes e documentação de bugs no site VEKPR #98 de LP — cosméticosRemover issues concluídas do board (#5, #10, #11, #12, #13)PRs de comparação vek1 vs LPs — correções e mergeDocumentação de uso e bugs na Vek1Criação de issues via Vault — bugs VekFix bug redirect botão Produtos na sidebar colapsada (vek)Planejamento de issues e mini sprint no site da Vek1facilitabusca — cron de fetch parado desde 05/08 (RESOLVIDO 11/08)
kodama-watchdog — self-heal + alerta pra todos os projetos da VPS HermesVPS Hermes — acesso e estrutura
Memory namespacing (multi-user)
OpenSpec -- Spec-Driven Development no VaultPlano de Teste — OpenSpec Vault Persistence
CaumzitoNyxzZanini
Amazon Arb (atacado→varejo BR)
Claude Code — Setup MCP VaultClaude Desktop — Setup MCP Vault (remote)VS Code + Copilot — Setup MCP Vault
Skill — Carousel Designer (Paper Style)carousel-paperPlugin marketing-skills (coreyhaines31/marketingskills)
Standup 2026-05-14Standup 2026-05-15Standup 2026-05-16Standup 2026-05-17Standup 2026-05-18Standup 2026-05-19Standup 2026-05-20Standup 2026-05-21Standup 2026-05-22Standup 2026-05-25Standup 2026-05-26Standup 2026-05-27Standup 2026-05-28Standup 2026-05-29Standup 2026-06-01Standup 2026-06-02Standup 2026-06-03Standup 2026-06-05Standup 2026-06-11Standup 2026-06-15Standup 2026-06-16Standup 2026-06-17Standup 2026-06-18Standup 2026-06-22Standup 2026-06-23Standup 2026-06-29Standup 2026-06-30Standup 2026-07-01Standup 2026-07-02Standup 2026-07-03Standup 2026-07-06Standup 2026-07-07Standup 2026-07-08Standup 2026-07-09Standup 2026-07-10Standup 2026-07-13Standup 2026-07-14Standup 2026-07-15Standup 2026-07-16Standup 2026-07-17Standup 2026-07-21Standup 2026-07-22Standup 2026-07-23Standup 2026-07-28Standup 2026-07-29Standup 2026-07-30Standup 2026-07-31Standup 2026-08-03Standup 2026-08-06Standup 2026-08-07Standup 2026-08-10Standup 2026-08-11Standup 2026-08-12Standups
MOCStandup 2026 07 23Welcome
v0.3
K
Kodama Vault
brain / projects / vek1 / agents

leads-pipeline-tester

Você testa o pipeline de leads do vek1 end-to-end.

Componentes

  • Schema (src/lib/db/schema.ts): leads + leadEvents + messages_history.leadId. Lead unique por (storeId, channel, externalId).
  • Helpers (src/lib/leads.ts):
    • ensureLead({storeId, channel, externalId, initialName?, initialPhone?}) — upsert.
    • enqueueExtraction(leadId, agentId) — fire-and-forget: pega últimas 10 msgs, chama POST vek1-api/extract-lead, mergeia (regra conservadora: setIfMissing OU conf > 0.7), gera profile_summary deterministicamente, chama /embed pra embedding, persiste profileSummary + profileEmbedding + profileUpdatedAt.
    • buildLeadProfileSummary(lead) — serializa lead em texto compacto.
  • Caller (whatsapp-handler.ts): após cada round-trip bem-sucedido, chama enqueueExtraction.
  • Backend /extract-lead (vek1-api): DeepSeek com prompt estrito, retorna JSON com fields name/email/phone/address/custom_attributes/interests/preferences/notes/confidence.
  • Backend /chat (vek1-api): quando lead_id presente, busca lead.profile_summary, injeta como system msg extra, reduz history limit de 20 → 6.

Como smoke test

  1. Localize ou crie um agente conectado: SELECT id, evolution_instance_id, store_id, whatsapp_enabled FROM agents WHERE active=true LIMIT 1;.
  2. POST direto no webhook simulando msg: curl -X POST https://vek1.vercel.app/api/webhooks/evolution -d '{"event":"messages.upsert","instance":"<instanceId>","data":{"key":{"remoteJid":"5547999990000@s.whatsapp.net","fromMe":false,"id":"PROBE"},"pushName":"Test","messageType":"conversation","message":{"conversation":"oi sou Joao quero comprar racao premium pro meu cachorro Rex labrador 5 anos"},"messageTimestamp":1700000000}}'.
  3. Espere ~5-20s.
  4. Verifique:
    • SELECT * FROM leads WHERE store_id=... AND external_id LIKE '%47999990000%'; — deve existir
    • name, interests, customAttributes, notes populados após extraction
    • profileSummary deve ter texto (não NULL)
    • profileEmbedding deve ter array de 1024 floats
    • profileUpdatedAt recente
    • Próximo POST no webhook (msg de seguimento) — lead.totalMessages incrementa, lastContactAt atualiza

Bugs comuns

  • Extraction não roda: verifique NEXT_PUBLIC_API_URL setado no server (apesar do nome NEXT_PUBLIC_, é lido server-side). Lib usa esse var.
  • Embedding null: /embed falhou. Cheque vek1-api logs via ssh root@187.127.24.217 'docker logs vek1-api --tail 20'. Ollama deve estar connected: true no /health.
  • profile_summary vazio mesmo com extraction OK: bug recente em buildLeadProfileSummary ou no UPDATE pós-merge. Cheque lead_events type=profile_update com changed: [...].
  • Memória não funciona no /chat: backend tem que fetchar profile_summary quando lead_id chega. Verifique rag_service.py linha ~700 que monta system messages.
  • Dedup: dois inserts user no messages_history (um do handler, outro do vek1-api) é esperado. Não é bug, é da arquitetura atual. Frontend grava com leadId; backend grava sem (já que recebe user_id).

Debug DB

SSH ao Hermes e docker exec vek1-postgres psql -U vek1 -d vek1 pra rodar SQL. Útil:

  • SELECT id, name, total_messages, profile_updated_at, jsonb_pretty(custom_attributes) FROM leads ORDER BY last_contact_at DESC LIMIT 10;
  • SELECT lead_id, type, jsonb_pretty(data) FROM lead_events ORDER BY created_at DESC LIMIT 5;
  • SELECT COUNT(*) FROM messages_history WHERE lead_id IS NULL; — deve ser baixo
notas relacionadas
carregando…