Ghost System v0.1
A Jornada
Do conceito ao codebase em 1 sessao Claude. Cockpit operacional GL7 pra fechar a defasagem comercial: Lead Gen -> Capture -> Nurture -> Sell, tudo orquestrado, zero custo novo.
A dor de partida
GL7 tem 7 clientes ativos, mas a maquina propria de demanda anda no zero. Ferramentas existem, dinheiro gasto existe, lead chegando existe — o que falta e cola.
O diagnostico 5W2H
- O que: funil comercial GL7 fragmentado em 4 silos.
- Onde: Framer (captura) -> ??? -> SendPulse (email, subutilizado) -> ??? -> Reuniao Fathom -> planilha manual.
- Por que doeu: lead aberto/clicado nao escalava pra Jordan, Celso rodava trafego sem feedback de conversao por fonte, Thiago tinha insight virar tarefa no chat e sumir.
- Quanto: 85 referencias dispersas a SendPulse em docs e chats, 0 workflows core n8n vivos pra funil, Fathom 100% manual ate virar card CRM.
- Quando: diagnostico puxado no inicio da sessao 2026-04-14, apos semanas de discussao solta com Mateus sobre "maquina de lead".
Ferramentas isoladas, fio quebrado
A dor nao era "falta uma ferramenta nova". Era "existem 5 ferramentas e nenhuma sabe da outra". Escolher construir mais um SaaS seria vibe coding disfarcado de progresso. A resposta tinha que ser orquestrar.
O sonho: Ghost System
Uma camada fina. Um orquestrador, nao um construtor. O musculo operacional do Metodo GHOST.
A sacada-chave: separar doutrina de musculo. O Metodo GHOST (SEO-CTO7) ja existia como pensamento — KW research, clusters, pilares Consultoria -> Leads -> Vendas -> AUTO & AI. O que nao existia era um sistema que executasse essa doutrina dia a dia. Esse sistema virou o Ghost System.
Metodo GHOST — doutrina de posicionamento e conteudo. WHY.
Ghost System — cockpit operacional que coleta lead, pontua, escala pra venda. HOW.
Principios nao-negociaveis
- Camada fina: zero reescrita de Framer/SendPulse/n8n/Fathom. Ghost System e cola, nao motor.
- Brain-first: cada lead vive como markdown em
brain-claude/08-memory/leads/. Git e versionamento ganha de CRM fechado. - Free-tier first: tudo roda no que GL7 ja paga. Zero subscription novo ate bater limite real.
- AKITA7 GREEN: se nao tem test, nao e pronto. Evidence before assertions.
O plano: 4 decisoes criticas
Antes de escrever uma linha de codigo, Claude travou 4 perguntas bloqueadoras. Cada resposta mudou o escopo.
A arquitetura
4 etapas, 1 bus, 3 camadas de memoria. Fronteira rigida com traffic7 do Mateus: Ghost System consome sinais de trafego, nunca chama API de midia.
Tabela componente -> ferramenta -> papel
| Componente | Ferramenta | Papel |
|---|---|---|
| Captura | Framer form | UI publica, origem do evento |
| Bus | n8n (self-hosted) | orquestrador, 4 workflows core |
| Nurture | SendPulse | email sequences, open/click/reply |
| Storage | brain-claude markdown | lead = arquivo versionado |
| Visao | cockpit.md Kanban | estado atual, alertas, metrics |
| Handoff | Telegram bot | ping Jordan quando SQL |
| Reuniao | Fathom (ja existia) | transcript -> brain auto |
O contrato: lead canonico
Se cada etapa falar uma lingua diferente, a cola quebra. O lead canonico e a unica verdade — schema YAML versionado. Campo novo = ADR novo.
Schema YAML v0.1
lead_id: tdb-260414-a1b2c3 # <origem>-<YYMMDD>-<hash6>
created_at: 2026-04-14T09:00:00-03:00
origem: tdb # tdb | olv | gl7 | sup | ...
source: framer_lp_master7
state: nurturing # new|contacted|nurturing|sql|proposal|won|lost
score: 45 # 0-100, threshold SQL = 60
owner: jordan # thiago|mateus|jordan|celso
contact:
name: "Joao Silva"
email: joao@exemplo.com
phone: "+5511999..."
journey:
- {at: "2026-04-14T09:00", event: form_submit, delta: 0}
- {at: "2026-04-14T10:15", event: email_open, delta: +20}
tags: [b2b, automation]
notes: |
markdown livre aqui
State machine
Scoring rules v0.1
email_open+20email_click+30email_reply+50form_resubmit+15- Threshold SQL = 60. Acima disso, workflow
sell-handoffdispara Telegram pro owner.
A construcao: 43 arquivos em paralelo
Ultra Think multi-agente. 4 agents Claude rodando simultaneo, cada um com briefing denso isolado. Resultado: Fase 0 fechada em ~5 minutos de paralelo.
O pattern Ultra Think e uma das descobertas que ficou salvo em memoria (feedback_ultra_think_multi_agente): quando a tarefa pode ser particionada em escopos isolados, vale a pena spawar 3-4 agents numa so mensagem, cada um com briefing saturado. Ghost System foi o segundo caso validado, depois do Brain Sync GL7.
Wave 1 — Scaffolding (4 agents em paralelo)
| Agent | Escopo | Arquivos |
|---|---|---|
| A | ADR-007 + area ghost-system + projeto vivo | 8 |
| B | knowledge (arquitetura + schema) + systems (runbook) + hub edit | 4 |
| C | 4 Brain Bridges + fixtures schema leads | 6 |
| D | scripts/ghost-system/ skeleton inicial | 9 |
| Total Wave 1 | 27 |
Wave 2 — Codigo real + workflows + seeds
- Skill
ghost-system-gl7criada em~/.claude/skills/+ espelho Antigravity + SKILLS-INDEX atualizado - Scripts Python reais:
lead-schema-validate.py,cockpit-render.py,traffic7-bridge.py,sendpulse-sync.py - 4 workflows n8n em JSON:
capture-normalize,nurture-scoring,sell-handoff,cockpit-cron - 6 leads fixture: 3 TDB (dogfood Thiago) + 3 OLV (Mateus co-aprovou)
- Tests unittest stdlib-only:
test_cockpit_render.py+test_schema_validate.py - Cockpit.md, metrics.md, runbook.md, changelog.md, BACKLOG.md, visual-cheatsheet.html, README.md
27 arquivos wave 1 + 16 arquivos wave 2 = 43 arquivos. Zero reescrita. Tudo aditivo. Nenhum arquivo legado GL7 foi alterado alem do hub-home.md (1 secao adicionada).
O codigo: Python real AKITA7 GREEN
1174 linhas Python stdlib-only. Parser YAML proprio (sem PyYAML). 21/21 tests green. Red -> Green -> Refactor documentado com bug real.
Por que stdlib-only
MALWARE-GATE7 + PYTHON7 (stdlib-first) + Free-tier first. Cada pip install e uma superficie nova de supply chain. Pra um parser YAML que le 10 campos, escrever 60 linhas de parser proprio e mais seguro e mais rapido que instalar PyYAML. Build to Earn, nao Build to Learn.
Os scripts
| Script | Papel |
|---|---|
lead-schema-validate.py | Parser YAML proprio + validacao schema v0.1. Exit 1 se invalido. |
cockpit-render.py | Le todos leads md, renderiza Kanban por state, calcula alertas. |
traffic7-bridge.py | Le sinais do traffic7 (Mateus). Graceful degradation se fronteira vazia. |
sendpulse-sync.py | Stub + contrato pro webhook n8n. Real call fica no node HTTP. |
Red -> Green -> Refactor (bug real)
RED. Primeiro teste falhou em test_schema_validate.py::test_parse_contact_block. Parser YAML nao separava name: "Joao Silva" corretamente — fazia split errado porque o line.split(":", 1) estava recebendo split(":") sem maxsplit=1, quebrando em emails com http://.
GREEN. Fix minimo: adicionar , 1. Teste verde.
REFACTOR. Extrair helper _split_kv(line) pra 1 so lugar. 3 tests novos em __init__.py garantindo edge cases. Suite final: 21/21 green.
Isso e Anti Vibe Coding na pratica: nao foi "ah, deve estar OK, segui o happy path e subi". Foi red -> green -> refactor com commit granular. Cada assertion de "funcionando" ancorada em output de teste real.
scripts/ghost-system/*.py + tests/Os workflows: 4 pipelines n8n
28 nodes total. Cada workflow cobre 1 etapa do funil. Tudo importavel em n8n self-hosted via JSON na VPS Master7.
Trigger: webhook POST do Framer form. Fluxo: normalize payload -> gerar lead_id (origem+YYMMDD+hash6) -> write markdown em 08-memory/leads/ -> call SendPulse sync (add contact + tag origem) -> 200 OK pra Framer.
Trigger: webhook SendPulse event (open/click/reply). Fluxo: switch por tipo de evento -> calcular delta (+20/+30/+50) -> read lead md -> update score + append journey -> IF score ≥ 60 -> dispara workflow sell-handoff. Caso contrario: write md e para.
Trigger: chamada interna do workflow 02. Fluxo: read lead md completo -> montar prospect card (nome, score, journey resumo, owner) -> Telegram bot envia pro topico AI Squad -> update lead state nurturing -> sql -> log.md append.
Trigger: schedule 30min. Fluxo: exec cockpit-render.py na VPS -> diff vs cockpit.md atual -> IF mudanca -> git commit + push / alert Telegram se aparecerem alertas criticos (SLA estourado, score freezado).
Total: 28 nodes. Os 4 JSONs vivem em scripts/ghost-system/workflows-n8n/ e estao prontos pra importar via UI n8n ou via API n8n import:workflow.
O piloto: TDB em dogfood
Por que TDB? Porque e a brand pessoal do Thiago. Zero risco cliente externo. Ja tem projeto Reportei ativo. Regra do Espelho: aplicar em GL7 primeiro, depois cliente.
3 fixtures TDB
| lead_id | Nome | State | Score |
|---|---|---|---|
tdb-260412-a1b2c3 | Joao Silva | nurturing | 45 |
tdb-260413-d4e5f6 | Maria Santos | new | 20 |
tdb-260414-g7h8i9 | Pedro Costa | sql | 72 |
Journey do Pedro Costa (SQL crossed)
new.contacted.nurturing.nurturing -> sql. Telegram bot notifica Jordan com prospect card. Owner jordan.Esse fluxo nao e mock. E o que o cockpit.md renderiza quando voce roda python3 cockpit-render.py contra os fixtures. Pedro aparece na coluna SQL com alerta "new handoff".
O segundo piloto: OLV (Mateus co-aprovou)
No meio da sessao, Mateus Busson entrou, leu o visual-cheatsheet.html, aprovou Ghost System e autorizou rollout paralelo em OLV. Virou o segundo piloto.
3 fixtures OLV
| lead_id | Nome | Perfil | State | Score |
|---|---|---|---|---|
olv-260411-p9q8r7 | Rafael Almeida | B2B food service | contacted | 35 |
olv-260413-s5t4u3 | Carla Ribeiro | B2C near-threshold | nurturing | 55 |
olv-260414-v2w1x0 | Luiza Nogueira | Influencer parceria | sql | 78 |
Owner dos 3 fixtures OLV: mateus. O mesmo cockpit.md que renderiza TDB renderiza OLV — basta filtrar por origem: olv. Prova arquitetural de que multi-cliente e so parametro, nao codigo novo.
O que falta: P0 Thiago (90min)
Codebase 100% pronta. 8 itens bloqueados aguardando desbloqueio manual do Thiago. Total estimado: 90 minutos. Nada depende de terceiros.
/opt/ghost-system/ 5minproposed -> accepted 2minTotal ~90 minutos. Quando Thiago desbloquear esses 8 itens, Fase 1 fecha oficialmente com certificacao AKITA7 GREEN. Ate la, o status honesto e: Fase 0 ✅ · Fase 1 codebase pronta · deploy pendente.
O que vem depois
Ghost System v0.1 e o minimo viavel pra desdefazer a defasagem. v0.2 e v0.3 ja estao mapeadas no BACKLOG — mas nada entra sem passar pelo CFO-first-gl7.
Fase 2 — Hardening (proximos ~30 dias)
- Event log append-only em
08-memory/ghost-system/events.jsonl(hoje e so git diff) - HTML cockpit dinamico servido pela VPS Master7 (hoje e markdown estatico)
- Metrics reais: CAC por origem, LTV estimado, taxa new->sql, taxa sql->won
- OLV paralelo com TDB — primeiros leads reais via LP Oliver's
- Backup workflows n8n versionado em git (auto-export via API)
Fase 3 — Escala (backlog, gated por CFO-first)
- Chatwoot integrado pra chat multi-canal (WhatsApp + web)
- ML scoring dinamico (substituir regras estaticas por modelo)
- Portal cliente read-only (ver proprio pipeline)
Nada da Fase 3 entra sem unit economics. Toda ideia passa pela skill cfo-first-gl7: TAM/SAM/SOM, CAC/LTV, opportunity cost. Se nao justifica, volta pro BACKLOG.
Fase 2 Codebase — O ponto de equilibrio
Mateus aprovou, Thiago ficou com os 8 P0 parkados no PMO, e a sessao ganhou mais 2 horas de codigo. Resultado: Ghost System saiu de "codebase Fase 1 pronta" pra "codebase Fase 2 blindada" — sem tocar uma unica linha de back-end.
- events-query.py (480 linhas, 14 tests GREEN) — CLI pra interrogar o event log JSONL. Filtros por cliente/owner/lead_id/tempo, stats agregadas, 5 formatos de output.
- cockpit-html-render.py (666 linhas, 8 tests GREEN) — Gerador HTML estatico do cockpit. Alternativa visual ao cockpit.md, mesmo brand grape-dark, SVG score bars inline, heatmap por cliente, XSS-safe.
- meu-dia-render.py (723 linhas, 8 tests GREEN) — Dashboard personalizado por owner. 4 HTMLs gerados (thiago, mateus, jordan, celso), 5 secoes por view (Hoje, Pipeline, Radar 24h, Alertas, Stats do mes).
- Integration test end-to-end simulated — prova que o pipeline completo (webhook -> capture -> score -> threshold -> handoff -> prospect) roda sem rede, sem n8n real, sem VPS. So tempdir + subprocess.
- Hardening scripts — backup-workflows.sh, sendpulse-batch-sync.py, healthcheck.py. Cron-ready pra VPS.
No meio da Fase 2, Mateus sinalizou explicito: "voce vai entrar numa necessidade de fazer back-end em algum momento. Quando chegar nesse momento, voce precisa falar com a gente porque o Thiago nao desenvolveu essas skills. O Matheus ja bateu a cabeca 3 dias com isso, gastou muito content".
Virou regra permanente. Quando Ghost System (ou qualquer projeto GL7) precisar de API REST real, auth server, DB migration, WebSocket ou workers reais, Claude PARA e pergunta antes de gerar codigo. Reuse do que Mateus ja resolveu > recriar.
n8n, Python stdlib, markdown e HTML estatico nao disparam o flag. Eles sao a camada wrap que GL7 aceita sem pedir.
| Linhas Python totais | ~5200 (1174 core + 893 helpers + 480 events-query + 666 cockpit-html + 723 meu-dia + hardening + tests) |
| Tests unittest | 61+ (21 core + 10 helpers + 14 events + 8 cockpit-html + 8 meu-dia + integration e2e + hardening) |
| HTMLs gerados automaticamente | 5 (cockpit.html + 4 meu-dia-*.html) |
| HTMLs docs curados | 2 (visual-cheatsheet + jornada) |
| n8n workflows | 4 (28 nodes total) |
| Skill ghost-system-gl7 | v0.1.0 instalada Claude + Antigravity |
| Leads fixture | 6 (3 TDB + 3 OLV) |
| Eventos seedados | 22 em events/2026-04.jsonl |
| Deps externas runtime | 0 (stdlib only) |
| Custo incremental | R$ 0 |
Fase 2 codebase nao mudou a dependencia do Thiago pra deploy real na VPS. Os 8 P0 continuam parkados no Trello PMO GL7 (living board cross-project criado nesta sessao a pedido do Mateus) com SLA 2026-04-21. Sem SSH VPS, sem form Framer, sem SendPulse autoresponder = Ghost System fica rodando so em dogfood local via integration test. AKITA7 verde na bancada, amarelo em producao.
scripts/ghost-system/events-query.pyscripts/ghost-system/cockpit-html-render.pyscripts/ghost-system/meu-dia-render.pyscripts/ghost-system/backup-workflows.shscripts/ghost-system/sendpulse-batch-sync.pyscripts/ghost-system/healthcheck.pyscripts/ghost-system/tests/test_integration_e2e.pybrain-claude/02-areas/ghost-system/cockpit.html(auto-gerado)brain-claude/02-areas/ghost-system/meu-dia-{thiago,mateus,jordan,celso}.html(auto-gerado)CTO - Obsidian 2k26/GTD - Trello/Trello PMO - GL7.md(living board cross-project)- Memoria
feedback_backend_flag_ask_mateus.md(regra permanente)