Registro rápido do dia
Funil de prospecção
Follow-ups
próximos contatosFila do dia
ligar agoraRascunho
| Empresa | Decisor | Canal | Status | Estágio | Pesquisa | Valor | Follow |
|---|
Como usar este painel
Três telas, um ritmo. O painel foi desenhado em volta do seu método de prospecção, não o contrário.
- Hoje é o cockpit do telefone. Antes de discar, sua meta diária está no topo:
100 ligações → 50 conexões → 20 decisores → 5 reuniões marcadas → 4 realizadas → 3 vendas. A cada atividade, clique no+do contador. O funil abaixo mostra suas taxas de conversão reais contra o método. - Pipeline é onde cada lead vive. Arraste o card entre as colunas conforme ele avança: Pesquisa, Prospecção, Decisor, Reunião marcada, Reunião realizada, Cliente. Use as setas do card se preferir não arrastar.
- Leads é a lista completa, com a ficha e o checklist de pesquisa individual (CNPJ, sócios, capital social e presença digital nos 5 pontos do método).
O checklist de pesquisa
Cada lead carrega 5 marcadores de presença digital: site, social media, anúncio Meta, anúncio Google e Google Meu Negócio. Eles aparecem como cinco quadradinhos na lista. Quanto menos verde, mais buraco digital, mais espaço para a Nettu's entrar.
Honestidade dos dados
Os contadores de atividade começam em zero, porque número de prospecção não se inventa. As metas (100 / 50 / 20 / 5 / 4 / 3) são as do método do Rugido.
Status do banco de dados
O painel está conectado ao Supabase. Todos os leads, atividades e metas são salvos e lidos do banco em tempo real.
Supabase · xwnkmzrycvcwwoqnzulbPasso 1 — Criar as tabelas (obrigatório)
Se o painel está dando erro ao carregar ou ao salvar, as tabelas ainda não existem. Acesse Supabase → SQL Editor → New query, cole o SQL abaixo e clique em Run.
-- ═══════════════════════════════════════════
-- NETTU'S · Criar tabelas
-- Execute no Supabase → SQL Editor → Run
-- ═══════════════════════════════════════════
-- 1. Leads
create table if not exists leads (
id uuid primary key default gen_random_uuid(),
criado_em timestamptz default now(),
empresa text not null,
decisor text,
cargo text,
canal text,
telefone text,
segmento text,
capital_social text,
estagio text default 'pesquisa',
valor_potencial numeric default 0,
proximo_follow date,
canal_follow text,
obs text,
tem_site boolean default false,
faz_social boolean default false,
anuncia_meta boolean default false,
anuncia_google boolean default false,
gmn_ok boolean default false
);
-- 2. Atividades diárias (uma linha por dia)
create table if not exists atividades (
data date primary key,
ligacoes int default 0,
conexoes int default 0,
decisores int default 0,
reunioes_marcadas int default 0,
reunioes_realizadas int default 0,
vendas int default 0
);
-- 3. Metas (linha única — id = 1)
create table if not exists metas (
id int primary key,
ligacoes int default 100,
conexoes int default 50,
decisores int default 20,
reunioes_marcadas int default 5,
reunioes_realizadas int default 4,
vendas int default 3
);
-- Inserir metas padrão (só executa se a linha não existir)
insert into metas (id, ligacoes, conexoes, decisores, reunioes_marcadas, reunioes_realizadas, vendas)
values (1, 100, 50, 20, 5, 4, 3)
on conflict (id) do nothing;
-- ═══════════════════════════════════════════
-- FASE 1.1 · Migração (rode se as tabelas já existem)
-- ═══════════════════════════════════════════
-- Status de tentativa nos leads
alter table leads add column if not exists status_tentativa text default 'A contatar';
-- Timeline de anotações
create table if not exists anotacoes (
id uuid primary key default gen_random_uuid(),
lead_id uuid references leads(id) on delete cascade,
tipo text default 'geral',
texto text not null,
criado_em timestamptz default now()
);
-- Canal WhatsApp nas atividades diárias
alter table atividades add column if not exists wpp_disparos int default 0;
alter table atividades add column if not exists wpp_enviados int default 0;
alter table atividades add column if not exists wpp_respostas int default 0;
alter table atividades add column if not exists wpp_decisores int default 0;
alter table atividades add column if not exists wpp_reunioes_marcadas int default 0;
alter table atividades add column if not exists wpp_reunioes_realizadas int default 0;
alter table atividades add column if not exists wpp_vendas int default 0;
-- Metas do canal WhatsApp
alter table metas add column if not exists wpp_disparos int default 200;
alter table metas add column if not exists wpp_enviados int default 150;
alter table metas add column if not exists wpp_respostas int default 50;
alter table metas add column if not exists wpp_decisores int default 20;
alter table metas add column if not exists wpp_reunioes_marcadas int default 5;
alter table metas add column if not exists wpp_reunioes_realizadas int default 4;
alter table metas add column if not exists wpp_vendas int default 3;
Passo 1b — Migração Módulo 3 · Pipeline ⚠ rode uma vez
Se você já tinha leads cadastrados com o pipeline antigo, este SQL converte as etapas antigas para as 8 novas e adiciona os campos de reunião, feedback e histórico.
-- ═══════════════════════════════════════════
-- MÓDULO 3 · Pipeline reformulado
-- Execute no Supabase → SQL Editor → Run
-- ═══════════════════════════════════════════
-- Converter estágios antigos para os novos
update leads set estagio = 'potencial' where estagio = 'pesquisa';
update leads set estagio = 'ligar' where estagio in ('prospeccao','decisor');
update leads set estagio = 'reuniao_agendada' where estagio = 'marcada';
update leads set estagio = 'reuniao_realizada' where estagio = 'realizada';
update leads set estagio = 'fechado' where estagio = 'cliente';
update leads set estagio = 'desqualificado' where estagio = 'perdido';
-- Novos campos no lead
alter table leads add column if not exists motivo_perda text;
alter table leads add column if not exists data_reuniao_marcada timestamptz;
alter table leads add column if not exists feedback_reuniao text;
alter table leads add column if not exists data_reuniao_realizada date;
alter table leads add column if not exists tipo_lead text default 'outbound';
-- Tabela de histórico de etapas
create table if not exists historico_lead (
id uuid primary key default gen_random_uuid(),
lead_id uuid references leads(id) on delete cascade,
estagio_anterior text,
estagio_novo text not null,
obs text,
criado_em timestamptz default now()
);
Passo 1c — Migração Módulo 4 · Ficha expandida ⚠ rode uma vez
Adiciona todos os campos novos da ficha do lead (tipo, closer, dados de reunião, faturamento, contrato etc.).
-- ═══════════════════════════════════════════
-- MÓDULO 4 · Ficha do lead expandida
-- Execute no Supabase → SQL Editor → Run
-- ═══════════════════════════════════════════
alter table leads add column if not exists closer text;
alter table leads add column if not exists faturamento_medio text;
alter table leads add column if not exists produtos_ofertados text;
alter table leads add column if not exists criterios_produto text;
alter table leads add column if not exists criterio_nao_cumpre text;
alter table leads add column if not exists capacidade_produtiva text;
alter table leads add column if not exists valor_contrato numeric;
alter table leads add column if not exists forma_pagamento text;
alter table leads add column if not exists data_aquisicao date;
-- (tipo_lead, data_reuniao_marcada, feedback_reuniao, data_reuniao_realizada
-- já foram adicionados no SQL do Módulo 3)
Passo 1d — Migração Módulo 6 · Listas de Prospecção ⚠ rode uma vez
Cria as tabelas listas e leads_lista para o sistema de importação de planilhas.
-- ═══════════════════════════════════════════
-- MÓDULO 6 · Sistema de Listas de Prospecção
-- Execute no Supabase → SQL Editor → Run
-- ═══════════════════════════════════════════
-- Tabela: listas de prospecção importadas
create table if not exists listas (
id uuid primary key default gen_random_uuid(),
nome text not null,
descricao text,
data_inicio date,
total_leads int default 0,
criado_em timestamptz default now()
);
-- Tabela: leads dentro de cada lista
create table if not exists leads_lista (
id uuid primary key default gen_random_uuid(),
lista_id uuid references listas(id) on delete cascade,
empresa text,
decisor text,
cargo text,
telefone text,
segmento text,
cidade text,
email text,
site text,
status text default 'pendente', -- pendente | importado | descartado
lead_id uuid references leads(id) on delete set null,
criado_em timestamptz default now()
);
-- Índices para performance
create index if not exists idx_leads_lista_lista_id on leads_lista(lista_id);
create index if not exists idx_leads_lista_status on leads_lista(status);
Passo 2 — Ativar RLS (login) — opcional por enquanto
Quando quiser trancar o painel com login por e-mail, rode o SQL abaixo no Supabase (SQL Editor) e depois ative a autenticação por Magic Link ou senha em Authentication → Providers.
-- Ativa proteção por linha (RLS)
alter table leads enable row level security;
alter table atividades enable row level security;
alter table metas enable row level security;
-- Permite acesso só para usuários autenticados
create policy "dono" on leads
for all using (auth.role() = 'authenticated');
create policy "dono" on atividades
for all using (auth.role() = 'authenticated');
create policy "dono" on metas
for all using (auth.role() = 'authenticated');
Sistema de design
Este painel segue o manual da marca à risca. A regra 60/30/10:
Tipografia: Fraunces nos títulos, Nunito no corpo, JetBrains Mono nos rótulos e números.