// ═══════════════════════════════════════════════════════════════════════════ // PLAN QUIZ 8BAC — recomendador dinâmico de plano // Capa → Negócio → Orçamento → Necessidade → Resultado // ═══════════════════════════════════════════════════════════════════════════ const PLANS = { basico: { id: 'basico', nome: 'Básico', precoMensal: 397, tipo: 'recorrente', tagline: 'Tráfego rodando + Instagram organizado', features: [ ['Estruturar Instagram', true], ['Social Mídia Inteligente', '1 post / semana'], ['Site 100% trackeado', false], ['Gestão de Tráfego Completa', true], ['Reunião Mensal', 'Só relatório'], ], }, inter: { id: 'inter', nome: 'Intermediário', precoMensal: 697, tipo: 'recorrente', tagline: 'Mais conteúdo + tráfego escalando', features: [ ['Estruturar Instagram', true], ['Social Mídia Inteligente', '2 posts / semana'], ['Site 100% trackeado', false], ['Gestão de Tráfego Completa', true], ['Reunião Mensal', 'Só relatório'], ], }, completo: { id: 'completo', nome: 'Completo', precoMensal: 997, tipo: 'recorrente', tagline: 'Operação inteira: site, tráfego, conteúdo e call', features: [ ['Estruturar Instagram', true], ['Social Mídia Inteligente', '2 posts / semana'], ['Site 100% trackeado', true], ['Gestão de Tráfego Completa', true], ['Reunião Mensal', 'Call de alinhamento'], ], }, avulso_ig: { id: 'avulso_ig', nome: 'Estruturar Instagram', precoMensal: 297, tipo: 'avulso', tagline: 'Pagamento único · entra na comunidade pra rodar tráfego sozinho', features: [ ['Estruturação completa do perfil', true], ['BIO + Destaques com SEO', true], ['Acesso à comunidade', true], ['Pagamento único', true], ], }, avulso_site: { id: 'avulso_site', nome: 'Site 100% Trackeado', precoMensal: 447, tipo: 'avulso', tagline: 'Pagamento único · site que faz ponte pro WhatsApp', features: [ ['Site direto pra conversão', true], ['Rastreamento via API (Meta + Google)', true], ['Banco de dados vivo', true], ['Pagamento único', true], ], }, }; const RECORRENTES = ['basico', 'inter', 'completo']; function recommendPlan(orcamento, precisa) { if (precisa === 'instagram') return 'avulso_ig'; if (precisa === 'site') return 'avulso_site'; if (precisa === 'trafego') return 'basico'; // completo / nao_sei → baseado no orçamento total if (orcamento >= 2500) return 'completo'; if (orcamento >= 1800) return 'inter'; if (orcamento >= 565) return 'basico'; return 'avulso_ig'; } // Preço por periodicidade (tudo à vista) function precoPeriodo(precoMensal, periodo) { if (periodo === 'semestral') { const total = Math.round(precoMensal * 6 * 0.85); return { total, equiv: total / 6, sufixo: 'à vista (6 meses · -15%)' }; } if (periodo === 'anual') { const total = precoMensal * 10; // 2 meses grátis return { total, equiv: total / 12, sufixo: 'à vista (12 meses · 2 grátis)' }; } return { total: precoMensal, equiv: precoMensal, sufixo: '/mês' }; } const BRL = n => 'R$ ' + Number(n).toLocaleString('pt-BR', { minimumFractionDigits: n % 1 ? 2 : 0, maximumFractionDigits: 2 }); const NEGOCIOS = [ { value: 'estetica', label: 'Estética e Beleza', icon: 'sparkles' }, { value: 'saude', label: 'Saúde e Bem-estar', icon: 'heart-pulse' }, { value: 'alimentacao', label: 'Alimentação e Delivery', icon: 'utensils' }, { value: 'educacao', label: 'Educação e Cursos', icon: 'graduation-cap' }, { value: 'info', label: 'Infoprodutos e Mentorias',icon: 'monitor-play' }, { value: 'ecommerce', label: 'E-commerce', icon: 'shopping-bag' }, { value: 'servicos', label: 'Serviços Profissionais', icon: 'briefcase' }, { value: 'imobiliario', label: 'Imobiliário', icon: 'home' }, { value: 'outros', label: 'Outros', icon: 'edit-3', custom: true }, ]; const NEGOCIO_LABEL = v => { if (!v) return ''; if (v.startsWith('outros:')) return 'Outros: ' + v.slice(7).trim(); const f = NEGOCIOS.find(n => n.value === v); return f ? f.label : v; }; const PRECISA = [ { value: 'tudo', label: 'Operação completa', sub: 'Instagram + tráfego + site, tudo conectado', icon: 'rocket' }, { value: 'trafego', label: 'Só gestão de tráfego', sub: 'Já tenho perfil, quero anúncio rodando', icon: 'bar-chart-3' }, { value: 'instagram', label: 'Só organizar Instagram',sub: 'Quero o perfil estruturado pra vender', icon: 'sparkles' }, { value: 'site', label: 'Só um site que converte',sub: 'Preciso de uma página que traga contato', icon: 'globe' }, ]; const PRECISA_LABEL = v => { const f = PRECISA.find(p => p.value === v); return f ? f.label : v; }; function PlanQuiz({ onCapture }) { const [step, setStep] = React.useState(0); // 0=capa,1=negocio,2=orcamento,3=precisa,4=resultado const [answers, setAnswers] = React.useState({ negocio: '', orcamento: 0, precisa: '' }); const [periodo, setPeriodo] = React.useState('mensal'); const [modalOpen, setModalOpen] = React.useState(false); // Dispara evento ao VER cada tela (não só ao responder) React.useEffect(() => { if (step === 0) { if (window.fireEvent) window.fireEvent('ViewContent', { content_name: 'Plan Quiz 8BAC', content_type: 'product' }); } else if (step === 1) fireCustom('Viu_Negocio'); else if (step === 2) fireCustom('Viu_Orcamento'); else if (step === 3) fireCustom('Viu_Precisa'); else if (step >= 4) fireCustom('Viu_PlanoIdeal'); }, [step]); function start() { fireCustom('PlanQuizStart'); setStep(1); } function pick(key, value, evt) { setAnswers(a => ({ ...a, [key]: value })); fireCustom(evt, { [key]: typeof value === 'string' ? value : String(value) }); setTimeout(() => setStep(s => s + 1), 380); } const recomendado = step >= 4 ? recommendPlan(answers.orcamento, answers.precisa) : null; function buildWhatsAppMessage(form) { const plan = PLANS[recomendado]; const p = precoPeriodo(plan.precoMensal, plan.tipo === 'avulso' ? 'mensal' : periodo); return [ 'Olá! Fiz o quiz de planos no site da 8BAC 👋', '', `Sou o(a) *${form.nome.trim()} ${form.sobrenome.trim()}*`, `📧 ${form.email.trim()}`, `🎂 ${form.nascimento}`, '', '*Minhas respostas:*', `✓ Negócio: ${NEGOCIO_LABEL(answers.negocio)}`, `✓ Orçamento marketing/mês: ${BRL(answers.orcamento)}`, `✓ Preciso de: ${PRECISA_LABEL(answers.precisa)}`, '', `*Plano recomendado: ${plan.nome}*`, plan.tipo === 'avulso' ? `💰 ${BRL(plan.precoMensal)} (pagamento único)` : `💰 ${BRL(p.total)} ${p.sufixo}${periodo !== 'mensal' ? ` · equiv. ${BRL(p.equiv)}/mês` : ''}`, '', 'Quero fechar esse plano / tirar dúvidas.' ].join('\n'); } return (
Responde 3 perguntas rápidas que eu te mostro exatamente o plano certo pro momento da sua empresa — sem achismo, com base no que você pode investir.
{motivo}
| {RECORRENTES.map(id => ( |
{PLANS[id].nome} {BRL(PLANS[id].precoMensal)}/mês |
))}
|---|---|
| {nome} | {RECORRENTES.map(id => { const v = PLANS[id].features[r][1]; return ({v === true ? '✓' : v === false ? '—' : v} | ); })}