Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Painel para o atendente acompanhar o funil anúncio no Instagram → contato no WhatsApp → oportunidade → aluno, com quem não contrata ficando na base como lead frio. Roda inteiro na Cloudflare (Workers + D1), dentro do plano gratuito, atendendo à restrição de infraestrutura serverless de baixo custo (RES02).
| História | O que entrega | Onde está |
|---|---|---|
| US-00 · origem da campanha | Cadastro de campanhas com código (ex.: IG-OUT26) e link do WhatsApp pronto para o anúncio | POST /api/campaigns, aba Campanhas |
| US-01 · lead sem duplicar | Todo contato vira lead; o telefone é único. Quem volta a escrever ganha um registro de "retorno" no mesmo lead, e o lead frio volta para a fila | POST /api/leads, webhook do WhatsApp |
| US-03 · dados para descobrir o lead quente | O atendente registra idioma, objetivo, urgência, nível, empresa e disponibilidade, além da hora da primeira resposta. A temperatura é só um palpite opcional, para comparar depois com quem fechou. A fila mostra primeiro quem ainda espera resposta | PATCH /api/leads/:id, POST /api/leads/:id/replied, ficha do lead |
| US-02 · oportunidade e falta | Agendar a aula experimental transforma o lead em oportunidade. Reagendar substitui a aula anterior. Se a aula passa sem presença, o Cron marca "faltou" e cria a tarefa de retomar o contato em até 12h | POST /api/leads/:id/trials, scheduled(), aba Tarefas |
| US-04 · vira aluno | Cria a conta de aluno com idioma e pacote, e fecha as tarefas abertas | POST /api/leads/:id/convert |
| US-05 · resultado por campanha | Leads, oportunidades, alunos, conversão e base fria por campanha | GET /api/report/campaigns, aba Campanhas |
| Análise do grupo | Planilha (CSV) com uma linha por lead: origem, triagem, tempo até a primeira resposta, faltas, tentativas, desfecho e motivo de não fechar. Nome e telefone ficam de fora (LGPD) | GET /api/export/leads.csv, botão na Fila |
Regra confirmada: depois de 3 tentativas de contato sem resposta, a oportunidade vira lead frio (motivo "sem resposta"). O número fica em MAX_TENTATIVAS no wrangler.jsonc.
Por que não há critério de lead quente: descobrir esse critério é o objetivo do trabalho. O MVP coleta os dados e o desfecho de cada lead, e a análise da planilha vai definir a regra numa versão seguinte.
Crédito da campanha: o lead fica com a primeira campanha que o trouxe. Se ele voltar por outra campanha, o retorno fica registrado no histórico com o código novo.
https://wa.me/<número>?text=Olá! Quero saber das aulas #IG-OUT26. O atendente cola o telefone e a primeira mensagem no painel, e o sistema lê o código da campanha.https://<seu-worker>/webhook/whatsapp, todo contato vira lead sozinho. Em anúncios Click-to-WhatsApp, a Meta envia o id do anúncio, e o sistema liga o lead à campanha que tem esse "ID do anúncio na Meta".conexion-crm. Copie o Database ID e coloque em database_id no wrangler.jsonc.conexionamerica/CRM. Em Deploy command, use npm run deploy. Esse comando cria as tabelas no D1 e publica o Worker. A cada push na main, a Cloudflare publica de novo sozinha.https://conexion-crm.<sua-conta>.workers.dev que a Cloudflare mostrar no fim do deploy.Antes de usar com leads reais, troque WHATSAPP_NUMERO no wrangler.jsonc pelo número da escola.
Se preferir publicar pelo terminal (Node 20 ou mais novo):
npm install
npx wrangler login
npx wrangler d1 create conexion-crm # copie o database_id para o wrangler.jsonc
npm run deploy # cria as tabelas e publica
Proteja o painel antes de usar com dados reais. No painel da Cloudflare, em Zero Trust → Access → Applications, crie uma aplicação para o domínio do Worker liberando só os e-mails da equipe (gratuito até 50 pessoas). Deixe o caminho /webhook/whatsapp fora da regra, porque quem chama é a Meta.
Para o webhook da Cloud API, configure os segredos:
npx wrangler secret put WHATSAPP_VERIFY_TOKEN # o mesmo texto que você digitar na Meta
npx wrangler secret put WHATSAPP_APP_SECRET # "App secret" do app na Meta, valida a assinatura
npm install
npm run db:local
npm run dev # abre em http://localhost:8787
npm run smoke # em outro terminal: percorre o funil inteiro e confere cada história
POST /api/cron/run dispara na hora a mesma rotina do Cron, útil para testar a falta.
migrations/0001_inicial.sql tabelas: campaigns, leads, contacts, trial_classes, tasks, students
migrations/0002_dados_para_analise.sql urgência, nível, empresa, disponibilidade, primeira resposta, motivo de perda
src/index.js API, webhook do WhatsApp e rotina do Cron
public/ painel do atendente (HTML, CSS e JS, sem framework)
scripts/smoke.sh teste de ponta a ponta das histórias do MVP
Agente de IA que faz até 3 perguntas e classifica o lead (RES01, bot com no máximo 3 perguntas), respostas prontas no WhatsApp (RNF01, templates de resposta), cobrança recorrente e nota fiscal pelo Asaas (RF04), e origem de LinkedIn, Facebook e Google.
docs/prototipo.html é o mesmo painel com dados de exemplo e a API simulada no navegador. Abra o arquivo direto no navegador para apresentar o fluxo, sem instalar nada. Nada é salvo.